격투·액션 게임 피격 경직(Hitstun)과 가드 크러시(Guard Break) 수치 기획 가이드

액션 및 격투 게임의 핵심 타격 공방을 결정하는 피격 경직(Hitstun), 가드 경직(Blockstun), 프레임 이득 계산식과 가드 크러시(Guard Break) 게이지 수치 설계 공식을 단계별로 상세히 정리합니다.

✓ 복사 완료!
챕터일반 가이드
난이도중급
상태● 검토 완료
대상 엔진
Engine Agnostic
최종 업데이트
격투·액션 게임 피격 경직(Hitstun)과 가드 크러시(Guard Break) 수치 기획 가이드

핵심 요약

  • 피격 경직(Hitstun)과 가드 경직(Blockstun)은 공격 적중/방어 시 피격자가 행동 불능 상태에 빠지는 프레임 시간을 의미하며 콤보 성립과 확정 반격(Punish)을 결정하는 프레임 이득(Advantage\text{Advantage}) 계산의 기초가 됩니다.
  • 프레임 이득 수식: Advantage=Stun Frames−(Remaining Active Frames+Recovery Frames)\text{Advantage} = \text{Stun Frames} - (\text{Remaining Active Frames} + \text{Recovery Frames})
  • 이 글의 가드 크러시(Guard Break)는 가드 내구도(Guard Gauge)가 소진되면 방어 불가 경직을 부여하는 설계입니다. 최대 내구도, 가드 대미지, 회복 지연 시간(Delay\text{Delay}), 초당 회복량(Regen Rate\text{Regen Rate})의 네 변수를 기준으로 수치를 설계합니다.

프레임 데이터의 기초: 피격 경직과 가드 경직은 어떻게 작동하는가?

이 글의 수치 예제는 초당 60회 진행되는 전투 시뮬레이션을 기준으로 합니다. 렌더링 FPS나 모든 게임의 전투 갱신 주기가 반드시 60이라는 뜻은 아닙니다. 일반적인 단타 공격의 타임라인을 다음 세 구간으로 나누어 설명합니다.

  1. 발생(Startup): 입력 후 첫 공격 판정(Hitbox)이 나오는 시점까지의 프레임 수. 아래 콤보 부등식에서는 첫 판정이 나오는 프레임도 발생 수치에 포함하는 규약을 사용합니다.
  2. 지속(Active): 공격 판정이 활성화되어 상대와 충돌할 수 있는 유효 프레임
  3. 회복(Recovery): 공격 판정이 사라진 후 다음 행동을 할 수 있을 때까지의 후딜레이 프레임

공격이 상대에게 적중하면 피격자는 일정 시간 동안 조작이 불가능한 상태가 되는데 이를 히트스턴(Hitstun, 피격 경직)이라 부릅니다. 방어에 성공했을 때 발생하는 경직은 블록스턴(Blockstun, 가드 경직)이라고 합니다.

공격 타임라인과 경직 프레임 비교

프레임 이득(Frame Advantage) 계산 공식

공격자와 피격자가 경직에서 회복되는 시점의 차이를 프레임 이득(Frame Advantage)이라고 부릅니다. 공격자가 먼저 움직일 수 있으면 플러스(++) 이득, 피격자가 먼저 회복하면 마이너스(−-) 손해 상태가 됩니다.
발생·지속·회복과 적중 시점의 프레임 계산은 Capcom의 프레임 설명도 참고할 수 있습니다. 아래 계산에서는 이미 충돌한 액티브 프레임을 남은 시간에서 제외합니다.

공격 판정의 첫 번째 액티브 프레임에 적중했다고 가정한 기본 프레임 이득 계산식은 다음과 같습니다.

Advantage=Stun Frames−(Active Frames−1+Recovery Frames)\text{Advantage} = \text{Stun Frames} - (\text{Active Frames} - 1 + \text{Recovery Frames})

만약 공격 판정이 발생 5프레임, 지속 3프레임, 회복 14프레임이고 피격 경직이 20프레임이라면 프레임 이득은 다음과 같이 산출됩니다.

Advantage=20−(3−1+14)=20−16=+4 Frames\text{Advantage} = 20 - (3 - 1 + 14) = 20 - 16 = +4\text{ Frames}

