Skip to content

Balancing Titans

Create balanced titan encounters that challenge players without feeling unfair.

1. Telegraphed Danger

  • All major damage must be telegraphed
  • Telegraph duration matches attack power
  • Visual clarity is paramount

2. Counterplay Windows

  • Powerful attacks create vulnerability
  • Players can punish greedy titans
  • Skill expression through timing

3. Progressive Difficulty

  • Phase 1: Tutorial (learn mechanics)
  • Phase 2: Challenge (master mechanics)
  • Phase 3: Test (execute perfectly)

Target DPS: 3-5 damage per second

Quick Attacks (2-4s cooldown):

"quick_slash": {
"cooldown": "60", // 3 seconds
"damage": "10.0" // 3.33 DPS
}

Medium Attacks (6-10s cooldown):

"charged_blast": {
"cooldown": "160", // 8 seconds
"damage": "28.0" // 3.5 DPS
}

Ultimate Attacks (20-30s cooldown):

"ultimate_explosion": {
"cooldown": "500", // 25 seconds
"damage": "80.0" // 3.2 DPS
}

Base Damage Adjustments:

Physical (1.0x baseline):

{"damage": "20.0", "damageType": "PHYSICAL"}

Fire (0.9x - DoT compensates):

{"damage": "18.0", "damageType": "FIRE"}
// + 3-5 seconds of fire damage

Electric (1.0x - stun/knockback):

{"damage": "20.0", "damageType": "ELECTRIC"}
// + brief stun

Explosion (1.1x - high knockback):

{"damage": "22.0", "damageType": "EXPLOSION", "knockback": "2.0"}

Magic (1.0x - ignores armor):

{"damage": "20.0", "damageType": "MAGIC"}
// Effective against tanky players
telegraph_duration = base_duration + (obb_size / 10)

Base Durations by Type:

  • WARNING: 1.0s base
  • DANGER: 1.5s base
  • CRITICAL: 2.5s base

Size Scaling Examples:

Small AOE (5 block radius):

WARNING: 1.0 + (5/10) = 1.5s
DANGER: 1.5 + (5/10) = 2.0s

Large AOE (12 block radius):

DANGER: 1.5 + (12/10) = 2.7s
CRITICAL: 2.5 + (12/10) = 3.7s

WARNING (Yellow):

  • Damage: 8-15
  • Size: Small-Medium (3-6 blocks)
  • Frequency: High (2-4s cooldown)
  • Phases: All phases

DANGER (Orange):

  • Damage: 15-30
  • Size: Medium-Large (6-10 blocks)
  • Frequency: Medium (6-12s cooldown)
  • Phases: 2-3

CRITICAL (Red):

  • Damage: 30-60+
  • Size: Large-Massive (10-15+ blocks)
  • Frequency: Low (20-40s cooldown)
  • Phases: 3 only (or enrage)

RECOVERING (1.3x damage):

Light Attacks:

{
"damage": "12.0",
"vulnerability": {"state": "RECOVERING", "duration": "2500"}
// 2.5s window, quick punish
}

Medium Attacks:

{
"damage": "22.0",
"vulnerability": {"state": "RECOVERING", "duration": "4000"}
// 4s window, decent punish
}

EXHAUSTED (1.8x damage):

Heavy Attacks:

{
"damage": "35.0",
"vulnerability": {"state": "EXHAUSTED", "duration": "5000"}
// 5s window, good punish
}

Ultimate Attacks:

{
"damage": "55.0",
"vulnerability": {"state": "EXHAUSTED", "duration": "8000"}
// 8s window, huge punish
}

Phase 1 (100% HP):

  • 20% of attacks → RECOVERING
  • 5% of attacks → EXHAUSTED

Phase 2 (66% HP):

  • 40% of attacks → RECOVERING
  • 15% of attacks → EXHAUSTED

Phase 3 (33% HP):

  • 60% of attacks → RECOVERING
  • 25% of attacks → EXHAUSTED

Standard 3-Phase Fight:

{
"phases": [
{"healthThreshold": 1.0}, // Phase 1: 100-67%
{"healthThreshold": 0.66}, // Phase 2: 66-34%
{"healthThreshold": 0.33} // Phase 3: 33-0%
]
}

Extended 4-Phase Fight:

