kovalgek / GameEngine

Game Engine in DirectX12

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Parelhoen is a guineafowl in Dutch. These birds are beautiful creatures that came from Africa. I knew a guineafowl that escaped from a farm and found a new home in a car parking. During the COVID pandemic, this bird always put a smile on my face. I named my game engine after it as a nod to its awesomeness. Long live Parelhoen, the brave little bird that brightened up my days!

About The Project

ParelhoenDemo.mp4

This project is a rendering engine that is written in C++ 11 and using DirectX 12 as low-level graphics API. Additionally, I employed the ImGui library to create a user interface for configuring various rendering features in real-time. Initially, I integrated the EnTT header-only library as an Entity-Component-System, but later decided to implement a simpler solution without it.

Installation

I used CMake as a building tool. To run the project, do these steps:

  1. Clone the repo
   git clone https://github.com/kovalgek/GameEngine.git
  1. Run these scripts in the root directory
  2. Open generated project file using Visual Studio 2019

Roadmap

  • 3d objects in custom format
  • Fog
  • Mirrors
  • Light
  • Shadow
  • Support .obj 3d file format
  • Network layer
  • Universal layer to support other rendering API like metal

Schemes

DataFlow

It is a simplified dataflow scheme that shows what data and events drive the rendering.

Resources Scheme

It is a detailed scheme showing how and at what stages data binds to the rendering pipeline.

Acknowledgments

I found Frank Luna's book Introduction to 3D Game Programming with DirectX 12 to be incredibly helpful in my development of this project. Instead of simply copying his examples, I aimed to create a game engine with a strong and well-designed architecture. Additionally, I found the experience of programming in C++ to be a refreshing change from my primary job, where I primarily work with Swift and Objective-C.

About

Game Engine in DirectX12


Languages

Language:C++ 91.9%Language:C 7.5%Language:CMake 0.3%Language:HLSL 0.3%