Why VETO FIGHTERS?
VETO FIGHTERS: Summit Showdown is a complete, finished fighting game, not a demo or a starter kit. Thirteen fictional caricatures of global political archetypes fight in front of painted, roaring crowds, with six-button combat, quarter-circle specials, throws, chip damage, cancels, combo scaling and one super move per fighter that ends in a punchline. It runs in any modern browser from plain static files: vanilla ES modules + Canvas, no framework, no bundler, no backend.
Reskin it, ship it as a free game with ads, publish it on a portal, or study how a real fighting-game engine is organised. The animations and the video on this page are captured from the real game, with no mockups.
- 13 fighters, each with 2 specials, a rising strike, a super and a unique passive
- 6-button combat: light / medium / heavy punches and kicks, throws, blocking, chip damage, cancels, combo scaling
- Arcade ladder (7 rivals) with a bonus stage, local Versus and a Training mode
- 13 painted stages with reactive crowds; cinematic supers with camera effects
- Keyboard, gamepad and touch controls; remappable keys; painted HD or retro pixel look
- CPU opponents with three difficulty levels and a personality per fighter
- Built-in "How to play" screen with a page per fighter and a pause-menu move list
- 25 unit tests, a fuzz test (500+ matches) and a balance script
01. See it working: the official trailer
The first slide of the gallery is a 90-second trailer with narration, music and in-game sound effects. Every frame was captured from the running game: scripted fights, real supers, real crowds.
02. Thirteen fighters, thirteen playstyles
Every fighter brawls like their politics. The Tycoon posts viral tweets that charge his meter, the Budget Slasher cuts the rival's super bar with every hit, the Morning Orator heals with a hug and the Grand Planner sends a drone. All thirteen are fictional parodies with invented names.


03. Six-button combat that scales
Light, medium and heavy punches and kicks. Chain light, medium, heavy, special; cancel normals into specials, throw close up and punish with rising strikes. Damage scales through long combos, blocked hits still chip, and the HUD shows hit counts and damage.


04. Supers with punchlines
Fill the bar and let it rip. Each super is a cinematic gag that also wins rounds: golden walls, revolutions, chainsaw shock therapy, tariffs times one hundred, a blizzard, a rocket to the moon.





05. Thirteen painted stages
Thirteen illustrated stages, each with its own reactive crowd: Golden Tower Penthouse, Frozen Fortress, Imperial Hall, Harbor Market, Summit Plaza, Downing Street, Palace Hall, Glass Dome, Copacabana Boardwalk, Oil Field Rally, Volcano Beach, Andean Coffee Terrace and Barricade Avenue.

06. Game modes
- Arcade ladder: seven rivals in a row, a bonus stage where you smash a limo, a continue countdown, game over and a per-fighter ending.
- Local Versus: two players on one keyboard or two gamepads.
- Training: live input display, dummy modes (stand, crouch, jump, block) and a super-meter refill.
07. Controls, accessibility and options
- Fully remappable keys, with an on-screen key legend under the health bars
- Gamepad support (X Y RB = punches, A B RT = kicks, Start = pause) and on-screen touch controls on phones and tablets
- Options for difficulty, rounds, round time, screen shake, key hints, CRT scanlines and art style (painted HD or 16-bit pixel)
- Inputs: quarter-circle specials, a rising strike, a double quarter-circle super (costs one bar), close LP + LK throw, hold back to block
08. Easy to reskin and extend
The game is data-driven: fighters, moves, passives, AI personalities and stages are plain JavaScript objects in js/fighters/roster.js and js/render/stage.js. Rename the cast, change the numbers, swap the music, or add a fighter by dropping in 64 sprite frames. The included Python tools (tools/) show how the painted sprites, crowds and UI were generated with an image API and packed into atlases.
- Passives and specials are declarative (timings, hitboxes, projectile specs, events)
- A balance script plays every pairing and reports win rates
- Scene-based architecture: boot, title, menu, select, versus, fight, result, options, how-to-play
Tech stack
- JavaScript (native ES modules), HTML5 Canvas 2D, Web Audio API, CSS3
- No build step, no npm dependencies; node --test for the test suite
- Optional Python 3 scripts for local serving and asset generation
What you get
- The full game: index.html, css/, js/ (46 modules), assets/ (35 MB) and audio/ (18 MB)
- Tests (tests/), fuzz and balance scripts, and the asset-generation tools (tools/)
- README with controls, fighter table and run instructions
Run it in 3 steps
unzip veto-fighters.zip && cd veto-fighters
python3 serve.py 8765 # or any static server
# open http://localhost:8765
To publish, upload the folder to any static host (Netlify, Vercel, GitHub Pages, S3…). Nothing else is required.
Requirements
- Any modern browser (Chrome, Edge, Firefox, Safari)
- Optional: Python 3 (local server and tools) and Node 20+ (tests); an image-API key only if you want to generate new sprites
Good to know
All fighters are fictional parody caricatures with invented names and original artwork. No real names, photos or logos are used. The violence is slapstick: a K.O. is an "IMPEACHED!" banner.
Artwork was created with AI image tools under human art direction; music, narration and sound effects were generated with ElevenLabs. The screenshots, animations and video were captured from the real game.