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.