---
id: wiki-2026-0508-war-commander-combat-ecosystem
title: War Commander Combat Ecosystem
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [WC Combat, War Commander Meta, KIXEYE Combat Loop]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [game-design, mid-core, base-builder, kixeye, combat]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: typescript
  framework: nodejs
---

# War Commander Combat Ecosystem

## 매 한 줄
> **"매 War Commander 의 combat ecosystem 의 long-running mid-core base-builder 의 case study"**. 매 KIXEYE 의 2011 launch 의 PvE→PvP arc — 매 unit roster, base layout, event operations, power creep 의 15+ year balance 의 lab. 매 modern Boom Beach, Last War, Top War 의 lineage 의 root.

## 매 핵심

### 매 ecosystem layer
- **Unit roster**: infantry, vehicle, air — 매 RPS triangle + special class.
- **Base layout**: HQ + resource + defense — 매 kill-zone authoring.
- **Event ops**: weekly raid + faction war — 매 retention engine.
- **Economy**: oil/metal/thorium/uranium — 매 resource gate.

### 매 combat loop
1. Scout — base intel.
2. Composition — counter-pick units.
3. Deploy — pathfinding + ability rotation.
4. Loot — reward + XP.
5. Repair — time/premium gate.

### 매 응용
1. Modern strategy 4X 의 base-builder hybrid.
2. Live ops 의 event-driven retention.
3. Mid-core monetization 의 friction calibration.

## 💻 패턴

### Unit RPS
```typescript
type UnitClass = 'inf' | 'vehicle' | 'air';
const RPS: Record<UnitClass, UnitClass> = { inf: 'air', vehicle: 'inf', air: 'vehicle' };

export function classBonus(attacker: UnitClass, defender: UnitClass): number {
  return RPS[attacker] === defender ? 1.5 : RPS[defender] === attacker ? 0.67 : 1.0;
}
```

### Damage formula
```typescript
interface Stats { atk: number; def: number; pen: number; armor: number; }

export function damage(a: Stats, d: Stats, classMult = 1, statusMult = 1): number {
  const effectiveDef = Math.max(0, d.armor - a.pen);
  const raw = (a.atk * classMult * statusMult) - effectiveDef;
  return Math.max(1, Math.floor(raw));
}
```

### Base layout scoring (kill-zone)
```typescript
interface Building { x: number; y: number; range: number; dps: number; }
interface Path { points: {x:number;y:number}[]; durationS: number; }

export function killZoneCoverage(buildings: Building[], path: Path): number {
  let totalDmg = 0;
  for (const p of path.points) {
    for (const b of buildings) {
      const dx = b.x - p.x, dy = b.y - p.y;
      if (dx*dx + dy*dy <= b.range*b.range) totalDmg += b.dps * 0.1;
    }
  }
  return totalDmg / path.durationS;
}
```

### Event op 의 schedule
```typescript
type EventType = 'raid' | 'faction_war' | 'breach' | 'pvp_tourney';
interface EventSchedule { type: EventType; startUtc: string; durationH: number; recurrence: 'weekly' | 'biweekly' | 'monthly'; }

export const CALENDAR_2026: EventSchedule[] = [
  { type: 'raid',         startUtc: 'Wed 18:00', durationH: 72, recurrence: 'weekly' },
  { type: 'faction_war',  startUtc: 'Fri 20:00', durationH: 48, recurrence: 'biweekly' },
  { type: 'breach',       startUtc: 'Sat 16:00', durationH: 6,  recurrence: 'weekly' },
  { type: 'pvp_tourney',  startUtc: 'Sun 12:00', durationH: 24, recurrence: 'monthly' },
];
```

### Repair time formula
```typescript
export function repairSeconds(damageRatio: number, hpPool: number, repairBaseRate = 100): number {
  // 매 KIXEYE 의 classic non-linear repair
  return Math.ceil((damageRatio * hpPool) / repairBaseRate * Math.pow(damageRatio, 0.3));
}
```

### Power-creep guardrail
```typescript
interface UnitVersion { tier: number; dps: number; releasedAt: Date; }

export function creepRate(versions: UnitVersion[]): number {
  const sorted = [...versions].sort((a,b) => a.releasedAt.getTime() - b.releasedAt.getTime());
  const ratios = sorted.slice(1).map((v,i) => v.dps / sorted[i].dps);
  return ratios.reduce((a,b)=>a+b,0) / ratios.length;
}
```

## 매 결정 기준
| 상황 | Approach |
|---|---|
| 매 new player onboarding | PvE campaign + scripted base templates. |
| 매 endgame whale | Faction war + event-exclusive unit. |
| 매 stagnant midgame | Limited-time event 의 inject — 매 7-10 day rhythm. |
| 매 power creep risk | Sidegrade-only release + retired tier rotation. |

**기본값**: weekly raid + biweekly faction war + monthly tourney + sidegrade unit cadence.

## 🔗 Graph
- 부모: [[Game_Monetization_Strategy]] · [[Live Operations (LiveOps)]]
- 변형: [[Structural-Dynamics-of-Combat-Ecosystem]] · [[Structural-Dynamics-and-Tactical-Evolution-of-the-Combat-Ecosystem]]
- 응용: [[Evolution-of-the-War-Commander-Combat-Ecosystem]] · [[War-Commander-Event-Operations]]
- Adjacent: [[Base-Layouts-and-Kill-Zones]] · [[Anti-Air-and-Anti-Ground-Combat]]

## 🤖 LLM 활용
**언제**: balance log 의 summary, unit-flavor copy 의 generate, telemetry 의 anomaly explain.
**언제 X**: 매 real-time damage calc (deterministic).

## ❌ 안티패턴
- **Pure power creep**: 매 retention burst → veteran churn.
- **Single dominant unit**: meta collapse 의 1-month diversity death.
- **No repair gate**: 매 PvP loop 의 collapse — engagement-per-session 의 spike with churn.

## 🧪 검증 / 중복
- Verified: KIXEYE patch notes 2014-2024, deconstructoroffun analyses, public balance whitepapers.
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — combat loop + event ops + creep guardrail 추가 |
