Hey there, I'm Spencer!

Game Developer

I build mobile games and the backend systems that keep them running. My game has been live on both app stores for years, and I still ship its releases, read its analytics and answer its email.

About

I have spent eleven years as a software engineer, mostly writing backend APIs and automation in Python, with a computer science degree behind that. Six years ago I started teaching myself GameMaker on nights and weekends, and that turned into a studio and a game people pay for.

The part I care about is the whole loop: designing a system, building it, shipping it to real devices, then reading what players did with it and changing it. Most of the work below exists because a live product asked a question that guessing could not answer.

Based in
Arkansas, USA
Day to day
Running Dad Made, the studio behind To The Trenches
Working in
GameMaker, Go, Python, Firebase, BigQuery
Open to
Partnership, publishing and porting conversations

Work

A trench battle in To The Trenches: pixel-art infantry advancing across cratered ground toward a defended trench line

Live

To The Trenches

A WW1 mobile RTS, live on iOS and Google Play

Soldiers, artillery and wind-affected shells fought across a trench line. I wrote the game and I operate it: store releases, analytics, live balance changes and the monetization model. It has been in players' hands and earning for years, which is a different discipline from shipping once.

5,800
daily players
1M
analytics events a day
689
objects in the project
  • GameMaker
  • GML
  • Firebase
  • BigQuery
  • GitHub Actions
  • Game Design

Selected engineering

Two client columns showing matching per-frame checksums

Verified over a live relay

Deterministic Lockstep Multiplayer

Two devices running the same battle, frame for frame

A standalone build of the battle simulation that plays 1v1 over a live relay by exchanging commands instead of state. That only works if both machines compute an identical result forever, so the whole simulation had to become deterministic: every random call rerouted through a seeded generator, then a checksum harness to prove the clients never drifted apart.

8,820
frames bit-identical on both clients
  • GML
  • Photon
  • Lockstep networking
  • Deterministic simulation

Read the case study

A dense field of unit markers with a frame time readout

Concluded

RTS Performance Rig

How many units can GameMaker actually run?

A rig built to settle a question the team kept guessing at. The engine was never the constraint: 500 soldiers hold 60fps comfortably and 1,000 still run. The real ceiling was the game's own per-unit overhead, roughly three times what the bare engine charged, which turned a benchmark into two shippable fixes.

1,000
units still running
60fps
held at 500 units
  • GameMaker
  • GML
  • Profiling
  • Benchmarking

Read the case study

A billboarded pixel sprite standing on a three-dimensional battlefield

Prototype

HD-2D Render Port

The same battle, rendered in 2.5D

A port that replaces the flat battlefield with a 3D one and billboards the pixel-art troops on top of it, leaving the simulation completely untouched. Everything about how the game plays stays identical; only what the camera sees changes.

  • GameMaker
  • GML
  • 3D rendering
  • Shaders
  • Post-processing

Read the case study

Everything else

Engine Template Extraction

Near complete

Pulling a reusable engine out of a shipped game

Every object, script and room in the game classified as engine or game-specific, then the engine half lifted out as a template with placeholder art and an asset import tool. The hard part was the judgement call on each file, not the copying.

  • GML
  • Refactoring
  • Architecture

Conjurer's Bounty

In development

A summoner defending a loot cache from heroes

A second game in development, built against a written design document and a modeled economy rather than by feel. Working the numbers on paper first surfaced a dozen code defects before a single balance pass was played.

  • GameMaker
  • GML
  • Game Design
  • Economy Modeling

Store Metrics Service

Running

Apple and Google sales in one place

Pulls sales figures from both stores on a schedule, so revenue reporting does not depend on remembering to log into two consoles and reconcile them by hand.

  • Python
  • App Store Connect API
  • Google Play API

Game Analytics Pipeline

Running

A million player events a day into BigQuery

Telemetry from the live game landing in BigQuery, where funnel, retention and drop-off questions get answered with SQL instead of guesses. Big enough that the export quota is a real design constraint.

1M
events a day
  • Firebase
  • BigQuery
  • SQL

Emulator QA Harness

Running

Play-testing the real build, not a test build

Drives a shipping Android build the way a player would: OS-level touch input in, screenshots out, with no test hooks compiled into the game. It catches the class of bug that only ever appears in a release build on a real device.

  • Python
  • ADB
  • Android

Codebase Knowledge Map

Running

Two thousand linked notes over one game project

A generator that walks the game project and writes a cross-linked note for every object, script, room and shader, so finding where something is implemented stops being a grep and starts being a graph. Hand-written notes survive regeneration.

2,000
generated notes
  • Python
  • Static analysis

GML Style Linter

Running

One house style, enforced at write time

A commit-time hook that checks every line of game code against a written standard and hands the violations back immediately. It holds the same whether a person or a generator produced the code, which is the case that used to slip through.

  • Python
  • Git hooks
  • Linting

Low Rated Review Extraction

Shipped

A month of complaints as a spreadsheet

Pulls every low-rated store review into CSV, so player frustration can be read as a sortable list and grouped into themes instead of scrolled through one card at a time.

  • Python
  • Pandas
  • CSV

Eventier

Shipped

An agent system that plans an event end to end

A multi-agent service that invents an event, finds and ranks a venue against a database and the live web, simulates the booking, then writes the marketing plan and copy for it. Every agent hands back a validated Pydantic model rather than loose text, and the run ends in a generated PDF report.

  • Python
  • LangChain
  • LangGraph
  • RAG
  • Pydantic

Discord Bot Template

Shipped

The starting point for a bot that ships

An opinionated template for async Discord bots: project layout, Docker packaging and a Fly.io deploy already wired up, so a new bot starts at working-and-hosted instead of at an empty file. Picked up and used by other people.

  • Python
  • discord.py
  • Docker
  • Fly.io

Get in Touch

If you are working on a game, a port, a publishing deal or a backend that needs an engineer who has shipped and operated one, I would like to hear about it.

Email me