A simple customizable 2D Game Engine. Still WIP.
Pomegranate Engine is a 2D Game Engine written in C++ and SDL2. It is designed to be simple, easy to use, and highly customizable. It is currently in a very early stage of development and is not recommended for use in production.
While the engine is currently being developed on Windows. Although it should be possible to build and run on other platforms, because there are no windows-specific dependencies. (Although some stuff will have to be changed.)
Currently, it is being developed as a non-graphical, headless engine, in order to make sure that all features are working correctly, and are easy to use. A graphical editor will be created in the future.
The engine comes with a Lua Wrapper so that systems/components can be written in lua. This will be more important when the graphical editor is created.
-
Hybrid GameObject-ECS System
-
Lua scripting support
-
Physics Engine with Multithreading
-
Neat Debugging functions
-
Standard ECS library
- Transform
- Transform Links
- Sprite Renderer
- Frame Animation Sprite Renderer
- Collision (Circle Only WIP)
- Rigidbody
- Tilemap (No Collision)
- Debug Circles
- ImGui UI
- Graphical Editor
- Optimizations
- Scripting Languages Support (Teascript, CSharp)
- Shaders/Post Processing
- 2D Lighting
- ECS Standard Library Navigation
- Documentation
- Event System
- 2D Skeletal Animation
- 3D Rendering
- 3D Physics
- Networking
Figure it out. Good luck! š„°
I need help.
If you find any issues or bugs, please check to see if they were already reported in the issue tracker. If not, please open a new issue with a clear description, steps to reproduce, and any relevant information.
If you have ideas for new features or improvements, create a new issue and clearly describe the improvement or feature, and if possible, provide examples or use cases.
We welcome and appreciate contributions! If you plan to submit a pull request:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes, ensuring the code follows our coding standards.
- Write tests if applicable.
- Ensure the documentation is updated.
- Open a pull request, explaining the changes and providing context.
- Follow the established coding style and conventions.
- Write clear and concise code with meaningful variable and function names.
- Document your code appropriately to help others understand your contributions.