A PIXEL ART BOXING GAME

Two fighters.
Two corners.
One pixel at a time.

Fight Life is a procedurally animated boxing game, built from scratch in canvas. Every fighter, every punch, every knockdown rendered live. Plays in any modern browser, installs to your phone.

Build
v2.8.13
Engine
Phaser 3
Platforms
Web · Mobile
1,878
Commentary Lines
108
Pattern Library
9
Named Callers
6
Promotions
18
Championship Belts
Procedural Fighters
WHAT'S INSIDE

Built differently — by hand, in canvas, every frame procedural.

01 / COMBAT

Procedural fighters

No sprite sheets. Every limb, every recoil, every smear-frame trail is drawn live from primitives. Means infinite character variation, zero memory cost.

02 / MIND

Five AI personalities

A utility-based decision engine weighs nine factors — distance, stamina, ring position, your last fifty inputs. Pressure fighters swarm. Counter-punchers wait. Outfighters circle.

03 / WORLD

Six promotions, eighteen titles

Each promotion has a distinct ring identity — mat colors, rope palette, turnbuckle posts, championship belt across three weight tiers. From underground PFA to elite Prime Fighters. Career mode lands next.

04 / FEEL

Multi-touch combat

Drag any finger to move, tap to punch, hold still to block. All three at once across multiple fingers. Designed mobile-first. Browser-based, installs to your home screen.

COMBAT

Three punches. Sixteen states. One axis.

Tight by design. Combat is single-axis (locked May 2026 after months of two-axis prototyping) — no diagonal spacing math, no Y-drift exploits, no foot-shuffle stalemate. Three punches with hand-tuned tradeoffs. Block drains stamina, doesn't restore it. Combos chain on tight windows. Every value here is a tunable constant in src/data/combat.js.

Per-Punch Tunables
STAMINA
cost
RANGE
pixels
KNOCKBACK
clean / blocked
BLOCK DRAIN
defender
Jab
8 SP
34 PX
3 / 1
10 SP
Hook
15 SP
32 PX
5 / 2
20 SP
Uppercut
20 SP
30 PX
7 / 3
30 SP

Rear-hand strikes do 1.15× damage. Hit-grace window after taking a clean shot is 120ms — consume on next hit, not on a timer. Combos chain within an 800ms window for +2 damage and +1px knockback per step.

Block does not regen stamina.

Defending costs you. A turtling fighter still bleeds — guard breaks at zero stamina into a 0.5-second stun, and the attacker punishes through it. Blocking is a tactical pause, not a free reset.

Knockdowns scale with damage taken.

Dynamic threshold: 15 + totalDamage × 45. Fresh fighter drops at HP<15 only on a clean shot. Wounded fighter goes down at HP<37 — punches earn weight as the fight wears on.

Sixteen discrete fighter states.

IDLE WALK JAB HOOK UPPERCUT BLOCK DODGE HIT STUN DOWN GETUP SEATED ROPE-LEAN CLINCH EMOTE KNOCKOUT

Each state is a discrete handler in fighter/states/. The ref's count timer scales with total damage and current HP — fresh fighters beat the count fast, wounded fighters don't make 9.

ARTIFICIAL OPPONENT

Five fighting minds, weighed against nine factors.

A utility-based AI — every tick, the opponent scores eight possible actions across nine factors and picks the highest. Each personality is a bias matrix layered on top of the universal scoring. They don't follow scripts. They read distance, stamina, your last fifty inputs, what round it is, where they are in the ring — and they choose.

Balanced
Adaptive · No Bias
No bias on any action. Fights what's in front of them. Hardest to read because there's nothing to read — the universal utility scoring wins on its own.
Brawler
Aggression · Power
Loves the hook (+0.30) and uppercut (+0.25). Walks forward (+0.20). Hates blocking (−0.25) and retreating (−0.20). Fights the war you give them.
HOOK+30
UPPER+25
ADV+20
BLOCK−25
Counter Puncher
Patient · Precise
Heavy block bias (+0.30). Steps off to retreat (+0.15) and circle (+0.15). Waits for your overcommit, fires the jab (+0.15). Punishes the impatient.
BLOCK+30
JAB+15
CIRCLE+15
ADV−20
Pressure Fighter
Forward · Volume
Constant forward motion (+0.25 advance, −0.30 retreat). Pumps the jab (+0.25). Drowns you in volume. The fence-walker.
ADV+25
JAB+25
RET−30
IDLE−20
Outfighter
Distance · Movement
Lives at range. Circles (+0.20), retreats (+0.20), pumps the jab (+0.20). Avoids hooks (−0.10) and uppercuts (−0.15). Picks shots from outside.
RET+20
CIRCLE+20
JAB+20
UPPER−15
01
Distance
Reads X-axis spacing against punch ranges. Comfort zones per personality.
02
Stamina
Avoids high-cost actions when winded. Conservative threshold tunable per AI.
03
Opponent State
Reads your current animation. Capitalizes on hit / stun / down windows.
04
Health
Defensive when hurt, aggressive when ahead. Late-fight desperation curve.
05
Action History
Anti-spam — penalizes repeating their own last action so they vary their offense.
06
Player Pattern
50-sample rolling window of your inputs (every 0.2s). Adapts to your tendencies.
07
Ring Position
Cornered? Center? Reads ring geometry into spacing decisions.
08
Round Context
Round 1 caution, late-round desperation. Aware of how much fight is left.
09
Random
Small noise term so identical states still produce variation. Keeps fights surprising.

