Game Balance
Overview
Balance in a fighting game means every character has viable options and no single strategy is overwhelmingly dominant. Good balance comes from careful tuning of frame data, damage values, hitbox/hurtbox design, and system mechanics.
Frame Data Fundamentals
Frame data describes the timing of every move in the game. At 60fps (IKEMEN Go's standard), each frame = 1/60th of a second = 16.67ms.
Move Phases
Every attack has three phases:
- •Startup: Frames before the hitbox appears (vulnerable, no attack)
- •Active: Frames where the hitbox exists (can hit opponent)
- •Recovery: Frames after hitbox disappears (vulnerable, no attack)
Total frames = Startup + Active + Recovery
Frame Advantage
Frame advantage determines who can act first after a move connects:
On Hit: Frame advantage = Opponent's hitstun - Attacker's recovery
- •Positive = attacker recovers first (can continue pressure)
- •Negative = defender recovers first (attacker is punishable)
- •0 = both recover simultaneously (neutral)
On Block: Frame advantage = Opponent's blockstun - Attacker's recovery
- •Usually more negative than on hit (blocking recovers faster)
Standard Frame Data by Move Type
| Move Type | Startup | Active | Recovery | On Hit | On Block | Damage |
|---|---|---|---|---|---|---|
| Light Punch | 3-5 | 2-3 | 6-8 | +3 to +5 | +1 to +3 | 20-30 |
| Medium Punch | 5-7 | 3-4 | 10-14 | +2 to +4 | -2 to 0 | 50-70 |
| Heavy Punch | 8-12 | 3-5 | 16-22 | +0 to +3 | -6 to -3 | 80-110 |
| Light Kick | 4-5 | 2-3 | 7-9 | +2 to +4 | 0 to +2 | 20-35 |
| Medium Kick | 6-8 | 3-4 | 12-16 | +1 to +3 | -3 to -1 | 55-75 |
| Heavy Kick | 9-14 | 4-6 | 18-24 | -1 to +2 | -8 to -4 | 90-120 |
| Crouch Light | 3-4 | 2-3 | 6-8 | +3 to +5 | +1 to +3 | 15-25 |
| Crouch Medium | 5-7 | 3-4 | 12-15 | +2 to +3 | -3 to -1 | 45-65 |
| Crouch Heavy/Sweep | 8-12 | 4-5 | 20-28 | Knockdown | -10 to -6 | 80-100 |
| Jump Attack | 5-8 | 4-8 | Until land | Varies | Varies | 40-90 |
| Special Move | 8-16 | 3-8 | 18-30 | Varies | -5 to +3 | 70-140 |
| Super Move | 5-12 | 5-15 | 25-40 | Knockdown | -15 to -5 | 200-350 |
| Throw | 3-5 | 1-2 | 20+ (whiff) | Knockdown | N/A | 120-160 |
Frame Data in IKEMEN Go
Frame data is encoded in two places:
- •.air file: Startup frames (before Clsn1 appears), active frames (Clsn1 present), recovery frames (after Clsn1, before state ends)
- •.cns HitDef:
pausetime(hit freeze),ground.hittime(hitstun),ground.slidetime(blockstun basis),guard.ctrltime(guard recovery)
Calculating Hitstun from HitDef
On-hit advantage = ground.hittime - (remaining recovery frames + pausetime.p1) On-block advantage = ground.slidetime - (remaining recovery frames + guard.pausetime.p1)
Damage System
Base Damage
Set in HitDef: damage = hitDmg, guardDmg
- •
hitDmg: Damage on successful hit - •
guardDmg: Chip damage when blocked (usually 0 for normals, 10-25% for specials)
Damage Scaling (Combo Proration)
To prevent infinite combos from killing instantly, implement damage scaling:
; In the character's state logic, track combo hits ; Each subsequent hit in a combo does less damage ; Example scaling table: ; Hit 1: 100% damage ; Hit 2: 90% damage ; Hit 3: 80% damage ; Hit 4: 70% damage ; Hit 5+: 60% damage (minimum) ; Implemented via AttackMulSet controller: [State combo, Scale Damage] type = AttackMulSet trigger1 = 1 value = ifelse(var(10) <= 1, 1.0, ifelse(var(10) = 2, 0.9, ifelse(var(10) = 3, 0.8, ifelse(var(10) = 4, 0.7, 0.6))))
Stun/Dizzy System
Optional mechanic where accumulated hits cause a dizzy state:
- •Track stun buildup in a variable
- •When threshold reached, enter dizzy state (5400)
- •Stun decays over time when not being hit
- •Different moves contribute different stun values
Juggle System
IKEMEN Go's juggle system uses juggle points:
- •Each character has
airjugglepoints (set in [Data], typically 15) - •Each move costs juggle points (set in Statedef's
juggleparameter) - •Moves can only juggle if remaining points >= move's juggle cost
- •This prevents infinite air combos
Character Archetypes & Balance
Archetype Design Guidelines
Shoto/Balanced (Template character)
- •Life: 1000, Attack: 100, Defense: 100
- •Has fireball (zoning), dragon punch (anti-air), and strong normals
- •Good at everything, master of nothing
- •Walk speed: Medium (2.4), Run speed: Medium (4.6)
Grappler
- •Life: 1100-1200, Attack: 110, Defense: 90-95
- •Very high damage throws and command grabs
- •Slow movement, poor ranged options
- •Walk: Slow (1.8), Run: Slow (3.8), Jump: Low (-7.8)
- •Armor/super armor on some moves
Rushdown
- •Life: 850-950, Attack: 105, Defense: 95
- •Fast normals, good frame advantage, mix-up heavy
- •Walk: Fast (2.8), Run: Fast (5.2), Jump: High (-8.8)
- •Lower damage per hit, higher combo potential
Zoner
- •Life: 900-1000, Attack: 95, Defense: 100
- •Multiple projectiles, screen control tools
- •Weaker up close, strong at range
- •Walk: Medium (2.0), Run: Medium (4.2)
- •Anti-air specials, keepaway tools
Glass Cannon
- •Life: 750-850, Attack: 115-120, Defense: 85
- •Highest damage output, lowest survivability
- •Fast and mobile with strong offense
- •Requires precise play, punishes mistakes hard
Boss Character
- •Life: 1300-1500, Attack: 115, Defense: 80-85
- •Super armor, unique mechanics
- •Intentionally strong for single-player
- •May be banned in competitive play
- •Multiple phases or install supers
Balance Checklist
For each character, verify:
- • Light attacks are plus on hit, minus on block
- • Heavy attacks are negative on block (punishable)
- • At least one reliable anti-air
- • At least one combo starting from a light attack
- • Throw damage is reasonable (120-160)
- • Maximum combo damage doesn't exceed 40% life without meter
- • Maximum combo damage doesn't exceed 60% life with full meter
- • No infinite combos possible
- • At least one safe pressure string
- • One reversal option (invincible move with meter cost)
- • Walk speed allows approaching and retreating
- • Jump arc is appropriate for the archetype
Hitbox Design for Balance
General Principles
- •Hitboxes should match the visual: Don't make invisible hitboxes
- •Hurtboxes extend slightly beyond visuals: Prevents "phantom" misses
- •Extend hitboxes on active frames only: Not during startup/recovery
- •Low attacks must hit crouching opponents: Hitbox should go below mid-height
- •Anti-airs need upward hitbox coverage: Extend above character head
- •Sweeps have low, wide hitboxes: Cover ground level
Hitbox Size by Move Type
- •Light attacks: Small hitboxes (30-40px range)
- •Medium attacks: Medium hitboxes (50-70px range)
- •Heavy attacks: Large hitboxes (70-100px range)
- •Special moves: Varies by design intent
- •Supers: Usually very generous hitboxes
System Mechanics for Balance
Universal Mechanics
These mechanics apply to all characters and create balance:
- •Throw tech: All throws should be techable (escapable)
- •Push block: Blocked attacks push attacker back
- •Burst/Combo break: Emergency escape from combos (costly)
- •Guard cancel: Spend meter to counter-attack while blocking
- •Recovery roll: Options after knockdown to avoid okizeme
Power Meter Design
Standard 3-bar system: - 1 bar = 1000 power - Max = 3000 power - Power gain from: hitting (0.7x damage), getting hit (0.6x damage), whiffing specials (small amount) - EX moves: 500-1000 power (enhanced specials) - Level 1 super: 1000 power - Level 3 super: 3000 power
Tips
- •Start with the shoto archetype as your baseline
- •Balance characters against each other, not against a theoretical ideal
- •Frame data is more important than raw damage numbers
- •Every character needs weaknesses -- a character good at everything is broken
- •Test with human players, not just AI
- •Small changes (1-2 frames, 5-10 damage) can have big impacts
- •Document your frame data in a spreadsheet for comparison
- •Playtest every character matchup
Reference Files
- •
references/frame-data-theory.md- Deep dive into frame data mechanics and formulas - •
references/damage-scaling.md- Damage scaling, guts, and comeback systems - •
references/hitbox-design-guide.md- Hitbox/hurtbox placement and sizing
Example Files
- •
examples/frame-data-spreadsheet.md- Template for documenting a character's full frame data - •
examples/balanced-hitdef-values.md- Balanced HitDef values for every attack type - •
examples/archetype-templates.md- Complete data/size/velocity/movement sections per archetype