Hi, I am Andrew L. Smith - Programmer

I'm a game engine and systems programmer working remotely out of St. Louis, MO. I'm skilled at taking difficult problems and breaking them down into digestible data-oriented systems, always favoring simplicity and predictibility. Professionally, I've worked on AAA video games, simulations, enterprise software, and more. I've also written my own game engines, compilers, and all sorts of other cool projects that you can check out on this site! Check out my GitHub and my Bitbucket!


Work Experience

More details can be found on my resume.


Etc...

Still reading? Well, here are some random things about me that may or may not be of interest:

Past Projects

A sample of projects that I've worked on over the years. Click a project to expand.


Professional Projects

Stormgate is PC real-time strategy game currently in development by Frost Giant Studios, using Unreal Engine 5. I am the subject matter expert for our lockstep netcode and deterministic simulation. I've also implemented back-end logic for the game lobby, loading screen, score screen, save games, replays, and progression system.

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).


Personal Projects

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.

Your browser does not support HTML5 videos.

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.

Your browser does not support HTML5 videos.

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!

Your browser does not support HTML5 videos.

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.

My Resume

Last updated April 2023

Send Me an Email

andrew _at_ alsmith _dot_ net