이 계산 규약에서는 공격자가 상대보다 4프레임 먼저 자유 상태가 됩니다. 발생 수치가 4프레임 이하인 후속 공격을 가장 빠른 시점에 입력하고, 사거리 안에서 판정이 맞으며 콤보 탈출 규칙도 없다면 확정 콤보(True Combo)의 시간 조건을 만족합니다. 입력 지연, 밀려난 거리, 피격 상태별 판정과 같은 조건도 함께 확인해야 합니다.

아래 범위는 특정 게임의 프레임 데이터나 검증된 보편적 권장값이 아니라 초기 밸런스 실험용 예시입니다.

파라미터 명칭단위설명기획 시 시험할 예시 범위
StartupFrame (60fps)입력 후 판정 생성 전 준비 시간약공격: 4~7F, 강공격: 12~24F
ActiveFrame (60fps)공격 판정 유지 시간단타: 2~4F, 깔아두기/장풍: 10~30F
RecoveryFrame (60fps)공격 판정 종료 후 회복 시간약공격: 8~14F, 강공격: 18~35F
HitstunFrame (60fps)피격 시 조작 불가 시간약공격: 12~18F, 강공격: 22~40F
BlockstunFrame (60fps)가드 성공 시 조작 불가 시간히트스턴 대비 60~80% 수준 할당
HitstopFrame (60fps)타격 순간 연출을 위한 일시 정지 시간경쾌한 타격: 3~6F, 묵직한 강타: 10~18F

콤보와 확정 반격을 결정하는 히트스턴 수치 기획 3단계

애니메이션 길이만으로 수치를 정하지 말고 반복 연계와 확정 반격 조건을 함께 검사합니다. 다음은 수치 테이블을 작성하는 세 단계의 설계 예시입니다.

Step 1: 기본 공격군의 기준 프레임 손익 정의

공격의 위력과 위험도(Risk & Reward)에 따라 가드 시 손익 기준선을 먼저 고정합니다.

  • 약공격 (Light Attack): 가드 시 −1F∼+2F-1\text{F} \sim +2\text{F}를 초기 실험 범위로 잡습니다. 상대의 최속 반격이 4F라는 가정에서는 가드 후 시간 조건상 안전하지만, 빗나갔을 때의 안전성은 남은 동작과 상대의 사거리에 따라 별도로 평가합니다.
  • 중공격 (Medium Attack): 가드 시 −2F∼−5F-2\text{F} \sim -5\text{F}를 시험합니다. 상대에게 4F 반격이 있다면 이 범위 중 −4F-4\text{F} 이하에서 확정 반격의 시간 조건을 만족하며 사거리도 맞아야 합니다.
  • 강공격 (Heavy Attack): 가드 시 −8F∼−16F-8\text{F} \sim -16\text{F}, 적중 시 +6F∼+12F+6\text{F} \sim +12\text{F}를 시험합니다. 실제 위험도는 반격 사거리, 무적, 캔슬 가능 여부와 함께 확인합니다.

Step 2: 연계 콤보 성립 조건과 히트스탑(Hitstop) 보정

공격 A의 동작이 완전히 끝난 뒤 B를 시작하는 링크 콤보의 시간 조건은 다음과 같습니다. 입력은 가장 빠른 시점에 처리되고 발생 수치는 첫 판정 프레임을 포함한다고 가정합니다. A를 도중에 취소하는 캔슬 콤보에는 취소 시점과 남은 경직을 별도로 계산해야 합니다.

AdvantageHit(A)≥Startup(B)\text{Advantage}_{\text{Hit}}(A) \ge \text{Startup}(B)

타격 순간 동작이 잠시 멈추는 히트스탑(Hitstop)도 설계할 수 있습니다. 양쪽의 동작과 경직 타이머를 같은 시간 동안 멈추는 구현이라면 앞서 계산한 회복 시점의 차이는 변하지 않습니다. 비대칭 정지나 서로 다른 타이머 규칙을 사용한다면 차이를 추가로 계산해야 합니다. 정지 중 입력을 받을지와 버퍼 만료 시간을 함께 정합니다.

