Retro Arcade

// how it was made

One cabinet, three separate games: a platformer, a pinball table and a maze chase. No images, no sprite sheets, no sound files anywhere in them.

Play it →
3Cabinets
175Dots per maze
0Image or sound files
19 KBBiggest game

The three games

Two things nobody tells you

In pinball, T nudges the table, shoving the ball upward like a shoulder-barge on a real cabinet. Do it four times inside six seconds and the machine tilts: both flippers go dead for three seconds and you watch the ball drain. The fix for a bad shot is right there, and so is the punishment for leaning on it.

In the maze, eating all four power cores on one life pays a thousand points. Lose a life and the count resets, so it rewards playing the board out rather than farming ghosts and dying.

The pinball table was the hard part

The first version had both flippers pointing the same way. The angle each one rested at was correct, and then a separate left-or-right value was applied on top, cancelling the difference out.

Then a hard shot would pass straight through a flipper. They are drawn as thick bars but were tested for collision as if they had no thickness, and the ball moved only four times per frame, so at speed it could be on one side in one step and past it in the next. Both are fixed: real width, and ten smaller steps.

What it cost: the flipper bug survived because I kept re-reading the part that set the angles, which was correct. The wrong thing happened one step later. Look at the output, not at the intention.

Why the jumping feels right

Two small forgiveness rules do most of the work. Run off a ledge and you can still jump for about 80 milliseconds afterwards. Press jump slightly before you land and the game holds that press for about 120 milliseconds, then spends it the moment your feet touch. Neither is noticeable while playing. Take them out and the controls feel like they are ignoring you.

Jump height is variable too: let go early and the jump is cut short.

Everything is drawn at runtime

There is no art in this project. The maze, the table, the enemies and the player are shapes drawn fresh every frame, so the neon glow is a real effect rather than a picture of one. Levels are rows of text characters, one per tile, so editing a level means editing a picture made of punctuation.

Sound works the same way. Every chomp, flipper click and death noise is a tone generated as it plays. Nothing to load, nothing to license.

Phones, and what I did not have to rewrite

All three were built for a keyboard first. Touch controls came later as a shared on-screen stick and button layer that fakes the exact key presses the games already listened for, so no game logic changed. Pinball also reads a tap on the left or right half of the screen as a flipper, because reaching for a button is too slow with a ball coming down.

Scores and achievements live in your own browser, in one record shared by every game on the site. No account, no server, nothing sent anywhere. Clear your browser data and it is gone, which is the trade for never being asked to sign up.