Skip to content

Vortex is an Open-Source High Performance Game Engine for making real-time Interactive Games

License

Notifications You must be signed in to change notification settings

dicieous/VortexGameEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌀 Vortex Game Engine 🌀

Static Badge GitHub License GitHub repo size

"Yes, I know Unreal and Unity exist. No, I don’t want to talk about it." 🙂

Overview

  • 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.

Showcase

Engine

This is the Video Showcase


Features

Current Features

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

Future Features

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).

Getting Started

Prerequisites

Ensure you have the following installed on your system:

  • A modern C++ compiler supporting C++17 (or higher).
  • Premake (v5+ recommended)
  • Git

Building the Project

  1. Clone the Repository: Make sure you do a recursive clone!
  git clone --recursive https://github.com/dicieous/VortexGameEngine.git
  1. Navigate to the Project Directory:
  cd VortexGameEngine
  1. 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.

Running the Application

  • 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 the Sandbox Class in SandBoxApp.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);
}

Project Structure

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.


Dependencies

  • 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++.


License

This project is licensed under the Apache-2.0 License. See the LICENSE file for more details.


Acknowledgements