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.
- Clone Arc Game Engine using git. Make sure you do a
--recursive
clone!
git clone --recursive https://github.com/MohitSethi99/ArcGameEngine.git
- Arc Game Engine is built in a Windows environment, using Visual Studio 2022.
- Execute the script
scripts/Win-GenProjects.bat
to generate the solution and project files.
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 ✔️ |
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 📋 |
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.
Huge shout out to:
- Yan Chernikov's video series. Original code at TheCherno/Hazel.
- LearnOpenGL OpenGL tutorials.
- Jason Gregory's Game Engine Architecture book.