Artificial Intelligence for Digital Games: LUDOTRIX
Proposed a new take on Ludo that mixes artificial intelligence with mechanics borrowed from two of the most popular game genres.
The home page keeps the case studies that matter most for analytics and product work. This page is the full shelf: custom game engines, simulation and AI tech demos, and the apps I shipped, going back to my masters at DigiPen. Every card opens its own page with the screenshots, videos, and code behind it.
← Back to the home pageTeam projects from my masters at DigiPen, all built on engines we wrote ourselves in C++ rather than on Unity or Unreal.
A single player action adventure game about driving through arenas full of destructible objects and enemies, built with a team on a component based 3D engine we wrote in C++, SDL, OpenGL, FMOD, and Lua.
Open the case study →
An arcade shooter built with a team on a component based 2D engine written in C++, SDL, DirectX, FMOD, and Lua.
Open the case study →
Implemented a behaviour tree and wired it into our custom 2D engine, then used it to build a boss fight where the enemy shoots, dodges, spawns zombies, and repositions itself based on the state of the fight.
Open the case study →
Instead of a separate action class, the planner compiles every smart object in the scene and reads preconditions and effects off the objects themselves. Agents query the planner with a current state and a goal state, get back an ordered list of objects to interact with, and step through it using an internal state machine so the behaviour reads as believable.
Open the case study →
The projects where the interesting part is the maths and the numerical method, not the game around it.
A cube made of 125 mass points, each carrying its own force, velocity, position, and mass, integrated with RK4 every frame. I built a spring data structure to connect points, drawn as yellow lines between the purple masses so you can watch the structure deform and settle.
Open the case study →
An application that generates Bezier curves from control points you place yourself, computing the same curve three different ways so you can compare them: De Casteljau nested linear interpolation, Bernstein polynomials, and midpoint subdivision.
Open the case study →
A demo that solves a joint chain back from a target position, so a limb reaches for a point in space and every joint above it settles into a pose that works.
Open the case study →
Where the move toward data and analytics started.
Shipped products with real users, real UI decisions, and a database behind them.
A travel site that gets you ready for a trip rather than just selling one: food to expect in a country, places worth visiting, transport, and hotels, browsable by continent then country. The feedback form writes to a database behind an Apache server so responses can be reviewed for what people actually want.
Open the case study →
A space shooter for phones where you scavenge and destroy, but scoring rewards picking targets carefully: green blocks add points, white blocks take them away, and the clock keeps running. I built the spawning system that randomises object type and position on a timer.
Open the case study →
The classic, rebuilt natively for modern phones. Touch navigation maps each direction to the snake's movement based on screen width and height, with the menu laid out in a constraints layout.
Open the case study →
Control a ball, stay on the platform, collect coins to reach the next level. The game manager runs on a four state machine covering playing, death, level complete, and game over.
Open the case study →
Two papers from my undergraduate years, both applied rather than theoretical.
Proposed a new take on Ludo that mixes artificial intelligence with mechanics borrowed from two of the most popular game genres.
Built software that converts typed text into handwriting that looks like it came off a page, with the method designed to scale rather than being tuned to one writer.
The case studies on the home page are the ones I would open first in an interview.
Back to featured projects