Files
2nd/10_Wiki/Topic_General/Game_Design/Platform-Specialization.md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +09:00

8.7 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-platform-specialization Platform Specialization 10_Wiki/Topics verified self
Platform Specialization
Combat Platform Roles
Unit Specialization
none A 0.9 applied
game-design
combat-design
war-commander
rts
role-design
2026-05-10 pending
language framework
csharp 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

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

[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)

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

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)

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

🤖 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