Reaction time scales with distance — 100ms when close, 150ms at range. The AI commits to its decision; it doesn't peek the future. That's why a quick fake works.

SPECIAL TECHNIQUES

Five gloves. Five mechanical identities.

Every fighter equips one technique. Visible in their dial UI, drives glove-particle motion during ignitions, modifies combat mechanics on charge / spend cycles. Each mechanic is structurally different — not a reskin of the same effect.

Ignition
FIRE · STACK
Compounding-hit snowball
The reference technique. Each clean hit during the window stacks +5% damage and +1px knockback on the next. A perfect six-hit chain peaks at +30% damage. Whiff or get blocked — stacks reset to zero. Punish chains.
6 THROWS +30% PEAK STACK PROC RESETS ON WHIFF
Verglas
FROST · DRAIN
Defensive — stamina drain
Charges from your blocks. Spends 5 throws at −25% cost, drains 8 stamina from the defender per landed hit. Five hits × 8 stamina = 40 burned. Brutal economic pressure.
5 THROWS −25% COST BLOCK CHARGE STAM DRAIN
Vitriol
ACID · HEAL
Damage-from-defense
While equipped, blocks cost double — but every blocked chip fills the spend pool. Each landed hit during the window pays out: bonus damage on the defender, equal HP healed back to you. Take damage to deal damage.
5 THROWS CHIP BLOCK CHARGE HEAL ON HIT
Currant
ELECTRIC · PIERCE
Guard-piercing control
Four-throw control window. Hits punch through the defender's guard — blocks fail through. Each landed hit stacks a 5% damage debuff (cap 20%). While the window is active, you take 15% less damage. Fast control plus armor.
4 THROWS −5% PER HIT GUARD PIERCE 0.85× DMG TAKEN
Resolve
CLINCH · REGEN
Clinch-specific recovery
Active inside the clinch — 1.5s window. Tie up your opponent and regenerate 15 HP and 15 stamina, about a hook back from the brink. Charges from damage absorbed and stamina spent — defense and exertion both fill the meter.
1.5s WINDOW +15 HP +15 SP DUAL CHARGE
BROADCAST

Three networks. Three identities.

Three broadcast identities the exhibition editor lets you assign to any fight. The network decides everything about how the bout is presented — lighting palette, ring announcer, two-person commentary team, the suits in the booth, the language they use. Same fight on a different network is a genuinely different broadcast.

FIGHT LIFE
IN-HOUSE BROADCAST
FIGHT LIFE
Classic boxing-broadcast feel — authoritative, ESPN-style. Cobalt-blue four-sweep arena lighting and navy-suited callers. The default voice of the sport.
Bob Carter
Bob Carter
PBP · 48
Jim Klein
Jim Klein
Color · 55
Tony King
Tony King
Ring Ann. · 56
SENN
PREMIUM PAY-PER-VIEW
SENN
Art-house premium broadcast. Alternating red and warm-white sweep lighting, charcoal suits, formal callers. Reads premium — title fights and main events feel bigger here.
Frank Novak
Frank Novak
PBP · 42
Marcus Lee
Marcus Lee
Color · 50
Dean Marco
Dean Marco
Ring Ann. · 44
REBEL
UNDERGROUND STREAM
PIRATE BROADCAST
Streetwear-edge underground stream. Stark white-hot four-sweep lighting, black bombers and burgundy varsity. Theatrical, hype-driven, raw.
Ricky Slade
Ricky Slade
PBP · 45
Tank Volkov
Tank Volkov
Color · 38
Viper Stone
Viper Stone
Ring Ann. · 38

Promotions and networks aren't bound. The exhibition editor lets you pick any promotion on any network — same fight on FIGHT LIFE plays straight, on SENN reads premium, on PIRATE BROADCAST hypes wild. Three different broadcasts of the same fight.

PROMOTIONS

Six promotions. Three tiers.

From underground basement bouts to elite championship lights — each promotion has its own logo, ring identity (mat colors, ropes, posts, turnbuckle pads), championship belt design, and roster of named referees.

