Data Driven Game Engine

This is a Game Engine, I made for our course in FIEA, designed to parse a game world from an XML file. I used the Expat C library to parse XML files. The primary objectives of this project

  • To learn how game engines are structured.
  • To learn advanced concepts of C++.
  • To see how compiler structures are made.
  • To learn asynchronous programming.
  • To better understand how the STL library is designed.
  • To implement complete unit testing practices.
    Overview of the Design
  • I made custom container classes for Singly Linked List, Vector and Hashmap.
  • For the engine, I created the Datum structure along with the Scope, to handle data read from XML file.
  • These structures are then extended by the World, Sector, Entity, Action hierarchy to allow for definition of structures using the XML scripting system.
  • These game objects use the Factory pattern to allow to be named at runtime.
  • The Action class can be used to create actions that can either extend C++ functionality like a ‘while loop’ or ‘if condition’ or make something specific to the game, like move an entity.
  • An Asynchronous Event system was then made for the engine, that is also accessible by XML.

I have provided more information about the structure and the features of the project on github below.

Source Code