{
"phases": [
{"healthThreshold": 1.0}, // 100-75%
{"healthThreshold": 0.75}, // 75-50%
{"healthThreshold": 0.5}, // 50-25%
{"healthThreshold": 0.25} // 25-0%
]
}

Speed Scaling:

// Phase 1
{"speedModifier": 1.0} // Baseline
// Phase 2
{"speedModifier": 1.15} // +15% faster
// Phase 3
{"speedModifier": 1.35} // +35% faster

Damage Scaling:

// Phase 1
{"damageModifier": 1.0} // Baseline
// Phase 2
{"damageModifier": 1.2} // +20% damage
// Phase 3
{"damageModifier": 1.4} // +40% damage

Combined Scaling:

{
"phases": [
{
"healthThreshold": 1.0,
"speedModifier": 1.0,
"damageModifier": 1.0,
"scaleModifier": 1.0
},
{
"healthThreshold": 0.66,
"speedModifier": 1.15,
"damageModifier": 1.2,
"scaleModifier": 1.05
},
{
"healthThreshold": 0.33,
"speedModifier": 1.35,
"damageModifier": 1.4,
"scaleModifier": 1.1
}
]
}

Good Move Pool (8-12 moves):

  • 3-4 Basic attacks (spam-safe, low cooldown)
  • 2-3 Special attacks (medium cooldown, unique mechanics)
  • 1-2 AOE attacks (punish clumping)
  • 1-2 Ultimate attacks (high cooldown, major threat)

Example Charizard Move Pool:

{
"moves": {
// Basic (Phase 1-3)
"slash": {"cooldown": "60", "damage": "10.0"},
"bite": {"cooldown": "80", "damage": "12.0"},
// Special (Phase 2-3)
"flamethrower": {"cooldown": "160", "damage": "20.0"},
"wing_attack": {"cooldown": "140", "damage": "18.0"},
"dragon_claw": {"cooldown": "180", "damage": "24.0"},
// AOE (Phase 2-3)
"fire_spin": {"cooldown": "200", "damage": "22.0"},
"heat_wave": {"cooldown": "220", "damage": "25.0"},
// Ultimate (Phase 3)
"blast_burn": {"cooldown": "500", "damage": "50.0"}
}
}

Baseline Weight: 1.0

Higher Weight (more frequent):

"basic_attack": {
"weight": 1.5, // 50% more likely
"cooldown": "60"
}

Lower Weight (less frequent):

"ultimate": {
"weight": 0.5, // 50% less likely
"cooldown": "500"
}

Conditional Weights:

"charge_attack": {
"weight": 1.0,
"condition": "q.target_distance > 8.0 ? 2.0 : 0.5"
// 2x weight if far, 0.5x if close
}

Phase 1 Only:

"tutorial_slam": {
"minHealthPercent": 0.66,
"maxHealthPercent": 1.0
}

Phase 2-3:

"advanced_combo": {
"minHealthPercent": 0.0,
"maxHealthPercent": 0.66
}

Phase 3 Only:

"desperate_ultimate": {
"minHealthPercent": 0.0,
"maxHealthPercent": 0.33
}

Solo (1 player):

{
"damageModifier": 0.8, // -20% damage
"speedModifier": 0.9, // -10% speed
"healthModifier": 0.7 // -30% HP
}

Small Group (2-3 players):

{
"damageModifier": 1.0, // Baseline
"speedModifier": 1.0,
"healthModifier": 1.0
}

Large Group (4-6 players):

{
"damageModifier": 1.2, // +20% damage
"speedModifier": 1.1, // +10% speed
"healthModifier": 1.5 // +50% HP
}

Implementation:

{
"type": "molang_script",
"script": "var playerCount = q.entities_in_range(30.0); q.set_max_health(q.user_max_health * q.lerp(0.7, 1.5, (playerCount - 1) / 5.0));"
}

Solo Test:

  • Can 1 skilled player win?
  • Time to kill: 5-10 minutes
  • Death count: 2-4 attempts acceptable

Group Test (3 players):

  • Can average players win?
  • Time to kill: 3-6 minutes
  • Death count: 1-2 attempts

Hardcore Test (6 players):

  • Still challenging?
  • Time to kill: 2-4 minutes
  • Requires coordination