Underground
PFA
PFA
Pitfighters Association
RUST & STEEL · INDUSTRIAL
Club Fist
CLUB FIST
Club Fist
BLOOD & CONCRETE · RAW
Mid Tier
Ringiron
RINGIRON
Ringiron
BLACK & CHROME · HARD
Atlas Boxing
ATLAS
Atlas Boxing
NAVY & SILVER · GLOBAL
Elite
IBA
IBA
International Boxing Association
BLACK & GOLD · TITLE-HOUSE
Prime Fighters
PRIME
Prime Fighters
STARBURST & GOLD · MARQUEE
OFFICIATING

Twenty-four named referees.

Each promotion ships with a four-ref pool. Skin tones, hair styles, ages distributed for variety. Picked at fight-create.

PFABuddy Hale
PFARay Moreno
PFAJim Tanner
PFAChuck Davis
CLUB FISTNick Rourke
CLUB FISTEd Walcott
CLUB FISTTony Greco
CLUB FISTLeon Booker
RINGIRONPat Haggard
RINGIRONDale Crenshaw
RINGIRONBo Martell
RINGIRONMarv Castillo
ATLASWalt Keene
ATLASDon Fairchild
ATLASRuss Ellington
ATLASCarl Jessup
IBAOwen Prescott
IBAJulio Sandoval
IBAKen Ashford
IBATab Merrick
PRIMEGus Latimer
PRIMEVic Hardesty
PRIMEJerome Wyatt
PRIMEAl Fiorente
COMMENTARY

A storytelling state machine, not a soundboard.

1,878
Authored Lines
108
Patterns
15
Combat Signals
8
Story Frames

Stateful, not stateless. Pre-fight, the system reads both fighters' bios — record, age, origin, style, streak — and picks a narrative frame that the entire match plays against. Pre-fight predictions become threads the corner commentary calls back to. Post-fight pays them off, or subverts them.

Frame can shift mid-fight. A predicted technical-chess match becomes a war when both fighters open up in round three — and the frame shift itself becomes a story beat. "That's not the fight we expected, Bob."

Fifteen combat signals feed the picker each round: knockdowns, sweeps, cuts, comebacks, gassed fighters, dominant rounds, eye-closing damage, TKO warnings. Patterns gate on signals plus state — first knockdown of the fight reads different than third in this round.

Anti-repetition is global. Once a pattern fires, it's flagged for the rest of the match. No two fights sound the same, even in long sessions.

Eight narrative frames the system can land on:

BIG FIGHT
WAR EXPECTED
TECHNICAL CHESS
STYLE CLASH
EXPERIENCE GAP
MISMATCH
REDEMPTION
COMEBACK SHOT
PBP · CORNER · FIRST KD
"DOWN GOES SANTOS! First knockdown of the fight!"
ANALYST · CORNER · MULTI-KD
"How does Marcos get up from that, Bob? That's the second time on the canvas."
PBP · POSTFIGHT · NEW CHAMP
"AND WE HAVE A NEW CHAMPION! The middleweight belt has a new owner!"
ANALYST · POSTFIGHT · UPSET
"A clean takeover. The new champion looked the part from the opening bell."
PBP · CORNER · COMEBACK
"You knew he was going to dig deep, Jim. That is championship pedigree."
A FIGHTER, IN FULL

A fighter, in full.

Procedural doesn't mean generic. Every fighter rolled by the chargen carries a full bio that the rest of the system reads — commentary calls out their record, narrative frames pick up their style, AI personality drives their decisions, motivation stack tunes their stats round-by-round. Here's an example using the champion above.

Bulldozer Aguero champion display
CHAMPION · OVR 79
"Bulldozer" Aguero
ARG AGE 35 MIDDLEWEIGHT OVR 79
RECORD
20 — 18 — 0 12 KO
KO RATE
60% 12/20

From the data the chargen rolls for a fighter like Bulldozer, the rest of the engine reads style (pressure / counter / out / brawler / balanced — drives AI bias matrix), equipped technique (1 of 5 — drives glove proc + dial UI), motivation stack (3 cards drawn from a 12-card pool × 3 rarity tiers — drives stat modifiers), and the bio fields above. Commentary picks all of it up — record, age, origin, style, streak — and weaves it into the broadcast.

Example commentary lines a 35-year-old Argentine pressure fighter at 20-18 might trigger:

PRE-FIGHT
"Bulldozer comes in 20-18, with 12 of those by knockout. Dean Marco, this Argentine pressure fighter has been waiting for a title shot for years."
CORNER
"He's pumping that jab, Frank. Every time Wade tries to circle off, Aguero cuts the ring on him. Textbook pressure work."
POST-FIGHT
"At thirty-five, after eighteen losses, he gets the belt. The middleweight division has a new king tonight."
THE WORLD

