FateEngine is the open-source engine core behind FateMMO. Contributions that improve the engine library, editor tooling, build system, and documentation are welcome.
The public repository contains the engine core (engine/), demo application (examples/), shaders (assets/shaders/), UI layouts (assets/ui/), and build infrastructure. Contributions should target these areas.
The proprietary game logic (game/), server (server/), tests (tests/), and art assets are not part of the open-source release.
Open an issue on GitHub with:
- A clear title describing the problem
- Steps to reproduce (build commands, platform, compiler version)
- Expected vs actual behavior
- Build log or error output if applicable
- Fork the repository and create a branch from
main - Make your changes in focused, reviewable commits
- Ensure the project builds cleanly on at least one CI target (Windows MSVC, Linux GCC 14, or Linux Clang 18)
- Open a pull request against
mainwith a short summary of what changed and why
- C++23, consistent with existing engine code
- No tabs -- 4-space indentation
camelCasefor functions and variables,PascalCasefor types,camelCase_trailing underscore for member variables- Keep headers self-contained (include what you use)
- Prefer
#pragma oncefor header guards
The open-source build compiles without the game/ directory. Any #include "game/..." added to engine files must be wrapped in preprocessor guards:
#ifdef FATE_HAS_GAME
#include "game/components/some_component.h"
#endif // FATE_HAS_GAMECode that uses types from those headers must also be inside #ifdef FATE_HAS_GAME blocks. The CI build will catch unguarded includes -- both Linux jobs build without game/ sources.
Before submitting, confirm your changes compile in the demo configuration (no game/ directory):
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build --target fate_engine
cmake --build build --target FateDemo- Bug fixes with clear reproduction steps
- Build system improvements (new platform support, dependency updates, CI enhancements)
- Editor UX improvements
- Performance optimizations with before/after measurements
- Fixes for any of the known issues listed in the README
By contributing, you agree that your contributions will be licensed under the Apache License 2.0, consistent with the project license.