Step 3: 넉백(Knockback) 거리와 마찰 감속 곡선 설계

상대가 밀려나지 않는다고 반드시 무한 콤보가 되는 것은 아니지만, 넉백은 반복 연계를 제한하는 설계 수단 중 하나입니다. 아래는 초기 넉백 속도(v0v_0)에 속도 비례 감쇠 dvdt=−kv\frac{dv}{dt}=-kv를 적용하고 x(0)=0x(0)=0으로 둔 모델입니다. 일정한 마찰력으로 감속하는 모델과는 다릅니다.

x(t)=v0k(1−e−kt)x(t) = \frac{v_0}{k} \left(1 - e^{-kt}\right)

여기서 k>0k>0는 초당 감쇠 계수입니다. 연속 공격에서 넉백 가중치(Pushback Scale\text{Pushback Scale})를 1.2배, 1.5배 등으로 증가시키는 실험을 할 수 있지만 벽, 이동 추적, 캔슬이 있으면 사거리 밖으로 벗어난다는 보장은 없습니다.

flowchart TD
    A["공격 판정 충돌 (Hitbox Collision)"] --> B{"방어 상태 여부 판정"}
    B -- "피격 (Hit)" --> C["Hitstun 적용 및 Hitstop 발생"]
    B -- "가드 (Guard)" --> D["Blockstun 적용 및 Guard Damage 연산"]

    C --> E["Frame Advantage: Stun - Remaining Active - Recovery"]
    D --> F["Guard Gauge 차감"]

    F --> G{"Guard Gauge <= 0 ?"}
    G -- "Yes" --> H["가드 크러시 상태 전이 (Guard Break Stun)"]
    G -- "No" --> I["Block Advantage 계산"]

    E --> J{"Advantage >= Next Startup ?"}
    J -- "Yes" --> K["링크 콤보 시간 조건 충족: 사거리 및 탈출 규칙도 확인"]
    J -- "No" --> L["상대 방어/반격 가능"]

가드 크러시(Guard Break) 시스템과 게이지 밸런싱 수치 설계

이 예제에서는 지속적인 방어에 자원 비용을 부여하고, 가드 게이지가 소진되면 가드 크러시(Guard Break) 상태로 전환합니다. 실제 방어 행동의 빈도와 공방 템포는 플레이테스트에서 확인합니다.

가드 크러시 게이지 증감 메커니즘

1. 가드 게이지 상태 전이와 핵심 변수

이 예제의 가드 게이지 시스템은 다음 네 가지 수치 매개변수를 중심으로 순환합니다.

  1. 최대 가드 내구도 (Max Guard\text{Max Guard}): 캐릭터가 버틸 수 있는 최대 가드 포인트 (예: 100pt)
  2. 가드 대미지 (Guard Damage\text{Guard Damage}): 공격을 방어할 때마다 차감되는 수치
  3. 회복 지연 시간 (Regen Delay\text{Regen Delay}): 마지막 가드 이후 게이지 회복이 시작될 때까지의 대기 시간
  4. 초당 회복량 (Regen Rate\text{Regen Rate}): 대기 시간 이후 초당 차오르는 게이지 양

2. 가드 게이지 회복 수식 모델

마지막 가드 직후의 게이지를 GcurrentG_{\text{current}}, 그 이후 경과 시간을 tt로 둡니다. 다음 가드나 다른 게이지 변경이 발생하기 전까지 잔여 게이지 G(t)G(t)는 다음과 같습니다. 같은 기준 시점의 값을 사용하는 식이므로 매 프레임 현재 게이지에 전체 누적 회복량을 다시 더하면 안 됩니다.

G(t)=min⁡(Max Guard,Gcurrent+max⁡(0,t−Delay)×Regen Rate)G(t) = \min\left(\text{Max Guard}, G_{\text{current}} + \max(0, t - \text{Delay}) \times \text{Regen Rate}\right)

공격 간격이 일정하고 첫 공격 전에 가드 게이지가 가득 차 있다고 가정합니다. 공격 사이에 회복되는 양을 R=max⁡(0,Interval−Delay)×Regen RateR = \max(0, \text{Interval} - \text{Delay}) \times \text{Regen Rate}라고 하면, 공격마다 순감소량이 양수(Guard Damage>R\text{Guard Damage} > R)일 때 크러시까지 필요한 최소 공격 횟수(NN)는 다음과 같습니다.