Built like a sport, not a game.

Every detail that makes a real boxing broadcast feel real — from the city the card is hosted in, to the eleven walkout themes, to the in-universe sponsors stamped across replay packages.

FIGHTER GENERATION
Procedural fighters
Every fighter is generated from a country pool with culturally-appropriate names, age, record, height, weight, personality, equipped technique, motivation stack — ~14 million unique name combinations alone before stats and look enter the math.
ORIGIN POOL
18
Countries
USA, Mexico, Japan, Russia, Brazil, Nigeria, South Korea, UK, Germany, Colombia, Philippines, Cuba, Ukraine, Ghana, Ireland, Thailand, Argentina, France. Each with its own first/last name pool — 364 first names total.
BROADCAST CITIES
21
Fight nights travel
A promotion based in New York might run Vegas this week, London next, Tokyo the week after. 21 cities across 7 countries — picked deterministically per match. Friday / Saturday / Sunday card slots.
VENUES
5
Arenas + a gym
Training Gym (no presentation), Underground (small, dim, single bulb), Civic Theater, Stadium, Coliseum (large arena). Each with its own crowd audio profile and lighting system.
FIGHT NIGHT
5
Slots, 6 PM to 10 PM
Opener, Under Card, Mid Card, Main Event, Championship — every fight night runs five matches per promotion. All five truly simulated, not just the player's.
SPECIAL TECHNIQUES
5
Glove ignitions
Ignition, Verglas, Vitriol, Currant, Resolve. Each fighter equips one — visible in their dial UI, drives glove-particle motion, modifies combat mechanics on charge / spend cycles.
MOTIVATIONS
12×3
Three rarity tiers
Forged (5 technique-specific), Refined (3 universal buffs), Blessed (4 attribute buffs). Common · Rare · Legendary drop at 70 / 25 / 5. Each motivation holds one rarity; re-picking upgrades the slot.
AI PERSONALITIES
5
Distinct fighting minds
Balanced, Brawler, Counter-Puncher, Pressure Fighter, Outfighter. Each weights nine utility factors differently — distance, stamina, opponent state, your last 50 inputs. They read you and adapt.
VOICE SYNTHESIS
12
Hand-tuned profiles
Per-persona pitch base, pitch range, lowpass cutoff, syllable duration. Bob Carter sounds different than Frank Novak. Tony King's baritone, Viper Stone's gravel. Synthesized live, no voice-over recording.
HOW A FIGHT NIGHT RUNS

Five fights. Six PM to ten.

Every fight night under every promotion runs the same five-slot card structure. All five fights truly exist in simulation, not just the player's — the replay scene pulls real sibling-match data for the "Beyond Promotion" and "Promotion Highlights" cards. Career mode will use slot tiers for ranking-bias logic; Exhibition assigns uniformly.

6:00 PM
Opener
First fight of the night. Tier 1 stakes — career-mode prospects building records.
7:00 PM
Under Card
Tier 2. Mid-roster fighters earning a step up. Crowd settling in.
8:00 PM
Mid Card
Tier 3. Notable bouts — eliminators, contender showcases, established names.
9:00 PM
Main Event
Tier 4. Top-of-card fight. Pre-fight commentary digs in. PPV begins here.
10:00 PM
Championship
Tier 5. Belt on the line. Slot label flips to "Championship" only when title contested — otherwise stays "Main Event."

Friday · Saturday · Sunday — weighted 2 / 6 / 1 per match seed.

IN-UNIVERSE BRANDS

Eight sponsors. Stamped on replay packages.

Fictional brands — bloodwork, mouthguards, hand wraps, energy drinks, training gyms — that read at-home in a gritty boxing universe. Branded into the broadcast chrome of every replay.

FROM THE GAME

Captured live.

Seven moments from a single Atlas Boxing card on SENN — pay-per-view title screen, arena reveal, matchup tale-of-the-tape, ring intros, champion showcase, exhibition editor. Every frame rendered live in canvas. No mockups, no concept art.

Pay-per-view tonight
SENN · PAY-PER-VIEW INTRO
Arena reveal under sweep lights
SENN · ARENA REVEAL
Matchup cards — Aguero vs Wade
ATLAS ON SENN · TALE OF THE TAPE
Ring introductions — Atlas Boxing
ATLAS BOXING · INTRODUCTIONS
Dean Marco announcing fighter record
DEAN MARCO · RING ANNOUNCEMENT
Bulldozer Aguero champion display
CHAMPION · BULLDOZER AGUERO
Exhibition editor with rosters and promotion picker
EXHIBITION · EDITOR

Step into the ring.
It's free.

Plays in your browser. No download. No account. Save data lives on your device.

PLAY FIGHT LIFE