Opinionated, cross-platform game engine library in C++23, built on SDL3, focusing on simplicity and performance.
Features/Roadmap
- Project Setup
- CMake, Clang, and Doxygen integration
- Linux, Windows, and Android support
- Standard Library Extensions
- Sequential/type ID generators
- Entity Component System
- Simple, consistent, and foolproof interface
- Deferred modifications during iterations
- Parent–child entity relationships
- World serialization/deserialization
- Linear Algebra Utilities
- Generic vector and matrix implementation
- Common shader intrinsics functions
- Common 2D/3D transformations
- Application Runtime
- Clock subsystem
- Input subsystem
Build Instructions
Prerequisites
x86_64-w64-mingw32
x86_64-linux-android
aarch64-linux-android
Development Tools
Testing Tools
Documentation Generator
Build & Run
The CMake configuration defines the following build targets:
- stellarlib (default target)
- examples (each .cpp file in the examples directory can be built as its own target (e.g., example.cpp → example))
- apks (when targeting Android, each example has an associated APK target (e.g., example → example_apk))
- tests (each .cpp file in the tests directory can be built as an individual target (e.g., example.cpp → example_test))
- docs (requires Doxygen)
cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja --toolchain cmake/x86_64-linux-gnu.cmake # Configure CMake
cmake --build build # Build stellarlib
cmake --install build # Install stellarlib
cmake --build build -t example # Build a target
build/example # Run the target
x86_64-w64-mingw32
cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja --toolchain cmake/x86_64-w64-mingw32.cmake # Configure CMake
cmake --build build # Build stellarlib
cmake --install build # Install stellarlib
cmake --build build -t example # Build a target
build/example.exe # Run the target
x86_64-linux-android
cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja --toolchain cmake/x86_64-linux-android.cmake # Configure CMake
cmake --build build # Build stellarlib
cmake --install build # Install stellarlib
env JAVA_HOME=/usr/lib/jvm/java-21-openjdk ANDROID_HOME=/opt/android-sdk cmake --build build -t example # Build a target
/opt/android-sdk/platform-tools/adb install -r build/example.apk # Install the target
aarch64-linux-android
cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja --toolchain cmake/aarch64-linux-android.cmake # Configure CMake
cmake --build build # Build stellarlib
cmake --install build # Install stellarlib
env JAVA_HOME=/usr/lib/jvm/java-21-openjdk ANDROID_HOME=/opt/android-sdk cmake --build build -t example # Build a target
/opt/android-sdk/platform-tools/adb install -r build/example.apk # Install the target
$BROWSER build/html/index.html # Browse local documentation (requires Doxygen)
Contributing
Contributions are welcome!
- Fork the repository
- Make your changes in accordance with the existing style
- Open a pull request targeting the develop branch
Enjoy!
Domán Zana