- Cross-platform rendering backend, supporting both OpenGL and WebGPU
- Entity-component system (ECS) based scene model, backed by Entt
- Editor with a content browser, scene viewport, and asset pipeline (textures, meshes, materials, tilesets, audio)
- 2D and 3D rendering, including sprites, text (MSDF font atlases), and static meshes
- Built-in 2D physics via LiquidFun/Box2D
- Lua scripting support
- Scene and asset serialization
Ensure you have these installed:
- A C++17 compiler (MSVC, Clang, or GCC)
- CMake 3.10 or newer
⚠️ Warning: This repository uses Git submodules. When cloning, make sure to use the--recursiveflag:git clone --recursive https://github.com/ThomasJowett/Cross-Platform-Game-EngineIf you've already cloned without
--recursive, initialize the submodules afterwards with:git submodule update --init --recursive
Windows: Use CMake to generate Visual Studio project files, then build the Editor or Runtime target.
Mac: Use CMake to generate Xcode project files or Makefiles.
Linux: First install dependencies:
sudo apt-get install -y libx11-dev libxrandr-dev libxi-dev libxinerama-dev libgl1-mesa-dev libxcursor-dev mesa-common-dev g++ makeThen use CMake to generate Makefiles and build with make.
Once built, run the Editor executable to open the editor.
Runtime doesn't open a project directly — it plays back an already-exported game (see
Exporting a game).
To try a project standalone,
export it first (File > Export Game in the Editor, or headlessly with
Editor <project>.proj --export-game <output-path>), then run the resulting executable/app
bundle.
If you would like to check out some example projects they can be downloaded from here
- imgui : Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies.
- Entt : Fast and reliable entity-component system (ECS)
- glfw : A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input.
- spdlog : Fast C++ logging library.
- stb : Single-file public domain (or MIT licensed) libraries for C/C++.
- simpleini : Simple initialization file parser and writer.
- glad : Meta loader for OpenGL API.
- OpenFBX : Lightweight FBX Importer.
- cereal : A C++11 library for serialization.
- tinyxml2 : A simple, small, efficient, C++ XML parser.
- LiquidFun : 2D Physics library and Extension of Box2D that provides particle and fluid dynamics.
- lua : A powerful, efficient, lightweight, embeddable scripting language.
- sol2 : A C++ single header library binding to Lua.
- msdf atlas : A utility for generating compact font atlases.
- miniaudio : Audio playback and capture library