Damage Tuning:

  • No one-shot attacks (except clearly telegraphed ultimates)
  • Players can recover from 1-2 hits
  • Chip damage forces healing/food
  • Ultimate attacks feel impactful but dodgeable

Telegraph Clarity:

  • All dangerous attacks telegraphed
  • Colors match threat level
  • Telegraph duration feels fair
  • OBB matches visual feedback

Phase Transitions:

  • Clear visual/audio feedback
  • Brief invulnerability or pause
  • New mechanics introduced gradually
  • Difficulty curve feels smooth

Attack Variety:

  • No spam attacks (cooldowns enforced)
  • Mix of melee/ranged/AOE
  • Conditional attacks trigger appropriately
  • Ultimate attacks feel special

Symptoms:

  • Players barely take damage
  • Fight over in <2 minutes
  • No deaths

Fixes:

  1. Increase damage by 20-30%
  2. Reduce telegraph duration by 0.5s
  3. Increase attack frequency (lower cooldowns)
  4. Add more aggressive AI states

Symptoms:

  • Players die instantly
  • Can’t see telegraphs in time
  • Unavoidable damage

Fixes:

  1. Reduce damage by 20-30%
  2. Increase telegraph duration by 0.5-1.0s
  3. Add more vulnerability windows
  4. Reduce attack frequency

Symptoms:

  • “Cheap” deaths
  • No counterplay
  • Tedious rather than challenging

Fixes:

  1. Always telegraph major damage
  2. Add vulnerability after big attacks
  3. Ensure OBB matches visuals
  4. Reduce unavoidable chip damage

Symptoms:

  • Same attack over and over
  • Predictable pattern
  • Boring fight

Fixes:

  1. Add more moves to pool
  2. Adjust move weights
  3. Add conditional moves
  4. Create dynamic state machine

Target Audience: 2-4 players, intermediate skill

Stats:

{
"level": 70,
"maxHealth": 800,
"baseSpeed": 1.0,
"baseDamage": 1.0
}

Phase 1 (800-533 HP):

{
"healthThreshold": 1.0,
"speedModifier": 1.0,
"damageModifier": 1.0,
"moves": [
"confusion", // 8 damage, 3s cooldown, WARNING
"psychic", // 15 damage, 8s cooldown, DANGER
"barrier" // Damage immunity, 20s cooldown
]
}

Phase 2 (533-267 HP):

{
"healthThreshold": 0.66,
"speedModifier": 1.2,
"damageModifier": 1.2,
"moves": [
"psychic", // 18 damage (1.2x), 8s cooldown
"psycho_cut", // 22 damage, 10s cooldown, DANGER
"teleport_strike", // 25 damage, 12s cooldown, DANGER
"psychic_field" // 15 damage, DoT, 18s cooldown
]
}

Phase 3 (267-0 HP):

{
"healthThreshold": 0.33,
"speedModifier": 1.4,
"damageModifier": 1.4,
"moves": [
"psycho_cut", // 31 damage (1.4x), 10s cooldown
"teleport_strike", // 35 damage, 12s cooldown
"psychic_storm", // 40 damage, AOE, 20s cooldown, CRITICAL
"psycho_break" // 60 damage, ultimate, 30s cooldown, CRITICAL
]
}

Expected Fight Duration: 4-6 minutes Expected Deaths: 1-2 before victory DPS Check: ~2.5 damage per second output required

Modifiers:

{
"damageModifier": 0.7, // -30% damage
"speedModifier": 0.8, // -20% speed
"healthModifier": 0.8, // -20% HP
"telegraphBonus": 0.5 // +0.5s all telegraphs
}

Use For: Casual players, learning fights

Modifiers:

{
"damageModifier": 1.0,
"speedModifier": 1.0,
"healthModifier": 1.0
}

Use For: Standard difficulty

Modifiers:

{
"damageModifier": 1.3, // +30% damage
"speedModifier": 1.2, // +20% speed
"healthModifier": 1.4, // +40% HP
"telegraphReduction": -0.3 // -0.3s all telegraphs
}

Use For: Experienced players, challenge runs

Modifiers:

{
"damageModifier": 1.6,
"speedModifier": 1.4,
"healthModifier": 2.0,
"telegraphReduction": -0.5,
"vulnerabilityReduction": 0.5 // Half vulnerability duration
}

Use For: Expert players only


Create challenging, fair, and fun boss encounters! ⚖️