top of page

Custom Game Engine

Custom C++ game engine development focused on runtime systems architecture and data-driven object construction. Built core engine functionality to explore how gameplay systems, tooling, and data pipelines are structured and exposed in modern engines.
 

  • Data-driven runtime architecture for game object creation and management in C++

  • JSON-based deserialization system for dynamic object configuration

  • Lightweight object model and scripting interface inspired by actor-based engine patterns

  • Core engine systems development, including custom containers (hash map, vector, etc.)

  • Unit testing and debugging workflow built in Visual Studio to support iterative systems development

Below you will find examples of engine functionality that highlight the unique experience that this project has given me.

HashMap2.PNG

Custom Library Containers

Implemented my own Linked List, Vector, and Hashmap to gain a better understanding low level data structures

  • Gained a deep understanding of C++ Move/Copy Semantics

  • Practiced dynamic programming using C++Templates

  • Implemented custom Iterators to work with STL container interface

Hierarchical Scripting Language

Created a system that allows native C++ game data to be stored and exposed to the custom JSON language

  • Datum - structure that allows internal and external storage of data as primitives, user defined types, or Scopes

  • Scope - recursive relationship with Datum is used to form a hierarchical database

  • Attributed - binds data to the engine by mirroring native C++ classes as Datum/Scope objects that can be manipulated through JSON

Scope.PNG
Parse.PNG

JSON Parsing System

Wrote a system to deserialize data at runtime, allowing for JSON to act as the scripting language for the engine

  • Used the chain of responsibility pattern to allow an extendable coordinator/helper system

  • Custom JSON grammar used to structure game object hierarchy

  • Practice working with abstract base classes/inheritance

Game Object

Designed an entity system similar to modern game engines that defines a base structure for objects that will make up the game world

  • Signature system uses Datum/Scope/Attributed to express common attributes (Transform, Name, Parent/Child Structure)

  • Type Manager allows custom types with the extension of game objects through C++ Inheritance

  • Update loop implemented through the Scope hierarchy

  • Factory pattern used to allow construction of user defined types at runtime

GameObject.PNG
Event.PNG

Action & Event

Developed a system that allows game objects to exhibit behaviors through the encapsulation of functionality within the Scope hierarchy 

Action - extendable interface that allows user defined C++ logic to be nested within the GameObject hierarchy, adhering to the update loop based on adjustable conditions

Event - templated queue system that implements the observer pattern to allow GameObjects to subscribe and react to the behaviors of other GameObjects

Unit Testing Framework

Structured a project testing environment using Visual Studio's CPPUnitTestFramework

  • Maintained testing methods throughout project lifecycle, developing modules for each individual class

  • Wrote extensive unit tests to exhaust edge cases and discover bugs before continuing development

TEsting.PNG
BomberJpg.PNG

Super PoggerMan

At the end of the project, teams were formed to create a game using the engine. We created a final version based on the work we all had done, and made a Bomberman clone that combined our engines functionality along with SDLs rendering framework 

  • ​BomberMan gameplay emulated through a dynamic tile system

  • Use of custom engine functionality seamlessly combined with SDL framework

  • Fully customizable game maps through JSON

Custom Game Engine: Services

©2019 by Cody Oliver. Proudly created with Wix.com

bottom of page