Below, you'll find a list of interesting projects I've worked on and contributed to.
First person shooter built on the Source Engine
I joined the Black Mesa team right as they acquired a license from Valve to go commercial.
I worked on numerous subsystems including graphics, artificial intelligence, and gameplay.
In addition, I was responsible for building out the release pipeline to get the game packaged
and uploaded to the Steam distribution platform. I also maintained version control systems and
liaised with VALVe to coordinate and integrate code updates provided to us.
Extensible function hijacking library written in C++
This was a fun little project I worked on because I wanted to be able to modify behavior in
a game called Counter-Strike: Source. The game was based on the Source Engine and was closed
source, which meant I had to reverse engineer the interfaces I wanted to modify. Traditionally,
function detouring requires the programmer to write c++ function prototypes for each target
function. This effectively forces the programmer into writing lots of boilerplate code and
constantly recompiling their application. I wanted to be able to do this from Python, without
writing a single line of target-specific C++. DynDetours uses strings to define the metadata
for the target function you want to detour. It will then automatically generate the correct
x86 assembler code required to call your callbacks in a language agnostic manner. I wrote Python
bindings for this library and used it in my Source.Python and Source.Python extensions projects.
A Win64 based injector for games based on the Unity Engine
This project was the result of another reverse engineering challenge I took on for fun. I was
heavily into a Unity game called Inside by Playdead Studios. In my drive to modify the behavior of
the game, I wrote this application. The Unity Injector allows you to target any Unity-based process
running on your system. It will inject a payload DLL which will wrap around the existing mono-based C#
interfaces that Unity uses internally. From there, it will open up a prompt window that you can issue
commands from. The tool allows you to dump the contents of any C# assembly loaded into the process.
In addition, the tool allows you to load in custom modules or overwrite existing ones.
A boost::python wrapper around the Source Engine API
I started this project back in 2013 when Counter-Strike: Source modding was in vogue. It aimed to
provide an extensive set of wrappers around the many public interfaces the Source Engine exposes.
It's cross-platform and works against most Source Engine based games in distribution today. The plugin
also integrates functionality from DynDetours and provides a very robust set of Python support libraries
that scripters can leverage to make their own custom game modes. I left the project late 2013 because
Black Mesa went commercial. It's currently in the hands of an extremely talented group of people known
as the Source Python Development Team!