A 2D Game Engine built on SDL2. A Rewrite of an old project of mine.
This is a work-in-progress project, expect no support.
- Use Direct3D or Software mode only as OpenGL will crash the engine when loading textures.
- Using Metal is still untested.
- Behavior is sometimes inconsistent depending on what GPU is being used.
- Clone the project and initialize the submodules
git clone --recurse-submodules https://github.com/Xapier14/GEngine-R.git - Run the script
build.batto build the project. - Create a new .NET 5+ console project.
- Add the GEngine-R project to your solution file.
- Create a project reference with your game project to the GEngine-R project.
- Copy and paste the program boilerplate to your
program.cs.usingSystem;usingSystem.Threading;usingGEngine;usingGEngine.Engine;namespace<your_namespace>{publicclassProgram{privatestaticGameEngine_game;publicstaticvoidMain(string[]args){// create the engine_game=new();// change engine properties here_game.Properties.Title="GAME_TITLE";_game.Properties.EnableFramelimiter=true;_game.Properties.TargetFPS=60;_game.Properties.TargetTPS=128;_game.Properties.WindowResolution=new(800,600);_game.Properties.InternalResolution=new(800,600);_game.Properties.HideConsoleWindow=false;_game.Properties.EnableDebug=true;_game.Properties.RenderScaleQuality=RenderScaleQuality.Linear;_game.Properties.AllowResize=false;_game.Properties.AutoOffset=true;/* Handle Window Close * Set AllowClose to true to enable interaction with the close window button. * Set HandleClose to true to use the default behavior for the close button. * The default behavior will be to call GameEngine.ForceStop(). */_game.AllowClose=true;_game.HandleClose=true;/* Handle Window Resize * Setting this to true results in the internal resolution * being set to what the new window size is. * Recommended to be set to false if your game is using a fixed resolution (retro remakes). * * NOTE: * If you are using Gerui, set this to false; if not, ignore this. * Hook the GameEngine.OnResize event to WindowController.WindowResizeEventHook. * Gerui handles resize events differently for some components. */_game.HandleResize=false;// start game_game.Start();// load resources_game.ResourcesLoaded=true;// keep alivewhile(_game.Running)Thread.Sleep(500);}}}
- Create & set your configuration to either x86 or x64 and use the appropriate native libraries.
- Base Engine Loop
- Frame/Logic Timing
- Input Handler
- Object/Scene based rendering
- Object/Instances
- Audio Module
- Resources/Texture loading
- Resources/Audio loading
- Resource Manager
- GameObject Event System
- Scene Instancing
- Physics System (Incomplete)
- Animations
- Object Texture Offsets
- TCP Server/Client
- Dynamic FPS & TPS Offset adjustment
- CLI Dev Kit
- Visual Studio Item Templates (GameObject & Scene)
- Visual Studio Project Template
- OpenGL & Textures with transparency.
- Memory leak on Scene reinstancing.
- Missing checks on adding GameObjects to scenes.
- Initial RenderClearColor not being set on OpenGL backend.
- Only WAV files are supported for audio.
- Missing dependency check on launch
- SDL2
- SDL_Mixer
- SDL_Image
- SDL_TTF
- SDL2-CS.Core
- Genbox.VelcroPhysics
- .Net 5.0 (x86)