N=⌈Max Guard−RGuard Damage−R⌉N = \left\lceil \frac{\text{Max Guard} - R}{\text{Guard Damage} - R} \right\rceil

단, 가드 대미지가 최대 게이지 이상이면 회복량에 관계없이 첫 공격에서 깨지므로 N=1N=1입니다. 0<Guard Damage<Max Guard0 < \text{Guard Damage} < \text{Max Guard}인 경우에는 회복량에 따라 나눕니다. R≥Guard DamageR \ge \text{Guard Damage}이면 매번 다음 공격 전에 게이지가 복구되어 지속 압박만으로는 깨지지 않습니다. R<Guard DamageR < \text{Guard Damage}이면 위 식을 적용합니다. Interval≤Delay\text{Interval} \le \text{Delay}이면 R=0R=0이므로 위 식은 N=⌈Max GuardGuard Damage⌉N = \lceil \frac{\text{Max Guard}}{\text{Guard Damage}} \rceil가 됩니다.

3. 공격 속성별 가드 크러시 기획 밸런스 테이블 예시

공격 분류일반 대미지가드 대미지가드 시 경직(Blockstun)크러시 시 부여 경직특징
약공격 (Light)30510F (−2F-2\text{F})-빠른 짤짤이 공격, 가드 깎기 효율 낮음
중공격 (Medium)701516F (−4F-4\text{F})-표준 압박 기술
강공격 (Heavy)1303022F (−8F-8\text{F})-최대 게이지 100·중간 회복 없음이면 4회에 크러시
가드 브레이크 특수기80100 (즉시 파괴)-60F (+40F+40\text{F} 이상)긴 선딜레이(35F+), 패링 또는 회피 강제

이 표는 앞의 약공격 손익 범위와 별개의 예시입니다. 가드 손익은 각각 공격자의 남은 지속·회복 시간을 12F, 20F, 30F로 가정해 계산했습니다. 특수기의 +40F 이상도 해당 시간이 20F 이하일 때의 값이며, 60F 경직만으로 이득이 정해지지는 않습니다. 방어 불가·패링·회피 가능 여부는 이 설계의 별도 판정 규칙입니다.


피격 경직 및 가드 크러시 처리 로직 구현 예시

다음은 전투 시스템에서 피격 경직과 가드 크러시를 판정하는 C# 구조 조각입니다. AttackData, ApplyHitstun, ApplyBlockstun, PlayGuardBreakEffect는 프로젝트가 제공할 형식과 메서드이며 구현을 생략했습니다. 수치가 유한한 비음수이고 최대 게이지가 양수라는 입력 규약을 전제로 합니다. 이 예제의 게이지 회복은 Unity의 배율이 적용되는 게임 시간을 사용합니다. 애니메이션만 멈추는 히트스탑에서는 게이지 회복 시간이 자동으로 멈추지 않으므로, 회복도 정지하려면 전투 시계나 상태 조건을 추가합니다.

using UnityEngine;

public class CombatReceiver : MonoBehaviour
{
    [Header("Guard Stats")]
    [SerializeField] private float maxGuardGauge = 100f;
    [SerializeField] private float currentGuardGauge = 100f;
    [SerializeField] private float regenDelaySeconds = 2.0f;
    [SerializeField] private float regenRatePerSecond = 20f;
    [SerializeField] private int guardBreakStunFrames = 60;

    private float lastGuardedTime;
    private bool isGuardBroken = false;

    public void TakeHit(AttackData attack, bool isGuarding)
    {
        if (isGuardBroken)
        {
            // 가드 크러시 상태에서는 방어 불가 및 카운터 히트 적용
            ApplyHitstun(attack.hitstunFrames, isCounter: true);
            return;
        }

        if (isGuarding && !attack.isUnblockable)
        {
            ProcessGuard(attack);
        }
        else
        {
            ApplyHitstun(attack.hitstunFrames, isCounter: false);
        }
    }

