← ChampChase Dev Log

February 1, 2026

FEATURE

The Fight Engine: From Sliders to Knockdowns

The fight engine went through more iterations than anything else in the game. FightEngine.cs and FightDisplayController.cs are the two most-edited files in the entire codebase — 8 passes each.

The damage formula: (power x 0.15 + punchStat x 0.1) x (1 - defenderDefense/200). Intentionally halved from realistic values for theatrical pacing. Every fight should feel like a movie, not a spreadsheet.

Hit chance floor is 65% — most punches connect because watching two boxers whiff for 3 rounds isn't fun. 7-11 exchanges per round. 6% knockdown chance per big hit. Stamina recovers +8 between rounds, creating a natural degradation arc.

42 fights across 5 chapters. Each opponent has an archetype — brawler, technician, counter-puncher, tank, showboat, scrapper. The archetype determines their AI patterns, not just their stats.

Pass 105 was the 5th attempt at getting the fight rendering to work. We tried ScreenSpaceCamera, abandoned it, went back to ScreenSpaceOverlay with world-space SpriteRenderers. Sometimes the right answer is the one you started with.

Oh, and there are Easter eggs. You might run into the Italian Stallion. And if you look hard enough, Mike Tyson makes an appearance. I'll leave it at that.

Fight walk-in: portraits, stats, archetypes — Boxer 'Blitz' vs Viper Morales
Fight walk-in: portraits, stats, archetypes — Boxer 'Blitz' vs Viper Morales
KO with full VFX — damage numbers, combo counter, knockdown announcement
KO with full VFX — damage numbers, combo counter, knockdown announcement
First fight: WADASD 'Phoenix' vs Big Ray. PWR 35 vs PWR 15. 'Your first fight is where the loop starts.'
First fight: WADASD 'Phoenix' vs Big Ray. PWR 35 vs PWR 15. 'Your first fight is where the loop starts.'

Read this in the full interactive devlog →

ChampChase — a story-driven boxing RPG. Climb from nothing to the belt. Free in the beta on iPhone and Android.