- Vortex Game Engine is an in-development Game Engine, designed as a portfolio project to explore modern game Engine Development.You can clone the repository and experiment with making games using Vortex, but it is not yet at the level of a professional game engine.
This is the Video Showcase
The Engine is currently in it's initial days with some of the Basic Engine Features. I'll Keep on Updating the Table as I add new Features.
Feature | Description |
---|---|
2D Rendering Engine | 2D Renderer Supporting Sprite Based Rendering & Shader Support. |
2D Physics Engine | Basic 2D Physics Engine with Box2D in the Backend. |
Project Management System | Basic Project Management using YAML. |
Scene Management System | Scene Management support using YAML for smooth integration with ECS. |
Entity Component System (ECS) | ECS integration with entt as the Base. |
Asset Management System | Basic Asset Management system with Caching. |
GUI Editor | Game Engine Editor Layer which uses ImGui at backend for GUI. |
Event System | Event system API which works seamlessly with the Different Inputs in the Game Engine from the user Side too. |
Logger | Logging System Implemented using Spdlog |
These are the features planned by me as of yet. Would Keep on Adding more as the list starts getting Shorter.
Feature | Description |
---|---|
3D Rendering Engine | 3D Renderer to Supporting PBR, IBL, Shadows and other 3D Rendering Features |
3D Physics Engine | 3D Physics Support with Physics Materials integrated with Bolt. |
C# Scripting | C# Scripting Engine support for User Side. |
Audio Library | Audio Library with both 2D and 3D Audio Support. |
Profiler | currently the Engine have a very basic Profiler. Will Implement a GUI based profiler (Most Probably Tracy) |
Glyphs | Would Implement Font Rendering using Slug Library(Most Probably). |
Ensure you have the following installed on your system:
- A modern C++ compiler supporting C++17 (or higher).
- Premake (v5+ recommended)
- Git
- Clone the Repository: Make sure you do a recursive clone!
git clone --recursive https://github.com/dicieous/VortexGameEngine.git
- Navigate to the Project Directory:
cd VortexGameEngine
- Build the Project:
- If you're in Command Prompt and in the Root Directory of the Engine below command to run the batch file to run premake to build the Project.
Scripts/Win-GenProjects.bat
- You can just go in the Scripts folder and click on
Win-GenProjects.bat
to Build the Project.
- After a successful build, you can open the engine with the
VortexEngine.sln
and build the binaries in Debug or Release and Run the Project. - You'll be greeted with the Vortex Editor. There you can press Play button to see physics in play, Add and Delete Components and do other stuff.
- As the Engine is still in development you cannot make a game from the Editor yet. But if you want to Play with the Engine you can set the Sandbox Project as the StartUp Project and Try stuff there in
SandBox2D.cpp
or you can make your own layer and Add it in theSandbox Class
inSandBoxApp.cpp
.
class SandBox : public Vortex::Application
{
public:
SandBox(Vortex::ApplicationSpecifications& specfications)
:Vortex::Application(specfications)
{
//Push your Layer Here
PushLayer(new SandBox2D());
}
~SandBox()
{
}
};
Vortex::Application* Vortex::CreateApplication(ApplicationCommandLineArgs args)
{
ApplicationSpecifications specs;
specs.Name = "Vortex SandBox";
specs.WorkingDirectory = "../VortexEditor";
return new SandBox(specs);
}
Sandbox/
: Contains Sandbox to test Engine Features.
VortexEditor/
: Contains the Editor related Code and Editor Resources.
VortexEngine/
: Contains the Core Engine Source Code and it's Dependencies.
VortexEngine.sln
: Solution file for building the project.
.gitignore
: Specifies files and directories to be ignored by Git.
premake5.lua
: Contains the code for Building the Project.
LICENSE
: The project's license information.
README.md
: This readme file.
-
OpenGL: Verify that your system supports OpenGL and that the necessary drivers are installed.
-
GLAD: Used for loading OpenGL function pointers.
-
ImGui: Immediate Mode GUI library for debugging and UI development.
-
spdlog: Fast C++ logging library.
-
EnTT: Entity-component-system (ECS) library.
-
Box2D: Box2D is a 2D physics engine for games.
-
ImGuizmo: Gizmo manipulation for ImGui.
-
stb_image: Image loading library.
-
GLM: A math library for handling matrices and vectors in graphics programming.
-
premake5: Build system configuration.
-
Yaml-cpp: YAML parser and emitter for C++.
This project is licensed under the Apache-2.0 License. See the LICENSE
file for more details.
-
The Cherno: For Teaching me C++ and Game Engine Related Stuff.
-
LearnOpenGL: For Tutorials and Engaging Learning Experience.
-
Game Engine Architecture: A very good Resource for Game Engine Development.
-
GameMath: A real Good Maths book for Game Dev in General.