Napkin Engine

Language: C++/Java/Obj-C
Year: 2013

Built from the ground up to be lightweight, fast and efficient on smartphones, the runtime framework tries to eliminate most of the overhead that other runtimes have. For example, Unity JIT compiles .NET dll's at runtime, which makes code execution much slower than 'native' C++. Napkin Engine tries to take away this overhead by providing a very thin and basic C++ shell on top of the native language (Java on Android and Objective-C on iOS).
In order to enable designers and artists to quickly develop and iterate on interfaces using texture data from spritesheets, I developed a cross-platform scene builder tool called Napkin Creator. This tool needed to support both Windows and Mac, because applications on iOS can't be deployed on Windows. In order to make this possible, I developed it using C++, with the Qt framework.


Language: C#/WPF
Year: 2013

This Halo 4 map reader was developed with the goal of reviving my knowledge of the Blam map file format. Soffish lets you open a Halo 4 map file (*.map). It then reads the file header and creates an offset list of all the objects in that map. It shows you some of the properties of the map, such as the map magic (used to calculate offsets in the map file) and the tag index offset. This information can then be used to, for example, study the tag structure. It was fully written in WPF, .NET and C#. The full source is available on my GitHub.


Language: Perl/AS3
Year: 2012

This was an experiment where I tried to ease the code porting process between ActionScript and Objective-C by automating the syntax conversion. The first version was built in AS3, where the code would try to parse .as files and convert this code to Objective-C syntax. This significantly helped decrease the time needed to port each file, as most of the processed files only required a few manual tweaks.
Later, as an experiment, I rebuilt the tool in Perl to see if I could improve on the AS3 version and added a few extra features.
Even though the experiment has been discontinued, but for anyone interested, the (completely unsupported) Perl code can be found on my GitHub.

Unity WiiMote Server

Language: C#/WinForms
Year: 2012

For one of my assignments at RMIT, I used the WiiMote as the main input device. The one that I bought from the local game store however, wasn't supported by the example server because it was a new model (the official WiimoteLib hasn't been updated since 2009).
So, I built my own server and modified the library source to support newer model identifiers as well. I handed out the updated library to the rest of the class so they could also use newer Wiimotes. The complete source for both the updated WiimoteLib and server is available on my GitHub.

Halo 2: Editor

Language: C++
Year: 2005

Halo 2: Editor was an experimental editor application for Xbox I programmed right after Halo 2 came out. At the time I was part of the "Fantastic Six", a group dedicated to reverse-engineering the Halo and Halo 2 map file format. This application would enable users to modify the Halo 2 map files right on their Xbox, without having to transfer the map file to their computer. The program taught me a lot about tool development, the map file format and its structure.
I later realised I wouldn't be able to deploy the project to anyone who didn't have a XDK, which resulted into the eventual abandonment of the project.