전략 대항Strategy

구성 → 전투 → 계산 → 성장

무엇인가

전투 전에 라인업과 숫자를 준비하고, 그것들이 부딪혀 결과가 나오는 것을 지켜봅니다. Clash Royale, Plants vs. Zombies, Slay the Spire 모두 이 구조를 공유합니다.

어떻게 플레이하는가

준비 단계에서 구성을 거듭 저울질합니다. 전투가 시작되면 숨을 죽이고 전개를 지켜봅니다. 타워 디펜스에서는 웨이브 중에도 계속 배치하고 보수합니다. 이기면 정당하게 느껴지고, 지면 즉시 다시 구성해 재도전합니다.

왜 배워야 하는가

'전략으로서의 숫자'의 모델입니다. 전투를 구성과 정산으로 추상화하면, 깊이는 전투 전에 내린 선택 속에 숨습니다.

코어 루프
유닛 → 스탯 → 전투 → 보상
핵심 추상화
유닛 · 스탯 · 전투 · 보상 · 상성 관계

바로 플레이 가능한 데모

전략 대항 Demo
게임 불러오는 중…
규칙 힌트
팀/덱 구성 → 전투 진입 → 행동 선택 → 스탯과 효과 정산 → 승패 판정 → 보상과 성장 수령
개념

전략 성장 모델은 유닛, 스탯, 스킬, 전투 규칙을 수치화 가능한 전투 시스템으로 통합합니다. 플레이어는 팀을 구성하고, 스킬을 선택하고, 데미지와 생존 확률을 계산하며 AI나 다른 플레이어와 깊은 대결을 벌입니다. 하부 수치 모델은 체력, 공격력, 방어율, 속도, 상태, 특수 효과가 상호작용해 예측 가능하면서도 무작위적인 결과를 만듭니다. 핵심 설계 원칙은 '보이는 트레이드오프'입니다. 모든 구성과 행동에는 명확한 비용과 이득이 있어, 플레이어는 자원 배분, 리스크 평가, 상대 예측을 저울질해야 합니다.

역할

미드코어 전략과 RPG 게임에 적합하며, 전투 전 구성과 전투 중 의사결정의 깊이를 강조합니다.

의의

전략 성장 모델을 마스터한다는 것은 스탯 설계, 전투 공식, 상성 관계, 성장 곡선을 이해한다는 뜻입니다. RPG, 카드 게임, 타워 디펜스, 오토 체스 같은 미드코어 게임 설계의 토대이며, '행동'을 '사고'로 바꾸는 열쇠입니다.

핵심 게임플레이 시스템 분석

코어 루프 흐름도
코어 루프 흐름도
3.1 해결하는 문제
  • 제한된 유닛과 스킬 세트로 풍부한 전략 공간을 만듭니다.
  • 수치 성장과 해금으로 장기 몰입을 유지합니다.
  • 상성과 무작위성으로 반복되는 전투를 신선하게 유지합니다.
3.2 학습 목표
  • 스탯 모델과 전투 공식(데미지, 방어, 속도 등)을 설계한다.
  • 유닛 밸런스, 상성 관계, 메타 순환을 마스터한다.
  • 스킬 시스템, 버프/디버프, 전투 로그를 구현한다.
3.3 최소 규칙 집합
  • 스탯(체력, 공격력, 방어율, 속도, 스킬)을 가진 전투 유닛이 존재합니다.
  • 유닛은 공격하거나, 스킬을 시전하거나, 상태 효과를 생성할 수 있습니다.
  • 데미지 = 공격력 × (1 – 방어율) × (1 + 스킬 배율) × (1 + 무작위 계수).
  • 전투 승리 후 플레이어는 자원, 경험치, 새 유닛을 받습니다. 보상은 유닛 성장과 연결됩니다.

흔한 조합과 변형

스킬 + 속도 보너스
같은 턴에 속도 강화 스킬을 쓰면 공격이 먼저 발생해 콤보 기회가 늘어납니다.
고방어 + 반격 스킬
고방어 유닛에 반격 스킬을 짝지으면 적의 강력한 공격을 무효화하고 반격을 발동할 수 있습니다.
광역 스킬 + 저체력 유닛
몰려 있는 저체력 유닛에 광역 스킬을 쓰면 여러 적을 한 번에 제거해 자원을 아낍니다.
고급 설계와 알고리즘 (접힘)클릭하여 펼치기
설계 시 주의사항
  • 수치 불균형은 전략감을 빠르게 침식시킵니다. 공격과 방어율의 균형을 잡으세요. 과도한 공격은 방어를 무의미하게 하고, 너무 낮은 공격은 방어를 지나치게 강하게 합니다.
  • 무작위성이 너무 크면 플레이어가 통제 불가를 느낍니다. '계산'과 '서프라이즈'의 균형을 잡으세요. 큰 무작위 계수는 전략 깊이를 약화하고, 작으면 전투가 지나치게 예측 가능해집니다.
  • 높은 방어는 오히려 공격자에게 스킬 사용을 강제합니다. 방어율이 1에 가까워지면 일반 공격이 거의 무효가 되어, 플레이어는 고배율 스킬을 쓰게 되고 스킬 자원이 빠르게 고갈됩니다.
알고리즘 예시
  • 스탯 공식과 데미지 기댓값 계산.
  • 턴제 / 실시간 전투 상태 머신.
  • AI 행동 트리와 난이도 적응.
핵심 코드(Counter-Multiplier Damage Formula)
ts· 5줄
const COUNTER = { A: { B: 1.5, C: 0.5 }, B: { C: 1.5, A: 0.5 }, C: { A: 1.5, B: 0.5 } };
function damage(attacker: Unit, defender: Unit): number {
  const k = COUNTER[attacker.type]?.[defender.type] ?? 1.0;
  return Math.max(1, Math.floor(attacker.atk * k - defender.def));
}