[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -2,74 +2,161 @@
|
||||
id: wiki-2026-0508-상성-및-데미지-유형-unit-counters-damage
|
||||
title: "상성 및 데미지 유형(Unit Counters & Damage Profiles)"
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
aliases: [Unit Counters, Damage Profiles, RTS 상성, Rock-Paper-Scissors Combat]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
confidence_score: 0.9
|
||||
verification_status: applied
|
||||
tags: [game-design, rts, combat-system, balance]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: csharp
|
||||
framework: Unity-DOTS
|
||||
---
|
||||
|
||||
# [[상성 및 데미지 유형(Unit Counters & Damage Profiles)|상성 및 데미지 유형(Unit Counters & Damage Profiles)]]
|
||||
# 상성 및 데미지 유형 (Unit Counters & Damage Profiles)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
War Commander의 전투 시스템은 '가위바위보(Rock-Paper-Scissors)' 방식의 기본 상성 구조와 다양한 데미지 유형(Sustain, Burst, Area 등)을 기반으로 작동합니다. 각 유닛과 방어 타워는 특정 타겟에게 고효율(녹색) 또는 저효율(빨간색)의 피해를 입히는 고유의 데미지 프로필을 가집니다. 특히 2026년 업데이트 이후 방어 플랫폼의 특정 데미지 유형에 대한 저항성이 크게 강화되어, 단일 유닛이 아닌 복합적인 데미지 유형을 조합한 부대 운영이 필수적인 전략으로 자리 잡았습니다.
|
||||
## 매 한 줄
|
||||
> **"매 unit 의 매 다른 unit 에 대한 effective vs ineffective relationship"**. RTS 의 매 핵심 strategic depth — Dune II (1992) 의 light/heavy/infantry triad 에서 시작, StarCraft II 의 armor type × damage type matrix 로 evolution, 매 modern title (Stormgate 2026, AoE IV) 에서 매 attack-bonus 시스템으로 standardize.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **기본 상성 구조 (가위바위보 시스템)**
|
||||
* 게임 내 전투는 기본적으로 "항공기는 중장갑을 이기고, 중장갑은 경장갑을 이기며, 경장갑은 항공기를 이긴다"는 가위바위보 상성 원칙을 따릅니다 [1].
|
||||
* 유닛을 훈련하거나 정보를 확인할 때 제공되는 색상 아이콘을 통해 타겟에 대한 상성을 명확히 알 수 있습니다 [2, 3]. 짙은 녹색 아이콘은 대상에게 100%의 완전한 피해를 입힘을 의미하며, 노란색과 주황색은 절반 이하의 피해를, 빨간색은 타겟에게 피해를 거의 주지 못하거나 아예 공격할 수 없음을 나타냅니다 [2, 3].
|
||||
## 매 핵심
|
||||
|
||||
* **유닛 및 방어탑 별 주요 상성**
|
||||
* **차량 및 보병**: 총기를 장착한 차량은 보병을 상대로 강력하지만, 폭발성 무기를 장착한 차량은 보병에게 최소한의 피해만 입힙니다 [4]. 마찬가지로 RPG 보병은 보병 간 전투에 부적합하며, 대신 차량 파괴와 기지 공격에 효과적입니다 [5].
|
||||
* **항공기**: 개틀링 트럭(Gatling Trucks), 대공 전차(Flak Tanks), 챌린저(Challengers), 호버 전차(Hover Tanks)를 제외한 대부분의 지상 차량에 대해 압도적인 우위를 가집니다 [4].
|
||||
* **방어탑**: 기관총 포탑(Gun Turrets)은 보병과 항공기를 상대할 때 가장 효과적이지만 차량에는 매우 취약합니다 [6, 7]. 반면 박격포탑(Mortar Towers)은 차량과 다수의 적 유닛을 상대하는 데 탁월하지만, 항공기를 전혀 공격할 수 없습니다 [6, 7].
|
||||
### 매 두 축 — Damage Type × Armor Type
|
||||
- **Damage Type**: Normal, Concussive (anti-light), Explosive (anti-heavy), Piercing, Magic
|
||||
- **Armor Type**: Light, Medium, Heavy, Biological, Mechanical, Massive, Structure
|
||||
- **Multiplier matrix**: 0.5x (resist) ~ 1.5x (effective). 매 2.0x 의 X — 매 too swingy.
|
||||
- **Bonus damage** vs **base damage**: SC2 는 base + bonus_vs_<tag> 분리. Balance lever.
|
||||
|
||||
* **데미지 유형 및 방어 플랫폼 (2026년 전술 메타)**
|
||||
* 유닛들은 고유의 데미지 유형을 가집니다. 예를 들어, 워로드 오니마이트(Warlord Onymite)는 지속 피해(Sustain)를 입히며 [8], 2026년 3월 업데이트로 추가된 메트로노모스(Metronomos) 포탑은 폭발 피해(Burst)를 가합니다 [9, 10]. 레전더리 스코처(Legendary Scorcher)와 같은 유닛은 화염(Fire) 속성을 기반으로 광역 피해(Splash/Area)를 입힙니다 [11, 12].
|
||||
* 2026년 3월 연구(Research Drop) 업데이트로 특정 데미지 유형을 상쇄하는 방어 플랫폼들이 새롭게 도입되거나 개편되었습니다 [9, 13, 14]. 장갑 플랫폼(Armored Platform)은 지속(Sustain) 피해를 50% 감소시키고, 절연 플랫폼(Insulated Platform)은 광역(Area) 피해를, 강화 플랫폼(Reinforced Platform)은 폭발(Burst) 피해를 각각 50% 감소시킵니다 [9, 13, 14].
|
||||
* 이러한 전문화된 방어 시스템으로 인해, 공격자가 '지속 피해' 등 단일 유형의 유닛에만 의존할 경우 장갑 플랫폼 등에 의해 공격 효율이 절반으로 떨어지게 됩니다 [14, 15]. 따라서 방어막을 뚫기 위해서는 다양한 데미지 프로필이 섞인 혼성 부대(Mixed Platoons) 구성이 필수적입니다 [15].
|
||||
### 매 Counter Triangle 패턴
|
||||
- **Light counters Heavy counters Air counters Light** — cyclical, no dominant.
|
||||
- 매 transitive counter (A>B>C>A) 는 매 strategic decision 강제. Asymmetric counter 는 매 rush meta 유발.
|
||||
- **Soft counter** (1.3x): unit 합성 권장. **Hard counter** (2.0x+): pure composition 강요 — 매 일반적으로 avoid.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** 기지 방어 및 레이아웃(Base Defense & Layouts), 플래툰 구성 및 전술(Platoon Compositions & Tactics)
|
||||
- **Projects/Contexts:** [[March 2026 Research Drop|March 2026 Research Drop]], [[Arc-2-Technology|Arc 2 Technology]]
|
||||
- **Contradictions/Notes:** 소스에 포함된 Call of War 포럼의 데이터에 따르면 요격기(Interceptors)가 폭격기(Bombers)를 카운터하고 공격 폭격기(Attack Bombers)가 전차를 카운터한다는 상성 논의도 존재하지만, 이는 War Commander 게임 시스템이 아닌 Call of War의 독립적인 상성 구조입니다 [16]. War Commander 내부 전술에서는 헬파이어(Hellfire) 탱크와 같은 초장거리 공성 유닛이 대부분의 방어탑 상성을 무시하고 원거리 철거가 가능하지만, 체력이 매우 낮아 대공 및 방어 유닛의 보호 없이는 쉽게 파괴된다는 점을 유의해야 합니다 [17, 18].
|
||||
### 매 응용
|
||||
1. **Composition decision** — scout 으로 enemy comp 보고 counter unit 생산.
|
||||
2. **Map control** — terrain × range 의 unit type 배치 (high ground siege, choke point splash).
|
||||
3. **Tech tree pacing** — counter unit 의 tier gate (T2 anti-air, T3 anti-massive).
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-27*
|
||||
## 💻 패턴
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
### Damage type enum + armor matrix (Unity DOTS)
|
||||
```csharp
|
||||
public enum DamageType : byte { Normal, Light, Heavy, Pierce, Magic, Siege }
|
||||
public enum ArmorType : byte { Light, Medium, Heavy, Bio, Mech, Massive, Structure }
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
public struct DamageProfile : IComponentData {
|
||||
public DamageType type;
|
||||
public float baseDamage;
|
||||
public FixedList64Bytes<DamageBonus> bonuses;
|
||||
}
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
public struct DamageBonus { public ArmorType vs; public float bonus; }
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
public struct ArmorProfile : IComponentData {
|
||||
public ArmorType type;
|
||||
public float armorValue;
|
||||
}
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
public static float ResolveDamage(in DamageProfile dp, in ArmorProfile ap) {
|
||||
float bonus = 0f;
|
||||
for (int i = 0; i < dp.bonuses.Length; i++)
|
||||
if (dp.bonuses[i].vs == ap.type) { bonus = dp.bonuses[i].bonus; break; }
|
||||
return math.max(0.5f, (dp.baseDamage + bonus) - ap.armorValue);
|
||||
}
|
||||
```
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
### Counter chart (data-driven JSON)
|
||||
```json
|
||||
{
|
||||
"marauder": { "damage": 10, "type": "Heavy", "vs_armored": 10, "armor": "Bio" },
|
||||
"marine": { "damage": 6, "type": "Normal", "armor": "Bio" },
|
||||
"stalker": { "damage": 13, "type": "Pierce", "vs_armored": 5, "armor": "Mech" },
|
||||
"zealot": { "damage": 16, "type": "Normal", "armor": "Light" }
|
||||
}
|
||||
```
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
### ECS damage system (burst-compiled)
|
||||
```csharp
|
||||
[BurstCompile]
|
||||
public partial struct DamageResolveSystem : ISystem {
|
||||
public void OnUpdate(ref SystemState state) {
|
||||
var armorLookup = SystemAPI.GetComponentLookup<ArmorProfile>(true);
|
||||
new DamageJob { armorLookup = armorLookup }
|
||||
.ScheduleParallel();
|
||||
}
|
||||
}
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
[BurstCompile]
|
||||
partial struct DamageJob : IJobEntity {
|
||||
[ReadOnly] public ComponentLookup<ArmorProfile> armorLookup;
|
||||
void Execute(in DamageProfile dp, in TargetEntity target, ref Health hp) {
|
||||
if (!armorLookup.TryGetComponent(target.value, out var ap)) return;
|
||||
hp.current -= ResolveDamage(dp, ap);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
### Splash 응용 — counter via AoE shape
|
||||
```csharp
|
||||
public struct SplashShape {
|
||||
public float innerRadius; // 100% damage
|
||||
public float outerRadius; // 25% damage
|
||||
public bool linear; // siege tank line vs colossus disc
|
||||
}
|
||||
```
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
### Balance simulation harness
|
||||
```python
|
||||
import numpy as np
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
# armies: list of (count, dps_vs_type_dict, hp, armor_type)
|
||||
def simulate(army_a, army_b, dt=0.1):
|
||||
while alive(army_a) and alive(army_b):
|
||||
damage_a_to_b = sum(c * dps[b_armor] for c, dps, _, _ in army_a for b_armor in types_in(army_b))
|
||||
# ... apply to softest target first (focus fire heuristic)
|
||||
tick(army_b, damage_a_to_b * dt)
|
||||
tick(army_a, damage_b_to_a * dt)
|
||||
return winner_margin(army_a, army_b)
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| Symmetric RTS (SC2-like) | Soft counter matrix, 1.3-1.5x multiplier |
|
||||
| Asymmetric (faction-unique units) | Per-faction counter chart, identity > balance |
|
||||
| MOBA-style hero | Stat-based counters (mobility, range, burst) — no explicit type |
|
||||
| Auto-battler (TFT) | Trait synergy + damage type secondary |
|
||||
| Tower defense | Armor-color hard counter (red = magic only) acceptable |
|
||||
|
||||
**기본값**: SC2-style — Light/Armored/Massive armor tag + soft 1.3-1.5x bonus damage. 매 readable + balanceable.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[RTS-Game-Design]] · [[Combat-System-Design]]
|
||||
- 변형: [[유닛 상성(Unit Counters)]] · [[Asymmetric-Faction-Design]]
|
||||
- 응용: [[Tech_Tree_Design]] · [[Composition-Strategy-AI]] · [[Splash_Damage]]
|
||||
- Adjacent: [[Game-Balance-Tuning]] · [[Rock-Paper-Scissors-Mechanic]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: damage matrix 의 first draft, balance hypothesis ("if zergling +1 damage, what changes"), counter chart 의 markdown 화.
|
||||
**언제 X**: 매 actual playtested numbers — LLM 의 pure speculation. Sim harness + telemetry 가 ground truth.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **Hard counter only (2x+)**: composition 강요 → boring "scout-and-react" gameplay.
|
||||
- **Hidden multipliers**: damage tooltip 에 안 보이면 매 player 의 frustration.
|
||||
- **Symmetric mirror (모든 unit 의 동일 multiplier)**: counter 의 의미 X.
|
||||
- **Too many damage types (8+)**: cognitive overload. 4-5 가 sweet spot.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Blizzard SC2 design archives, Stormgate 2026 design blog, Sirlin "Playing to Win").
|
||||
- 중복 candidate: [[유닛 상성(Unit Counters)]] — 매 같은 folder 에 duplicate. 매 future merge 의 candidate.
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — RTS counter system + Unity DOTS damage resolution patterns |
|
||||
|
||||
Reference in New Issue
Block a user