A Street Fighter 2–style browser fighting game where every fighter is a Tim Curry role — and every stage is from a Tim Curry movie.
Built with Phaser 3 (vendored, no build step). Runs entirely in the browser.
Any static file server works:
npx serve . # or:
python3 -m http.server 8000
Then open http://localhost:8000.
Best of 3 rounds, 60-second timer.
| Action | Player 1 | Player 2 |
|---|---|---|
| Move / jump / crouch | W A S D | Arrow keys |
| Punch (fast) | F | , |
| Kick (strong) | G | . |
| Special (costs meter) | H | / |
| Block | hold away from opponent | hold away from opponent |
Crouch + punch = low attack. Punch/kick in the air = jump attack. The blue meter builds as you deal, take, or block damage; specials spend it.
Every fighter has an alternate costume: confirm your pick with the kick button (P1: G, P2: .) instead of punch to wear it. If both players pick the same fighter and costume, whoever chose first keeps it and the other player is switched to the other costume — the CPU always yields to you.
| Fighter | Movie | Special |
|---|---|---|
| Frank-N-Furter | The Rocky Horror Picture Show (1975) | Time Warp — teleport behind and strike |
| Darkness | Legend (1985) | Hellfire — close-range flame eruption |
| Wadsworth | Clue (1985) | The Butler Did It — counter stance |
| Long John Silver | Muppet Treasure Island (1996) | Flintlock — fast pistol shot |
| Cardinal Richelieu | The Three Musketeers (1993) | Papal Decree — slow heavy projectile |
| Pennywise | IT (1990) | Deadlight Balloon — drifting balloon |
| Hexxus | FernGully (1992) | Toxic Love — ground-crawling sludge |
| Rooster Hannigan | Annie (1982) | Easy Street — lunging cane rush |
| Herkermer Homolka | Congo (1995) | Diamond of Zinj — hard-flung diamond projectile |
| Dr. Yevgeniy Petrov | The Hunt for Red October (1990) | Doctor's Orders — self-heal |
The Frankenstein Place (Rocky Horror) · The Great Tree (Legend) · Boddy Mansion (Clue) · Deck of the Hispaniola (Muppet Treasure Island) · The Derry Storm Drain (IT) · FernGully Canopy (FernGully) · The Plaza Lobby (Home Alone 2) · Notre-Dame Chambers (The Three Musketeers) · The Ruins of Zinj (Congo) · Red October Control Room (The Hunt for Red October)
Everything has a procedural fallback drawn in code (sprites, portraits,
stages) and all audio is synthesized with WebAudio — the game runs with
zero binary assets. Each stage has its own chiptune theme, sequenced in
src/sfx.js: public-domain tunes where the movie calls for one (the
Soviet anthem aboard Red October, "Entrance of the Gladiators" in the
Derry sewer, "Carol of the Bells" at the Plaza, "Drunken Sailor" on the
Hispaniola, Bach's Toccata in D minor at Notre-Dame) and original pieces
for the rest. The shipped assets/ directory upgrades all of it
to Gemini-generated 16-bit art, which the game automatically prefers
via assets/manifest.json. Delete that manifest to see the procedural
fallbacks.
To regenerate with your own key (needs image quota, i.e. billing enabled — free-tier keys have none):
export GEMINI_API_KEY=your-key
python3 scripts/generate_art.py # stages, portraits, title card
python3 scripts/generate_sprites.py # SF2-style fighter sprites
python3 scripts/generate_art.py stages zinj # ...or just one item
python3 scripts/generate_sprites.py frank kick # ...or one character/pose
generate_sprites.py generates a reference sprite per character, derives
the other 13 poses from it with Gemini image editing for frame-to-frame
consistency, then keys out the background and normalizes each frame onto a
320x256 bottom-anchored canvas. Hitboxes stay logical (independent of the
art), so AI and procedural fighters play identically.
A fan-made parody tribute to the filmography of Tim Curry. Not affiliated with any studio.
41 commits
JavaScript
78.0%
Python
21.6%
A Street Fighter 2–style browser fighting game where every fighter is a Tim Curry role — and every stage is from a Tim Curry movie.
Built with Phaser 3 (vendored, no build step). Runs entirely in the browser.
Any static file server works:
npx serve . # or:
python3 -m http.server 8000
Then open http://localhost:8000.
Best of 3 rounds, 60-second timer.
| Action | Player 1 | Player 2 |
|---|---|---|
| Move / jump / crouch | W A S D | Arrow keys |
| Punch (fast) | F | , |
| Kick (strong) | G | . |
| Special (costs meter) | H | / |
| Block | hold away from opponent | hold away from opponent |
Crouch + punch = low attack. Punch/kick in the air = jump attack. The blue meter builds as you deal, take, or block damage; specials spend it.
Every fighter has an alternate costume: confirm your pick with the kick button (P1: G, P2: .) instead of punch to wear it. If both players pick the same fighter and costume, whoever chose first keeps it and the other player is switched to the other costume — the CPU always yields to you.
| Fighter | Movie | Special |
|---|---|---|
| Frank-N-Furter | The Rocky Horror Picture Show (1975) | Time Warp — teleport behind and strike |
| Darkness | Legend (1985) | Hellfire — close-range flame eruption |
| Wadsworth | Clue (1985) | The Butler Did It — counter stance |
| Long John Silver | Muppet Treasure Island (1996) | Flintlock — fast pistol shot |
| Cardinal Richelieu | The Three Musketeers (1993) | Papal Decree — slow heavy projectile |
| Pennywise | IT (1990) | Deadlight Balloon — drifting balloon |
| Hexxus | FernGully (1992) | Toxic Love — ground-crawling sludge |
| Rooster Hannigan | Annie (1982) | Easy Street — lunging cane rush |
| Herkermer Homolka | Congo (1995) | Diamond of Zinj — hard-flung diamond projectile |
| Dr. Yevgeniy Petrov | The Hunt for Red October (1990) | Doctor's Orders — self-heal |
The Frankenstein Place (Rocky Horror) · The Great Tree (Legend) · Boddy Mansion (Clue) · Deck of the Hispaniola (Muppet Treasure Island) · The Derry Storm Drain (IT) · FernGully Canopy (FernGully) · The Plaza Lobby (Home Alone 2) · Notre-Dame Chambers (The Three Musketeers) · The Ruins of Zinj (Congo) · Red October Control Room (The Hunt for Red October)
Everything has a procedural fallback drawn in code (sprites, portraits,
stages) and all audio is synthesized with WebAudio — the game runs with
zero binary assets. Each stage has its own chiptune theme, sequenced in
src/sfx.js: public-domain tunes where the movie calls for one (the
Soviet anthem aboard Red October, "Entrance of the Gladiators" in the
Derry sewer, "Carol of the Bells" at the Plaza, "Drunken Sailor" on the
Hispaniola, Bach's Toccata in D minor at Notre-Dame) and original pieces
for the rest. The shipped assets/ directory upgrades all of it
to Gemini-generated 16-bit art, which the game automatically prefers
via assets/manifest.json. Delete that manifest to see the procedural
fallbacks.
To regenerate with your own key (needs image quota, i.e. billing enabled — free-tier keys have none):
export GEMINI_API_KEY=your-key
python3 scripts/generate_art.py # stages, portraits, title card
python3 scripts/generate_sprites.py # SF2-style fighter sprites
python3 scripts/generate_art.py stages zinj # ...or just one item
python3 scripts/generate_sprites.py frank kick # ...or one character/pose
generate_sprites.py generates a reference sprite per character, derives
the other 13 poses from it with Gemini image editing for frame-to-frame
consistency, then keys out the background and normalizes each frame onto a
320x256 bottom-anchored canvas. Hitboxes stay logical (independent of the
art), so AI and procedural fighters play identically.
A fan-made parody tribute to the filmography of Tim Curry. Not affiliated with any studio.
41 commits
JavaScript
78.0%
Python
21.6%