I'm a game engine and systems programmer working remotely out of Missouri. I've delivered games enjoyed by millions over nearly a decade.
More details can be found on my resume.
A sample of projects that I've worked on over the years. Click a project to expand.
Age of Empires II: Definitive Edition is one of the all-time greats in the RTS genre, and it's releasing new campaigns to this day! At CaptureAge, I've done gameplay programming and client work primarily on The Chronicles DLCs.
Age of Mythology: Retold is a remaster of the classic real-time strategy game. At CaptureAge, I work on LiveOps and post-launch content. This includes back-end work for Arena of the Gods, Daily Celestial Challenge, and Gauntlet game modes. I was the primary gameplay programmer for all of the new units and god-powers introduced with the Demeter DLC.
Stormgate is PC real-time strategy game developed by Frost Giant Studios, using Unreal Engine 5. I worked on the deterministic lockstep netcode and simulation, as well as back-end logic for the game lobby, loading screen, score screen, save games, replays, progression system, and more.
Zwift is an indoor cycling app that allows you to connect and virtually ride with other players around the world. I worked on a UI overhaul of the home screen and in-game settings screen.
Ghost of Tsushima is an action-adventure game released for PS4 and PS5 by Sucker Punch Productions. You play as a samurai, fighting off enemies who have invaded the island of Tsushima. I worked on the peer-to-peer gameplay networking that powered the multiplayer mode (Legends mode), as well as a whole host of other features. I also worked to achieve compliance with the Technical Requirements Checklist (TRC) for certification on Playstation. In addition to the base game, I worked on the Director's Cut upgrade which added additional content and a new online mode (Rivals mode).
A 3D RTS engine that I wrote during the COVID lockdown. It's written from scratch using C++ and OpenGL almost 0 dependencies. I have a YouTube playlist where I posted updates on the engine's development.
A basic 3D game engine that I wrote entirely from scratch with almost 0 dependencies. The goal was to write a general-purpose engine where I could experiment and implement whatever features interested me. The Cataclysm engine features an .obj and .mtl file loader, shadow mapping, normal mapping, collider generation using the QuickHull algorithm, collision detection using GJK and EPA algorithms, a basic editor + reflection system, and a 3D math library for vectors, matrices, quaternions, and more.
While implementing EPA, I created some visual tools in-engine to help me debug. When finished, I realized how invaluable the tools were and how much they helped me understand the ins and outs of the algorithm. I decided to make a youtube video explaining EPA using the visual tools. A few years later it has several thousand views and is one of the top results when you Google "Expanding Polytope Algorithm"... pretty sweet!
A bingo card generator for Outer Wilds, one of my favorite video games. It generates a 5x5 card of tasks for you to try to accomplish in a single run. The project consists of three parts. The first part is a master spreadsheet that defines all of the possible goals, and a bunch of metadata about them. The second part is a C++ program that parses the spreadsheet and performs a bunch of text substitutions and computations to create an easy-to-use goal manifest in JSON format. The third part is the web frontend that uses JavaScript to generate a random card using the manifest's goals and metadata to ensure that the card is not too easy or too hard. It is a lot of fun to play!
A raytracer implemented following Peter Shirley's well-known "Ray Tracing in One Weekend" tutorial. The final produced render is below.
An in-progress compiler for a programming language that I am designing as I go. It is nowhere near completion, but the source code for the compiler is public for anyone who wants to check it out.
A personal project that I wrote to run on a raspberry pi. This Python program fetches data about any MLB baseball game on any date, including live games. It also retrieves local weather data and division standings, and displays them to a connected screen.
Open / download the PDF → (best option on mobile, where inline PDFs may not display)