
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