The Chronicle Editor was a solo project that I've worked on since September 2018. My goal was to make an UE4 Blueprint-style editor in C++ that was customized for a separate card game that I also made in Unreal. The editor lets users create and connect blocks as they choose and then uses that graph to generate C++ code that is used by the other game to run the logic of the cards. The editor allows the user to save and load progress mid-session or load data from the exported version. Checks are also put in place to ensure the user does not accidentally close out of the editor without saving.

Code Samples

This is what one of the nodes in the editor looks like. Other than telling the master node list what the inputs and outputs of the node are, this is all the code that is required to make a node. Having custom visual elements for the node (such as a dropdown menu) requires a separate function. The node looks at the appropriate inputs and outputs to generate a C++ string. It then concatenates it with the next string from the next node and eventually returns all the way back to the starting node with the finished string.


The GetInputNode/GetOutputNode functions are very flexible and handle if there is no connection or if the value comes from a default dropdown value versus a connection. This allows for a simple linear function (other than the assertation at the start which only prevents the function from generating invalid C++ code. The function would not crash if that was not there.)


Perdition is a single player, first-person shooter with visceral, fast-paced combat and environmental storytelling. A story of vengeance, vindication, and survival. A story of closure.


Perdition was developed by Team Contraband while we were at DigiPen Institute of Technology. I created several tools to support the designers and tech artists on the team, programmed Systems and AI elements, fixed bugs, helped meet certification requirements during crunch, and produced the team.

Code Samples

The largest tool that I made was a customized Excel parser with data caching. The other programmers were able to use simple functions to register objects via strings or UObject*. This would then go parse the excel file, extract the data, and cache it. This removed the requirement to go to disk every time an object, such as a bullet, was created and instead had a constant-time lookup.