|
Engine²
Open-source game engine written in C++.
|
Engine² is an engine focused on 3D game development. The engine is free and remains free in multiple significations of it:
Engine² makes you able to understand it, use it, and contribute to it easily, for you, artists. Any kind of artist should be able to take the project in their hands and make stuff with it. If you are an engine programmer, game designer, sound designer, tool programmer, and so on, you will have the possibility to create and express yourself. And as I like to say: "For me, the quality of a game is reflected in the messages it conveys."
Engine² is not made to make realistic games nor little arcade ones. This project is made to help you create any kind of project. If you want to make something, you will be able to do it. Anything is possible.
Engine² will not force you to spend any money to use any kind of services it proposes. It’s 101% free to use.
Engine² lets every process, planification, and evolution be visible and understandable by the community. The point here is to know the priorities of the engine, its direction, and to let the community impact most of the engine.
Make sure the following tools are installed before proceeding:
| Tool | Minimum version | Install |
|---|---|---|
| xmake | v3.0.x | See xmake installation guide |
Build and run the basic_core_usage example to confirm everything works:
If the basic core usage run without errors, you're all set. ✅
Here is a graphical overview of the project:
Engine² is STRONGLY built around an ECS architectural design pattern. The engine core (src/engine/) provides all necessary stuff to agglomerate logic and data to create any kind project. The Core class is the entry point of the framework, it allows to manipulate entities and systems through schedulers. All features (graphics, physics, sound, etc.) are implemented as plugins that you register into the engine core.
Here is a list of available plugins:
| Plugin | Description |
|---|---|
| graphic | 3D rendering via WebGPU |
| physics | Rigid body physics via JoltPhysics |
| input | Keyboard/mouse input via GLFW |
| sound | Audio playback via miniaudio |
| window | Window management via GLFW |
| scene | Scene graph management |
| event | Publish/subscribe event system |
| relationship | Parent/child entity relationships |
| native-scripting | Attach C++ scripts to entities |
| rmlui | UI rendering via RmlUi |
| camera-movement | Built-in camera controller |
| rendering-pipeline | Rendering pipeline abstraction |
| default-pipeline | Pre-assembled default render pipeline |
Here is a very basic example that can be useful to understand the pattern before contributing:
You can start to discover the engine through contribute to it through looking at good first issues and checking how to contribute
For now there is no troubleshooting found. If you encounter a problem, please report it by opening a question issue 🙏 (before doing that, check the documentation about how to create an issue)