Skip to content

Repository files navigation

Cross-Platform Game Engine written in C++ that supports OpenGL and WebGPU.

Features

  • 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

Getting Started

Prerequisites

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 --recursive flag:

git clone --recursive https://github.com/ThomasJowett/Cross-Platform-Game-Engine

If you've already cloned without --recursive, initialize the submodules afterwards with:

git submodule update --init --recursive

Building

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++ make

Then use CMake to generate Makefiles and build with make.

Running

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.

Example Projects

If you would like to check out some example projects they can be downloaded from here

Dependencies

  • 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

About

Cross-Platform Game Engine written in C++ that supports OpenGL.

Topics

Resources

Contributing

Stars

23 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages