ArcGameEngine
AGE: Arc Game Engine is an open-source engine for building 2D & 3D real-time rendering and interactive contents, especially video games with C# scripting support.
Install / Use
/learn @GloriousPtr/ArcGameEngineREADME
Arc Game Engine

About
Arc Engine is an in-development game engine written in C++.
I develop it in my spare time as a personal project, so expect frequent periods of time with no activity in this repository.
Set up
- Clone Arc Game Engine using git. Make sure you do a
--recursiveclone!
git clone --recursive https://github.com/GloriousPtr/ArcGameEngine.git
- Arc Game Engine is built in a Windows environment, using Visual Studio 2022.
- Execute the script
scripts/Win-GenProjects.batto generate the solution and project files.
Current Features
Right now, Arc Game Engine is very bare-bones. Its most remarkable features are:
| Feature | Description | Status | | ------- | ----------- | ------ | | Scene system | Scene-based entity management. Scene serialization with YAML. | Done ✔️ | | ECS support | Entity Component System approach through entt. | Done ✔️ | | 2D Renderer | 2D batch renderer supporting OpenGL. | Done ✔️ | | 3D Renderer | Basic 3D renderer with lighting, IBL and PBR workflow supporting OpenGL. | Done ✔️ | | ImGui support | Basic game editor and in-game debug UI using dear imgui. | Done ✔️ | | Shadow Support | Soft and Hard shadow support in OpenGL 3D Renderer. | Done ✔️ | | 2D Physics | 2D Physics using Box2D with Rigidbody, Box and Circle Colliders and joints. | Done ✔️ | | 3D Physics | Basic 3D Physics using Jolt Physics with Rigidbody, Box and Sphere Colliders. | Done ✔️ | | Scripting | Basic scripting in C# using mono. | Done ✔️ | | Audio | Basic Sound API with spatialization through miniaudio. | Done ✔️ |
Planned Features
| Feature | Description | Status | | ------- | ----------- | ------ | | C# API | C# API for all the components. | WIP 💻 | | Extended 2D Physics| Extend 2D physics to support more collider types and API. | WIP 💻 | | Extended 3D Physics| Extend 3D physics to support more collider types and API. | WIP 💻 | | Font | Extend the Renderer capabilities so it can draw text. | WIP 💻 | | Advanced Audio | Advanced Sound API with effects. | TODO 📋 | | Asset manager | Basic asset handling API. | TODO 📋 | | Direct3D | Extend the Renderer to support D3D12. | TODO 📋 |
Feature Showcase
Dependencies
LOC: scc --include-ext=cpp,h,cs,hlsl,hlsli,glsl --count-as=hlsl:glsl,hlsli:glsl --exclude-dir=Arc/vendor
Arc Game Engine has the following dependencies:
- assimp for loading meshes.
- box2d for 2D physics.
- dear imgui for GUI rendering.
- EABase dependency for EASTL.
- EASTL replacement for stl.
- entt for ECS management.
- Glad for OpenGL rendering.
- GLFW for OpenGL, OpenGL ES, window creation and input handling. More info at its website.
- glm as math(s) library.
- ImGuizmo for in editor transformation gizmos.
- Jolt Physics for 3D physics.
- miniaudio for audio.
- mono for C# scripting.
- optick for profiling.
- spdlog for logging.
- stb_image.h for loading textures.
- yaml-cpp for scene serialization in YAML.
Projects are generated with Premake 5.
Special Mentions
Huge shout out to:
- Yan Chernikov's video series. Original code at TheCherno/Hazel.
- LearnOpenGL OpenGL tutorials.
- Jason Gregory's Game Engine Architecture book.
