Portfolio

Little Learning Machines

A sandbox game shipped on Steam where players raise and train their own AI creatures using deep reinforcement learning — every “Bot” is a live neural network that learns from the environments, rewards, and demonstrations the player sets up. Developed at Transitional Forms. The project required turning research-grade RL into a robust gameplay feature: training has to converge under arbitrary, sometimes adversarial player setups, and inference has to stay smooth during play.

Developer

Simia - real-time story engine

A real-time generative story engine (previously known as RobotsMakeTV) developed at Transitional Forms, blending machine learning with interactive narrative to produce stories that respond and evolve as the audience engages with them. Developer

Dino - Agents that choose when to act

A research project tackling a fundamental inefficiency in real-time game AI: agents that are forced to make a decision on every single frame, regardless of whether anything meaningful has changed. I designed and built a custom delayed-action system that lets agents decide both what to do and when their next decision should happen — dramatically reducing inference calls and producing more deliberate, game-like behavior in continuous-time environments.

Dino

ML-Agents Training Infrastructure & PBT Tools

A training infrastructure layer for Unity ML-Agents built around Population Based Training — a technique used by DeepMind to evolve hyperparameters during training rather than fix them upfront. Beyond PBT, the tooling streamlines the day-to-day reality of training agents at scale: spawning parallel environments, switching the active camera between agents, controlling timescale, surfacing per-agent debug information, and pushing custom metrics to TensorBoard live during training.

Tool

Doodle Jump - Attention-based perception for RL agents

A Unity platformer built as a testbed for custom perception systems in reinforcement learning. The headline contribution: a sensor that parses surrounding game objects into a variable-length vector processed by an attention module — letting the agent reason about an arbitrary number of nearby entities, rather than being locked to a fixed-size observation space the way most ML-Agents setups are. The project also served as a benchmark to measure how different sensor and network configurations affect decision sampling speed in real-time gameplay.

Fealty To The King - Self-play RL opponent in a turn-based game

A turn-based board game with a chess-RPG hybrid ruleset, featuring an AI opponent trained from scratch using reinforcement learning and self-play — the same family of techniques behind AlphaZero, applied to a custom ruleset where no prior heuristics existed. I designed the agent’s observation and action spaces, set up the self-play training loop, and tuned the system until the trained agent was a credible opponent for human players.

Unity DOTS ML-Agents Prototype - Hundreds of agents on ECS

A multi-threaded multi-agent environment built on Unity’s Data-Oriented Technology Stack — using the experimental DOTS branch of ML-Agents to push per-agent AI to a scale that’s typically impractical in standard Unity. Hundreds of agents compete simultaneously in a battle-royale-style arena, with two adversarial networks trained against each other to see what emergent behaviors appear. Originally a research collaboration with Enhearten Media to evaluate whether per-agent learned AI could be feasible inside an RTS game.

Star Jump Commando - Shipped mobile game

A commercial endless runner shipped on Android and iOS in April 2022 — included here as evidence of shipping a polished, balanced game end-to-end alongside the more research-focused projects above.

Unity Developer / Programmer