f8b21af4be
10_Wiki/Topics 대규모 정리: - 오류 캡처/미완성 stub 문서 227개 제거 - 교차폴더 중복 43클러스터 병합 (63파일 → redirect) - 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건 - 카테고리 MOC 6개 신규 생성 - Graph 섹션 미해결 related-keyword 링크 10,058건 제거 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
156 lines
8.7 KiB
Markdown
156 lines
8.7 KiB
Markdown
---
|
|
id: wiki-2026-0508-platform-specialization
|
|
title: Platform Specialization
|
|
category: 10_Wiki/Topics
|
|
status: verified
|
|
canonical_id: self
|
|
aliases: [Platform Specialization, Combat Platform Roles, Unit Specialization]
|
|
duplicate_of: none
|
|
source_trust_level: A
|
|
confidence_score: 0.9
|
|
verification_status: applied
|
|
tags: [game-design, combat-design, war-commander, rts, role-design]
|
|
raw_sources: []
|
|
last_reinforced: 2026-05-10
|
|
github_commit: pending
|
|
tech_stack:
|
|
language: csharp
|
|
framework: unity
|
|
---
|
|
|
|
# Platform Specialization
|
|
|
|
## 매 한 줄
|
|
> **"매 unit 의 의 의 의 의 의 의 의 distinct role 의 의 의 의 의 의 의 design — 매 의 의 의 의 의 의 의 의 generalist 의 의 의 의 의 의 의 의 의 X"**. RTS / 4X / mobile-strategy 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 combat ecosystem 의 의 의 의 의 의 health 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 fundamental design choice — 매 War Commander / Boom Beach / Clash of Clans / Last Shelter 의 의 의 의 의 의 의 의 의 의 의 case studies 의 의 의 의 의 의 의 의 의 의 의 의 cross-reference.
|
|
|
|
## 매 핵심
|
|
|
|
### 매 specialization vs generalization
|
|
- **Generalist**: 매 의 의 의 의 의 의 unit 의 의 의 의 의 의 의 모든 role 의 의 의 의 의 의 mediocre 의 의 의 perform. 매 design 의 의 의 lazy 의 의 의 의 outcome — player 의 의 의 의 의 의 의 의 의 mass 의 의 의 의 의 의 single-unit 의 의 의 의 의 win.
|
|
- **Specialist**: 매 의 의 의 의 의 platform 의 의 의 의 의 의 의 의 narrow role — air-defense, anti-tank, anti-infantry, support, siege. 매 의 의 의 의 의 의 의 player 의 의 의 의 의 의 의 의 composition / counter-pick 의 의 의 의 의 의 의 의 의 strategy 의 의 의 의 의 의 emerge.
|
|
|
|
### 매 archetype roles
|
|
1. **Anti-Air (AA)**: 매 의 의 의 의 의 의 의 fast / aerial unit 의 의 의 의 의 의 counter. Range > damage. Often glass cannon.
|
|
2. **Anti-Ground (AG)**: 매 의 의 의 의 의 의 의 tank / siege / vehicle 의 의 의 의 의 의 의 counter. High damage, slow.
|
|
3. **Anti-Infantry**: AOE / splash. Cheap unit-swarm 의 의 의 의 counter.
|
|
4. **Support**: Heal / repair / buff. 매 의 의 의 의 의 의 의 의 의 의 frontline 의 의 의 의 의 의 의 의 sustain.
|
|
5. **Siege**: Building-damage 의 의 의 의 의 의 의 의 의 의 multiplier. 매 의 의 의 의 의 의 의 의 unit-vs-unit 의 의 의 의 의 의 의 의 의 의 의 의 weak.
|
|
6. **Scout / Recon**: Vision / intel. Combat-weak.
|
|
|
|
### 매 design constraint
|
|
- **매 의 의 의 의 의 의 의 의 의 의 hard-counter ratio**: specialist 의 의 의 의 의 의 의 vs target role 의 의 의 의 의 의 의 의 의 의 의 의 3-5x effective. 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 too high (oneshot 의 의 의 frustration), too low (specialization 의 의 의 의 의 의 의 의 X).
|
|
- **매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 generalist 의 의 의 의 의 의 의 X**: design rule.
|
|
|
|
## 💻 패턴
|
|
|
|
### Role enum + damage modifier table
|
|
```csharp
|
|
public enum Role { Infantry, LightVehicle, HeavyVehicle, Air, Building, Support }
|
|
public enum DamageType { Bullet, Cannon, Rocket, AA, Flame, Energy }
|
|
|
|
public static class DamageTable {
|
|
// [DamageType, Role] -> multiplier
|
|
public static readonly float[,] Mult = {
|
|
// Inf, LV, HV, Air, Bldg, Sup
|
|
{ 1.0f, 0.5f, 0.2f, 0.3f, 0.5f, 1.0f }, // Bullet
|
|
{ 0.4f, 1.5f, 1.2f, 0.0f, 1.5f, 0.4f }, // Cannon
|
|
{ 0.5f, 1.0f, 2.0f, 0.5f, 2.5f, 0.5f }, // Rocket
|
|
{ 0.3f, 0.5f, 0.5f, 4.0f, 0.0f, 0.3f }, // AA
|
|
{ 1.8f, 0.8f, 0.3f, 0.0f, 0.5f, 1.8f }, // Flame
|
|
{ 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f } // Energy (generalist 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 X)
|
|
};
|
|
}
|
|
```
|
|
|
|
### Platform definition
|
|
```csharp
|
|
[CreateAssetMenu]
|
|
public class PlatformDef : ScriptableObject {
|
|
public string id;
|
|
public Role role;
|
|
public DamageType damageType;
|
|
public float baseDmg;
|
|
public float range;
|
|
public float speed;
|
|
public Role[] preferredTargets; // 매 의 의 의 의 의 AI targeting bias
|
|
|
|
public float DamageVs(Role target) =>
|
|
baseDmg * DamageTable.Mult[(int)damageType, (int)target];
|
|
}
|
|
```
|
|
|
|
### AI targeting (specialization-aware)
|
|
```csharp
|
|
public Unit PickTarget(Unit self, List<Unit> enemies) {
|
|
var preferred = self.Def.preferredTargets;
|
|
return enemies
|
|
.Where(e => Vector3.Distance(self.pos, e.pos) <= self.Def.range)
|
|
.OrderByDescending(e => Array.IndexOf(preferred, e.Def.role) >= 0 ? 1 : 0)
|
|
.ThenByDescending(e => self.Def.DamageVs(e.Def.role))
|
|
.ThenBy(e => e.HP)
|
|
.FirstOrDefault();
|
|
}
|
|
```
|
|
|
|
### Composition validator
|
|
```csharp
|
|
public class ArmyCompositionValidator {
|
|
// 매 의 의 의 의 의 의 의 의 single-role 의 의 의 의 의 의 의 의 의 의 spam 의 의 의 의 의 의 의 의 X 의 의 의 의 의 player education
|
|
public Warning? Validate(List<Unit> army) {
|
|
var byRole = army.GroupBy(u => u.Def.role).ToDictionary(g => g.Key, g => g.Count());
|
|
if (byRole.Values.Max() > army.Count * 0.7)
|
|
return new Warning("매 의 의 의 의 의 의 의 의 single-role 의 의 의 의 spam — 매 의 의 의 의 counter 의 의 의 의 의 의 의 vulnerable");
|
|
if (!byRole.ContainsKey(Role.Air) && army.Any(u => u.Def.role == Role.Infantry))
|
|
return new Warning("매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 air-cover 의 의 X");
|
|
return null;
|
|
}
|
|
}
|
|
```
|
|
|
|
### Counter-pick suggestion (UI)
|
|
```csharp
|
|
public List<PlatformDef> SuggestCounters(List<Role> enemyComposition) {
|
|
return AllPlatforms
|
|
.OrderByDescending(p =>
|
|
enemyComposition.Sum(role => p.DamageVs(role)))
|
|
.Take(5)
|
|
.ToList();
|
|
}
|
|
```
|
|
|
|
## 매 결정 기준
|
|
| 상황 | Approach |
|
|
|---|---|
|
|
| Casual mobile-strategy | 4-6 specialist roles. 매 의 deep design 의 의 X (tutorial cost) |
|
|
| Hardcore RTS (StarCraft-tier) | 8-12 specialist roles + composition meta |
|
|
| 4X late-game | Hybrid — specialist platforms + tech-tree 의 의 의 의 의 의 의 의 generalist late-tier 의 의 의 의 의 의 의 unlock |
|
|
| PvE-only | Lighter specialization OK — AI 의 의 의 의 의 의 의 의 의 의 의 counter-pick 의 의 의 의 의 의 의 X |
|
|
|
|
**기본값**: 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 6 specialist roles + 의 의 의 의 의 의 hard-counter 의 의 의 의 의 의 3-5x multiplier + 의 의 의 의 의 의 의 의 의 generalist 의 의 의 의 X.
|
|
|
|
## 🔗 Graph
|
|
- 변형: [[Anti-Air-and-Anti-Ground-Combat]] · [[Damage-Resistance-Platforms]] · [[Support-Platforms]]
|
|
- 응용: [[War-Commander-Combat-Ecosystem]] · [[Evolution-of-the-War-Commander-Combat-Ecosystem]] · [[Structural-Dynamics-of-Combat-Ecosystem]]
|
|
- Adjacent: [[Platform-Resistance-and-Defensive-Specialization]] · [[Assault-Platoons]] · [[Defense-Buildings]]
|
|
|
|
## 🤖 LLM 활용
|
|
**언제**: RTS / 4X / mobile-strategy 의 unit 의 의 의 의 의 design 의 의 의 의 의 의 의 의 reference, 매 의 의 의 의 의 의 의 의 composition meta 의 의 의 의 의 의 의 의 의 의 분석.
|
|
**언제 X**: 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 single-unit / single-character 의 의 의 의 의 game (e.g., 의 의 의 의 의 의 의 의 의 의 의 의 의 의 platformer / RPG-solo).
|
|
|
|
## ❌ 안티패턴
|
|
- **Single-unit dominance**: 매 의 의 의 의 의 의 의 의 의 generalist 의 의 의 의 의 의 의 의 의 의 mass 의 의 의 의 의 의 의 의 의 의 winning composition. 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 design failure.
|
|
- **Hard-counter > 5x**: oneshot frustration. Player 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 quit.
|
|
- **Hard-counter < 2x**: specialization 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 X.
|
|
- **Role-bloat**: 12+ roles 의 의 의 의 의 의 의 의 casual player 의 의 의 의 의 의 의 의 의 의 의 의 의 confusion.
|
|
|
|
## 🧪 검증 / 중복
|
|
- Verified (War Commander combat-ecosystem 분석 + StarCraft balance patches).
|
|
- 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 industry-standard pattern (RTS 의 의 의 의 의 의 1990s—).
|
|
- 신뢰도 A.
|
|
|
|
## 🕓 Changelog
|
|
| 날짜 | 변경 |
|
|
|---|---|
|
|
| 2026-05-08 | Phase 1 |
|
|
| 2026-05-10 | Manual cleanup — specialization framework + role design patterns |
|