A simple and fast modern C++20 game engine for 2D and 3D game development.
It leverages powerful open-source libraries for graphics, audio, JSON, logging, UI, enums, and math.
Learn how to build this engine from scratch in my complete Udemy course.
Third-party libraries are managed via CMake’s FetchContent.
- C++20 compiler (MSVC, GCC or Clang)
- CMake 3.28+
- Git for cloning
ArcadeEngine/
├── Content/
├── Engine/
│ ├── Include/
│ └── Source/
├── Games/
│ ├── Include/
│ └── Source/
└── Vendor/
- Content: Textures, Sounds, Fonts, Shaders, Models, …
- Engine: Core, Graphics, Managers, Scene, Utils
- Games: Config, Types, Scenes
- Vendor: glad, tinyobjloader
git clone https://github.com/adelhales/ArcadeEngine.git
cd ArcadeEngine
cmake -B Build -D CMAKE_BUILD_TYPE=Debug
cmake --build Build --config Debug -jThe executable will be located in Build/Debug (or Build).
Strict compilation flags are enabled by default:
- MSVC:
/W4 /WX - GCC/Clang:
-Wall -Wextra -Werror
Make sure the Content folder is in the same folder from which you run the executable.
Keyboard/Mouse and PlayStation/Xbox gamepads are supported.
| Action | Input |
|---|---|
| Launch game (menu) | Mouse Left / Gamepad South |
| Show controls (menu) | Mouse Right / Gamepad West |
| Toggle pause overlay | Esc / Gamepad Start |
| Back to menu | Overlay: Menu / M / Gamepad Select |
| Restart current game | Overlay: Restart / R |
| Quit application | Overlay: Quit / Alt + F4 / ⌘ + Q |
| Screenshot window | Ctrl + Shift + S → Content/Screenshots/ |
Overview of the 18 Games built with the Engine
This project is licensed under the terms of the MIT License.
© 2025 Adel Hales