Files
2nd/10_Wiki/Topics/Game_Design/Structural-Dynamics-and-Tactical-Evolution-of-the-Combat-Ecosystem.md
T
2026-05-10 22:08:15 +09:00

5.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-structural-dynamics-and-tactical Structural Dynamics and Tactical Evolution of the Combat Ecosystem 10_Wiki/Topics verified self
Tactical Evolution
Meta Evolution
Combat Tactical Dynamics
none A 0.9 applied
game-design
meta
tactics
evolution
balance
2026-05-10 pending
language framework
typescript nodejs

Structural Dynamics and Tactical Evolution of the Combat Ecosystem

매 한 줄

"매 tactical layer 의 time-axis evolution 의 분석". 매 Structural-Dynamics-of-Combat-Ecosystem 의 4-layer model 의 temporal extension — 매 patch cadence, player-discovery curve, esports refinement, content drop 의 cumulative effect 의 modeling. 매 multi-year title 의 living balance 의 frame.

매 핵심

매 4 axis (temporal)

  1. Patch axis: 매 dev-driven adjustment 의 timeline.
  2. Discovery axis: 매 player community 의 strategy uncover.
  3. Esports axis: 매 pro scene 의 refinement.
  4. Content axis: 매 new unit/map 의 drop.

매 evolution phase

  • Launch: 매 dev-intended meta — fragile equilibrium.
  • Discovery: 매 community 의 tech 의 surface — 1st meta shift.
  • Refinement: 매 pro 의 micro 의 polish — 매 meta convergence.
  • Stagnation: 매 dominant strategy 의 lock-in — 매 churn risk.
  • Refresh: 매 patch/content 의 inject — 매 cycle restart.

매 응용

  1. Patch cadence design — 매 stagnation 의 prevention.
  2. Esports league season planning.
  3. Telemetry-driven predict-vs-actual meta delta.

💻 패턴

Meta state tracker

type MetaPhase = 'launch' | 'discovery' | 'refinement' | 'stagnation' | 'refresh';

interface MetaSnapshot { date: string; topUnits: string[]; diversity: number; phase: MetaPhase; }

export function classifyPhase(snapshot: MetaSnapshot, prev: MetaSnapshot[]): MetaPhase {
  if (prev.length < 2) return 'launch';
  const trend = snapshot.diversity - prev.at(-1)!.diversity;
  if (snapshot.diversity < 0.3 && Math.abs(trend) < 0.02) return 'stagnation';
  if (trend > 0.1) return 'refresh';
  if (snapshot.diversity > 0.6) return 'discovery';
  return 'refinement';
}

Diversity index (Shannon)

export function diversityIndex(pickCounts: Record<string, number>): number {
  const total = Object.values(pickCounts).reduce((a, b) => a + b, 0);
  if (total === 0) return 0;
  return -Object.values(pickCounts).reduce((s, c) => {
    const p = c / total;
    return p > 0 ? s + p * Math.log2(p) : s;
  }, 0);
}

Discovery rate model

// 매 logistic curve 의 strategy discovery
export function discoveryProgress(daysSinceLaunch: number, complexity: number): number {
  const k = 0.05 / complexity; // higher complexity → slower
  return 1 / (1 + Math.exp(-k * (daysSinceLaunch - 30 * complexity)));
}

Patch impact decay

export function patchDecay(daysSincePatch: number, halfLifeDays = 14): number {
  return Math.pow(0.5, daysSincePatch / halfLifeDays);
}

Esports vs ladder delta

interface PickStats { ladder: Record<string, number>; pro: Record<string, number>; }

export function esportsDelta(p: PickStats): { unit: string; delta: number }[] {
  const all = new Set([...Object.keys(p.ladder), ...Object.keys(p.pro)]);
  return [...all].map(u => ({
    unit: u,
    delta: (p.pro[u] ?? 0) - (p.ladder[u] ?? 0),
  })).sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta));
}

Content drop scheduler

interface ContentPlan { name: string; date: string; type: 'unit' | 'map' | 'mode'; expectedDiversityDelta: number; }

export function planNextDrop(currentDiversity: number, history: ContentPlan[]): ContentPlan | null {
  if (currentDiversity > 0.5) return null; // healthy
  const last = history.at(-1);
  if (last && Date.now() - new Date(last.date).getTime() < 30 * 86400_000) return null;
  return { name: 'TBD', date: new Date().toISOString(), type: 'unit', expectedDiversityDelta: 0.15 };
}

매 결정 기준

상황 Approach
매 launch phase Light-touch patches — let discovery breathe.
매 stagnation 의 detected Major content drop or rework patch.
매 esports vs ladder split Mode-specific balance (esp. fast/slow).
매 mature title (5+ yr) Focus on QOL + cosmetic content over balance churn.

기본값: monthly diversity check + quarterly content drop + biweekly micro-patch.

🔗 Graph

🤖 LLM 활용

언제: meta narrative 의 summary, content roadmap 의 brainstorm, patch announcement 의 draft. 언제 X: 매 telemetry pipeline (Shannon entropy 의 deterministic).

안티패턴

  • Patch fatigue: 매 weekly major change — pro/community whiplash.
  • No diversity metric: 매 stagnation 의 invisible.
  • Ignoring esports delta: 매 ladder-vs-pro 의 split-meta blind.
  • Content as balance crutch: 매 power creep 의 inevitable.

🧪 검증 / 중복

  • Verified: SC2 LotV balance history, Smash Ultimate community tier list evolution, DOTA 2 7.x patches.
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — temporal 4-axis + Shannon diversity 추가