Warning
A cross-platform C# game engine built on top of SDL3.
Night Engine aims to provide a "batteries-included," in-code editor experience for game development. It consists of two main parts:
NightFramework: A heavily Love2D-inspired API for C# developers, providing a foundational layer for low-level game development tasks. This is the current focus of development. It leverages SDL3 for cross-platform capabilities. I am aiming for Love2D API parity.Night.Engine(Future): An optional, opinionated game engine built on top of theNightframework. It will offer higher-level systems like Scene Management, ECS (Entity Component System), and more, allowing game designers to focus on building games.
This project also intends to be AI-friendly, with clear documentation and API design to assist non-programmer game designers.
- Window Management: Creating and managing the game window.
- Input Handling: Basic keyboard and mouse input.
- 2D Graphics Rendering: Loading and drawing sprites, clearing the screen, and presenting frames.
- Game Loop Structure: A managed game loop with
Load,Update,Draw, andKeyPressedcallbacks. - Sample Game: A basic platformer demonstrating framework features.
- Documentation: API documented.
The core of the project is the Night.dll library. This assembly contains:
- The
Nightnamespace: Provides the Love2D-inspiredNight.FrameworkAPI. - The
Night.Enginenamespace: Will house the future higher-level, more opinionated game engine components. Not yet implemented.
- Project Foundation & SDL3 Integration
- Window Management (
Night.Window) - Input Handling
- 2D Graphics Rendering (
Night.Graphics) - Game Loop Structure (
Night.Framework.Run) - Sample Game (
Night.SampleGame) demonstrates framework features. - Timer Module (
Night.Timer) - Basic delta time is implemented, further Love2D parity planned. - Filesystem Module (
Night.Filesystem) - Basic needs met by .NET System.IO, further Love2D parity planned. - Audio Module (
Night.Audio,Night.Sound) - Font Module (
Night.Font) - Joystick Module (
Night.Joystick) - Event Module (
Night.Event) - Beyond basic KeyPressed callback. - Touch Module (
Night.Touch) - Video Module (
Night.Video) - Data Module (
Night.Data) - Math Module (
Night.Math) - Beyond System.Math, for Love2D specific functions. - System Module (
Night.System) - Beyond basic OS info. - LLM friendly documentation
- More Game samples
- Manager system (Assets, Scenes, etc.)
- Entity Component System (ECS)
- Scene Management & Scene Graph
- Advanced Asset Management
- Dear ImGui Integration
- Quake-Style Debug Console
-
Ensure mise is installed.
-
Clone the repository:
git clone https://github.com/nightconcept/NightEngine.git cd NightEngine -
Install project-specific tools and dependencies:
mise install
-
Build the solution:
mise build
-
Run the sample game:
mise game
Contributions... eventually! When I feel like the code-base is in a good place, I will update contributions.
This project is licensed under the zlib License. See also NOTICE.md for details on third-party software.