Web Log · 26 August 2026

Pinball Rabbit Hole

History

As an experiment, I thought I'd make a pinball game. It seemed simple enough. I already had my own basic physics system based on pixel collisions, so I threw together a simple table to try it out.

The unfinished 2012 Flash pinball game as it was recovered
The state of the old 2012 Flash pinball game when I found it.
The Ignition table from Pinball Dreams
Pinball Dreams' Ignition table, one of the sources of inspiration.

It turns out that making a pinball game and making a fun pinball game are two entirely different things. The table worked, but making it enjoyable was much more time-consuming than I expected. It seemed like a lot of work for not much payoff, so I shelved it. That was 2012.

Jump forward fourteen years. With Three.js and plenty of physics libraries available, I thought it was worth another try. Once again, getting a working table together wasn't the hard part. Making it playable and at least a little entertaining was.

AI usage

AI coding is here, and people whipping up games made almost entirely by AI aren't unusual anymore. What I liked about the pinball idea was that AI could help with practical things, particularly setting up the table editor, while the actual game was still made by hand.

The layouts, rules and increasingly absurd ideas were still mine. AI helped me build some of the tools, but it didn't decide what the game should be.

Simulation

I was always a fan of Pinball Dreams, Epic Pinball and other PC pinball games, and they were the main inspiration. The more I worked on it, though, the more I wanted it to be a little less arcade-gamey and a little closer to a real pinball table.

I wasn't trying to make a perfect simulation. I mainly wanted the rules and mechanisms to feel like things a real table could also do, even when the ideas themselves were a bit stupid.

Playing real tables

I sought out some real pinball tables to play so I could get a better idea of how they actually worked. There are a lot of small details that are easy to miss when your main reference is old PC pinball games.

The flippers were especially hard to simulate. Even with the physics engine running at 120 Hz, it's difficult to reproduce how fast and powerful a real flipper feels.

Real mechanisms and logic

In a computer game, a ball can appear or disappear because the code says so. Real pinball tables have to physically move it somewhere. Vertical up kickers (VUKs), pop bumpers, kickers, switches, detectors and elaborate metal chutes all work together to move and store balls, and somehow keep doing it after thousands of games.

The Slow Mo Guys' video showing a pinball machine in slow motion is fascinating because you can actually see these mechanisms doing their jobs. Technology Connections' breakdown of an old pinball machine goes underneath the playfield and shows the slightly alarming amount of circuitry, wiring and mechanical logic packed inside one.

I wanted the game to represent at least some of how these mechanisms really work, instead of having balls simply vanish and reappear whenever it was convenient.

Then there is all the game logic. Scoring, modes, jackpots, multiball, unlocks and the rules connecting them can get complicated very quickly. I wanted it to have a proper pinball feel, but still be unique, easy enough to understand and full of the usual Rubber.tube sense of humour.

Most of the tables so far have ended up being character-driven. Their modes are built around quests, schemes and other questionable things the character might get up to.

Completing a game

Actually completing a game is the hard bit. Making experimental things is fun, but turning one into something playable, working and good enough to release is the tricky part where most projects fall over.

Somehow, probably thanks to the positive feedback on the first table, Tim Credible's Crediball, I managed to wrap it all up into a publishable and playable little game. It even had an online high score system and a nice repertoire of glitchy bugs to keep things interesting.

Once I had a table editor, expanding on the original game was simple enough. I could add new tables whenever ideas for them appeared. Six tables later, it has turned into quite a successful project.

I also decided to go back and actually complete the original 2012 Flash game that started the whole thing. It isn't especially fun, but it is still interesting to play. I exported the assets from the old Flash FLA and rebuilt the game in JavaScript and canvas.

The completed 2012 Evil-e Pinball table
The finally completed 2012 pinball table, "Evil-e Pinball".

This time I used the Rapier 2D physics library instead of the original bespoke pixel-collision system. The old physics were a little too bouncy and difficult to control. I added another chute, a few more switches and a working scoring system, and there it was: a mediocre but interesting old Flash game resurrected as a playable pinball table. I even connected it to the online high score system, so you can try for the top ten.

Music

A big part of what made those old PC pinball games so good was the music and sound. I've been learning to make my own music over the last year, with some help from my MIDI player, so I was excited to create theme music for each table, along with little ditties for completing chutes and quests.

The period-specific tables made this especially fun. I could make medieval, futuristic and Norse or Viking-themed music. Time Ball was the most complicated, because all three genres and their instruments had to be combined into a single track.

For the basic pinball noises and some useful gap-fillers, I found Dirty Pool Pinball's FREE SFX for Homebrew Pinball Makers. It was a very handy source for the mechanical sounds that make a pinball table feel like a pinball table.

Justin Credible's Futureball pinball table
A completed table, Justin Credible's Futureball.
The table walkaround view in Credible Pinball
I ended up adding the full table and a "table walkaround" mode to view it.

Play the results

You can try the new pinball tables, as well as the resurrected and finally completed 2012 table, below.