top of page

Personal Game Engine

Introduction:

This is a individual project assignment for the Game Engineering class. In this class, all engineers are required to build their own game engine with basic structures and add new features on the way.

 

Engine:

C++

 

Platform:

PC

 

Features:

  • Customed Memory Manager

  • Customed Collision Detection Logics

  • Customed Collision Response Logics

  • Octree

  • Multi-threading

  • Run-Time File Loading

  • Separated Collision, Rendering, Game World systems, etc.

  • 3rd person Camera control and collision

  • Networking

  • Audio

What did I do in this Project?

Almost everything from scrap. The only 3rd party I used is the rendering library provided by our professor.

 

We implemented our own memory manager in the 1st semester, instead of using built-in malloc/free, we malloc a huge block of memory on the initialization and allocate that memory block throughout the rest of the game.

Implementing our own memory block discriptor to keep track of the used and free memory blocks etc.

 

In 2nd semester, we started to divide our engine into different systems like collision, rendering, etc.

We implemented our own collision detection system using AABB and ABB, coded the physical collision response based on the conservation of momentum, etc.

 

We also modified our engine to support multi-threading and run-time file loading.

 

By the end of this semester, we are required to build a simple game with our game engines.

On the second semester of this engine, we put more focus on the graphic rendering side of the engine.

Throughout the semester, we are supposed to build a game engine that support Direct3D and OpenGL platform simultaneously.

We created our own version of human readable files like mesh files which consist of vertex data and index data (for debugging).

And then translating them into more efficient binary files for actual usage.

We also created our own shaders for both platforms in order to support them.

 

At the end of the semester, we made a game out of the engine we created in a short period of time in order to "show off" the features we implemented and the robustness of the engine.

 

For more details, please refer to the write-up I did for each assignment: http://blogs.eae.utah.edu/twu/category/eae6320/

 

On the last semester of the class, we moved on to a free domain. We implemented a bunch of general features of a game engine including debug menu, 3rd personal camera control, octree, networking, etc.

 

Other than networking and audio, most of the other features were built from scrap.

You can download the game and try it out here.

bottom of page