Sirocco (Catalan: Xaloc).
From arabic, shaluq 'wind from the sea' .
A Mediterranean wind that comes from the Sahara and can reach hurricane speeds in North Africa and Southern Europe, especially during the summer season.
Xaloc is an in-development 2D game engine written in C++, allowing an ECS approach and C# scripting.
I develop it in my spare time as a personal project, so expect frequent periods of time with no activity in this repository.
You can clone Xaloc using git. Make sure you do a --recursive
clone!
git clone --recursive https://github.com/pacojq/Xaloc
Xaloc Engine is built in a Windows environment, using Visual Studio 2019.
Execute the script scripts/Win-GenProjects.bat
to generate the solution and project files.
In order to build Xaloc, you will need to have the .NET Framework SDK installed. The engine's C# scripting module targets .NET Framework 4.7.2.
The default startup project is the Sandbox
App.
Remember to build the entire solution if you modify the C# files in SandboxCs
, since the .dll
file for the
scripting project is generated appart from the main Sandbox application.
Right now, Xaloc is very bare-bones. Its most remarkable features are:
Feature | Description | Status |
---|---|---|
Scene system | Scene-based entity management. Scene serialization with XML. | Done✔️ |
ECS support | Entity Component System approach through entt. Sort list of components, including TransformComponent , SpriteRenderer , TagComponent and BehaviourComponent . |
Done✔️ |
C# scripting | Basic scripting in C# using mono. | Done✔️ |
2D Renderer | 2D batch renderer supporting OpenGL. | Done✔️ |
ImGui support | Basic game editor and in-game debug UI using ImGui. | Done✔️ |
Asset manager | Basic asset handling API. | Done✔️ |
Feature | Description | Status |
---|---|---|
Better asset manager | Packaging assets, streaming, etc. | WIP 💻 |
Audio system | Sound API. | TODO 📋 |
Physics system | Own 2D physics API. | TODO 📋 |
Font support | Extend the Renderer capabilities so it can draw text. | TODO 📋 |
The game editor is in continuous development.
Xaloc has the following dependencies:
- ImGui and ImGuizmo for GUI rendering.
- ImPlot as plotting library for the profiler.
- mono for C# scripting.
- GLFW for OpenGL, OpenGL ES, window creation and input handling. More info at its website.
- Glad for OpenGL rendering.
- glm as math(s) library.
- entt for ECS management.
- spdlog for logging.
- stb_image.h for loading textures.
- pugixml for scene serialization in XML.
Projects are generated with Premake 5.
Huge shout out to:
- Yan Chernikov's video series. Original code at TheCherno/Hazel.
- Jason Gregory's Game Engine Architecture book.