stellarlib 0.1.0
Loading...
Searching...
No Matches

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
    • Vector/arena allocators
    • Bitset utilities
    • Extended type properties
    • Sequential/type ID generators
    • Compile-time padding
    • File system utilities
  • 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
    • Scene management
    • Metadata subsystem
    • Clock subsystem
    • Input subsystem
    • Window subsystem
    • Universal renderer
    • Audio 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.cppexample))
  • apks (when targeting Android, each example has an associated APK target (e.g., exampleexample_apk))
  • tests (each .cpp file in the tests directory can be built as an individual target (e.g., example.cppexample_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

Documentation

$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