This is a WIP game engine that supports 3D rendering and has a beautiful editor. It's based on Entity Component approach and uses OpenGL to render graphics. Major Thanks to TheCherno because this game engine is a part of my learning, and is based on TheCherno's Hazel Game Engine Series.
- Audio System
- Physics 2D System
- Native Scripting
- Sprite Rendering with Subtextures
- 2D Batch Rendering
- Scene Loading/Resetting with Serialization
- Entity Component System
- Cross-platform API (Currently Supports OpenGL)
- Profiler
- Input System
- Event System
Prerequisites: git.
Clone the repo using the following command:
git clone --recursive https://github.com/oddStoneGames/Odd.git
cd Odd
- Windows
- Linux
- Hardware with support for OpenGL 4.6 Core
- C++ Compiler with C++ 17 Support
- CMake Version 3.25
-
Windows (MSVC):
Step 1.
Generate project files & open the project.cmake -S . -B ./build cd build Odd-Editor.sln
Step 2.
To Build & Run the project, you can click on Local Windows Debbuger.
For moving around the viewport:
- Rotate: Left Alt + Left Mouse Button
- Move: Left Alt + Middle Mouse Button
- Pan: Left Alt + Right Mouse Button
For Accessing gizmos on selected entity:
- Translate: W
- Rotate: E
- Scale: R
See LICENSE.
This project has some third-party dependencies, each of which may have independent licensing:
- Box2D: Box2D is a 2D physics engine for games
- EnTT: A fast and reliable entity component system (ECS).
- GLAD: Multi-Language GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.
- GLFW: A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
- GLM: OpenGL Mathematics
- Dear ImGui: Immediate Mode Graphical User Interface
- ImGuizmo: Immediate mode 3D gizmo for scene editing and other controls based on Dear ImGui.
- libsndfile: A C library for reading and writing sound files containing sampled audio data.
- OpenAL-Soft: OpenAL Soft is a software implementation of the OpenAL 3D audio API.
- spdlog: Fast C++ logging library.
- stb_image: Single-file public domain (or MIT licensed) libraries.
- yaml-cpp: A YAML parser and emitter in C++.