top of page

Engine

While going through SMU Guildhall, I spent a lot of time building a custom C++ Engine from scratch to use on various assignments. Its main purpose is to be used for educational purposes. It is the garden that I maintain and add to as I learn. These are a few systems that I would like to show.

UI System

Features

- Creation from code or XML is simple and intuitive, with reasonable default values

- All UIWidget subclasses automatically register themselves to the UISystem

- Four states: Highlight, Pressed, Default, and Disabled with the ability to different values for each state

- Anchoring UIWidgets to corners of parents and docking widgets to sides of the screen

- UIWidgets are search-able by name

Console System

Features

- Ability to run stand alone functions or member functions from command line

- Running commands take variable number of arguments

- Scrolling through past history up to 1024 lines

- Easily register new commands within the constructor of major Engine Systems or in game code for testing

Profiler System

Features

- Ability to add profile samples sections to engine code or game code

- Display a details about ach sample including time, frame percentage and new/delete counters

- Displays profile samples in a tree view for samples within samples

- Displays profile samples in a flat view sorted by frame time percentage

- Scoped samples that automatically add/remove themselves from the profiler when they go out of scope

Event System

Features

- Universal event system with string based keys which can be called anywhere from engine or game code

- Ability to register standalone C++ functions as well as member functions

- Ability to add a properties parameter that hold a flexible number of strongly typed variables

Memory Manager

Features

- Overrides 'new' and 'delete' to track allocations and their size in bytes

- Stores location of allocations to find where they occur in code in order of allocation size for easy debugging

- Different levels of analytic verbosity based on definitions located in a BuildConfig.hpp

- Alerts developer if there are any memory leaks upon closing application

bottom of page