    private void ProcessGuard(AttackData attack)
    {
        lastGuardedTime = Time.time;
        currentGuardGauge -= attack.guardDamage;

        if (currentGuardGauge <= 0f)
        {
            TriggerGuardBreak();
        }
        else
        {
            ApplyBlockstun(attack.blockstunFrames);
        }
    }

    private void TriggerGuardBreak()
    {
        currentGuardGauge = 0f;
        isGuardBroken = true;
        // 긴 무방비 경직 부여
        ApplyHitstun(guardBreakStunFrames, isCounter: true);
        PlayGuardBreakEffect();
    }

    // 가드 크러시 경직이 끝날 때 전투 상태 관리자가 호출합니다.
    public void EndGuardBreak()
    {
        isGuardBroken = false;
        currentGuardGauge = maxGuardGauge * 0.25f;
        lastGuardedTime = Time.time;
    }

    private void Update()
    {
        if (!isGuardBroken && Time.time >= lastGuardedTime + regenDelaySeconds)
        {
            float regenStart = lastGuardedTime + regenDelaySeconds;
            float regenDelta = Mathf.Min(Time.deltaTime, Mathf.Max(0f, Time.time - regenStart));
            currentGuardGauge = Mathf.Min(maxGuardGauge, currentGuardGauge + regenRatePerSecond * regenDelta);
        }
    }
}

자주 묻는 질문 (FAQ)

Q1. 히트스탑(Hitstop)과 히트스턴(Hitstun)은 어떻게 다른가요?

이 글에서는 히트스탑을 명중 순간 양쪽 동작을 잠시 정지시키는 연출 시간, 히트스턴을 피격자의 행동을 제한하는 경직 시간으로 구분합니다. 경직 중 포즈가 반드시 뒤로 젖혀지는 것은 아닙니다. 양쪽의 관련 타이머를 히트스탑 동안 동일하게 멈춘다는 예제 규약에서는 프레임 이득이 피격자 경직과 공격자의 남은 지속·회복 시간의 차이로 결정됩니다. 실제 게임의 타이머 규칙과 예외도 확인해야 합니다.

Q2. 무한 콤보(Infinite Combo)를 방지하는 수치 기획 방법은 무엇인가요?

다음 방법을 조합해 실험할 수 있습니다. 세 방법 모두 단독으로 모든 무한 콤보를 막는다는 뜻은 아닙니다.

  1. 히트스턴 감쇄(Hitstun Decay): 콤보 타수가 늘어날 때마다 기술의 피격 경직 시간을 일정 비율(Stun×0.9n\text{Stun} \times 0.9^n)로 감소시킵니다.
  2. 넉백 가중치 증가: 콤보가 길어질수록 상대를 밀어내는 거리를 늘려 물리적으로 후속타 사거리를 벗어나게 만듭니다.
  3. 대미지 보정(Damage Proration): 콤보 내 타수가 누적되면 대미지를 낮추는 방법입니다. 최저 10~20% 같은 하한은 실험값이며, 양수 대미지가 계속 들어가는 무한 연계의 종료나 즉사 방지를 보장하지 않습니다. 별도의 탈출·강제 종료 조건도 검토합니다.

Q3. 가드 크러시 게이지는 고정치 방식과 체력 비례 방식 중 어느 것이 좋나요?

  • 고정 수치 방식(예: 전 캐릭터 100pt): 공격자의 압박 횟수와 공방 주기를 직관적으로 통제할 수 있어 전통적인 대전 격투 게임이나 PvP 중심 액션에 적합합니다.
  • 최대 체력 비례 방식(예: Max HP의 30%): 체력 성장과 가드 유지력을 연결하고 싶을 때 검토합니다. 체력이 높은 캐릭터는 이점을 얻지만 방어력 수치가 높다는 이유만으로 가드 게이지가 늘어나지는 않습니다. 방어력도 반영하려면 별도 규칙이 필요합니다.

마치며: 공방 밸런스의 완성

피격 경직과 가드 크러시는 애니메이션 타이밍을 넘어 공격의 위험도와 보상을 조율하는 밸런싱 요소입니다. 프레임 이득으로 콤보와 딜레이 캐치의 조건을 정하고, 가드 크러시 변수로 공방의 템포를 조절할 수 있습니다.