턴제 RPG 속도 기반 액션 타임라인 시스템 설계 가이드
턴제 RPG의 속도와 행동 순서가 단순 선공 경쟁으로 굳어지는 문제를 해결합니다. 액션 타임라인 수식, 재계산 규칙, UI 표현, 밸런싱 지표를 통해 예측 가능하면서도 전략적인 전투 시스템을 설계합니다.

핵심 요약
속도 기반 액션 타임라인은 각 유닛의 다음 행동 시점을 수치로 관리하고 가장 이른 시점의 유닛부터 행동시키는 방식이다. 핵심은 속도 = 행동 횟수가 되지 않도록 수식·버프 적용 시점·UI 예측 규칙을 명확히 정하고 느린 캐릭터도 강한 한 번의 행동으로 기여하게 만드는 데 있다.
속도 기반 행동 순서 시스템이란?
속도 기반 행동 순서 시스템은 라운드마다 모든 유닛이 한 번씩 행동하는 구조 대신, 각 유닛이 자신의 속도에 따라 개별적인 다음 행동 시점을 얻는 전투 모델이다. 속도가 높을수록 다음 행동 시점이 빨리 도래하므로 같은 시간 구간에 더 자주 행동한다.
이 방식은 고전적인 ATB(Active Time Battle)의 실시간 게이지를 턴제 전투에 맞게 이산화한 형태로 볼 수 있다. 플레이어는 현재 행동 순서뿐 아니라 스킬, 상태 이상, 장비가 미래의 타임라인에 미치는 영향까지 판단해야 한다.
| 방식 | 행동 횟수 결정 | 장점 | 대표적인 위험 |
|---|---|---|---|
| 고정 라운드제 | 라운드당 1회 | 이해하기 쉽다 | 속도가 선공 외에는 약해지기 쉽다 |
| 속도 정렬 라운드제 | 라운드 내 속도 순서 | 구현이 단순하다 | 속도 차이가 행동 횟수 차이로 이어지지 않는다 |
| 액션 타임라인 | 다음 행동 시점 | 속도, 지연, 가속의 전략성이 크다 | 수식과 UI가 불명확하면 불공정하게 느껴진다 |
속도 시스템은 왜 밸런싱을 망가뜨리는가?
속도는 대체로 공격력과 방어력보다 강한 능력치다. 행동 횟수를 늘리면 피해, 회복, 버프 유지, 상태 이상 부여, 자원 수급까지 동시에 증가하기 때문이다. 따라서 속도 10% 증가가 실제 전투 가치에서 공격력 10% 증가보다 훨씬 클 수 있다.
특히 아래 조건이 겹치면 속도는 필수 스탯이 된다.
- 기본 공격과 스킬의 자원 수급량이 행동 횟수에 비례한다.
- 강력한 버프와 디버프의 지속 시간이 행동 횟수가 아니라 고정 턴 수다.
- 행동을 더 많이 해도 궁극기 충전, 쿨다운, 피해 감소에 제한이 없다.
- 적의 속도나 타임라인 조작에 대응할 수단이 부족하다.
설계 목표는 빠른 유닛이 더 자주 행동하는 장점을 갖되 느린 유닛의 고위력 행동·광역 제어·보호 능력이 그 차이를 상쇄하도록 만드는 것이다.
액션 타임라인은 어떻게 구현할까?
가장 다루기 쉬운 모델은 각 유닛에 nextActionTime을 저장하는 방식이다. 전투 시작 시 모든 유닛의 다음 행동 시점을 계산하고 매번 가장 작은 값을 가진 유닛을 행동자로 선택한다.
1. 행동 비용과 속도 단위를 먼저 고정한다
ActionCost를 10,000 같은 정수로 두면 소수점 오차를 피하기 쉽다. 속도는 초당 행동 횟수가 아니라 행동 비용을 얼마나 빨리 소모하는지를 나타내는 값으로 사용한다.
예를 들어 ActionCost = 10000이고 속도가 100인 유닛의 행동 지연값은 100이다. 속도가 125면 지연값은 80이므로 같은 시간 축에서 더 자주 행동한다.
실제 구현에서는 부동소수점 대신 고정소수점이나 정수 스케일을 권장한다. 예를 들어 속도에 1,000을 곱한 SpeedMilli를 사용하거나 분수 비교를 지원하는 우선순위 큐를 사용할 수 있다.
public sealed class CombatUnit
{
public int Id { get; init; }
public int BaseSpeed { get; init; }
public int SpeedPercentBonus { get; set; }
public long NextActionTime { get; set; }
public int EffectiveSpeed => BaseSpeed * (100 + SpeedPercentBonus) / 100;
}
const long ActionCost = 10_000_000;
long GetActionDelay(CombatUnit unit)
{
return ActionCost / Math.Max(1, unit.EffectiveSpeed);
}
void CompleteAction(CombatUnit unit)
{
unit.NextActionTime += GetActionDelay(unit);
}
2. 다음 행동자를 우선순위 큐에서 선택한다
우선순위 큐의 정렬 키는 NextActionTime이다. 동률은 전투 시작 시 정한 고정 우선순위, 팀 우선순위, 유닛 ID처럼 재현 가능한 기준으로 해소해야 한다. 무작위 동률 해소는 전투 로그 검증과 리플레이 구현을 어렵게 만든다.
CombatUnit GetNextActor(PriorityQueue<CombatUnit, (long time, int tie)> queue)
{
return queue.Dequeue();
}
void Requeue(PriorityQueue<CombatUnit, (long time, int tie)> queue, CombatUnit unit)
{
CompleteAction(unit);
queue.Enqueue(unit, (unit.NextActionTime, unit.Id));
}
3. 속도 변화와 행동 게이지 조작을 분리한다
속도 버프는 앞으로 발생할 행동 간격을 바꾸는 효과이고 행동 게이지 조작은 이미 잡힌 다음 행동 시점을 직접 움직이는 효과다. 두 효과를 같은 규칙으로 처리하면 플레이어가 결과를 예측하기 어렵다.
| 효과 | 권장 처리 | 예시 |
|---|---|---|
| 속도 증가 | 다음 행동 완료 후 새 지연값에 반영 | 속도 +25% |
| 속도 감소 | 다음 행동 완료 후 새 지연값에 반영 | 속도 -30% |
| 전진 | 현재 NextActionTime을 즉시 감소 | 행동 게이지 20% 전진 |
| 지연 | 현재 NextActionTime을 즉시 증가 | 적 행동 15% 지연 |
| 즉시 추가 행동 | 현재 시점에서 별도 행동 예약 | 처치 시 추가 턴 |

행동 게이지 20% 전진은 어떤 수식으로 계산해야 할까?
퍼센트형 전진·지연은 기준이 없으면 해석이 갈린다. 가장 이해하기 쉬운 기준은 현재 행동자 시점부터 대상의 다음 행동 시점까지 남은 거리다.
현재 전투 시간 T에서 대상의 다음 행동 시점이 N일 때, 20% 전진은 다음과 같이 계산한다.
반대로 15% 지연은 다음과 같다.
이 정의는 대상이 이미 행동 직전일 때 과도하게 멀리 밀려나는 문제를 줄인다. 또한 UI에서 남은 게이지의 20%가 줄어든다고 그대로 설명할 수 있다.
단, 행동 직후에 전진 효과를 사용하면 남은 거리가 거의 없을 수 있다. 이때 최소 지연값을 설정해 무한 추가 턴을 막아야 한다.
MinimumDelay는 보통 기본 행동 지연값의 10~25% 범위에서 테스트한다. 정확한 값은 전투의 평균 행동 수와 추가 행동 스킬의 빈도에 따라 달라진다.
flowchart TD
A[우선순위 큐에서 가장 이른 유닛 선택] --> B[행동 시작 시점 T 확정]
B --> C[스킬과 상태 효과 해결]
C --> D{타임라인 조작 효과가 있는가?}
D -- 예 --> E[대상의 NextActionTime 갱신]
D -- 아니오 --> F[행동자 다음 행동 지연값 계산]
E --> F
F --> G[행동자를 큐에 다시 삽입]
G --> A
속도 기반 턴제 RPG를 밸런싱하는 방법
속도 수식만으로는 밸런스가 완성되지 않는다. 전투 전체에서 속도가 만드는 실제 이득을 측정해야 한다.
속도 구간별 행동 횟수를 먼저 계산한다
특정 전투 시간 Horizon 동안 예상 행동 횟수는 다음 근사식으로 확인할 수 있다.
예를 들어 속도 100과 120의 차이는 단순히 20% 빠른 것이 아니라 충분히 긴 전투에서 약 20% 더 많은 행동 기회를 뜻한다. 여기에 치명타, 에너지 회복, 상태 이상 누적이 행동마다 발생한다면 실제 전투력 격차는 더 커진다.
| 검증 항목 | 측정 방법 | 위험 신호 |
|---|---|---|
| 평균 행동 횟수 | 6~10행동 구간 시뮬레이션 | 특정 속도 임계값에서 행동이 1회 더 늘어난다 |
| 피해 기여도 | 시간당 피해량(DPS) 비교 | 고속 빌드가 모든 역할을 대체한다 |
| 제어 지속력 | 적이 행동하기 전 제어 갱신 가능 여부 | 적이 행동할 기회가 거의 없다 |
| 자원 경제 | 행동당 에너지·카드·탄약 변화 | 속도 투자만으로 자원 부족이 사라진다 |
| 회복 안정성 | 시간당 회복량과 보호량 | 빠른 서포터가 느린 탱커를 대체한다 |
임계 속도 구간을 의도적으로 설계한다
행동 횟수는 연속적으로 증가하지 않고 일정 전투 구간에서는 계단처럼 증가한다. 예를 들어 5회의 적 행동 전까지 아군이 6회 행동할 수 있는 속도 경계가 존재한다. 이런 임계값은 장비 파밍과 빌드 목표를 만들지만 너무 강하면 정답 스펙이 된다.
권장하는 대응은 세 가지다.
- 콘텐츠별 적 속도를 공개하거나 최소한 타임라인 UI에서 예측 가능하게 보여 준다.
- 임계값을 넘겼을 때 얻는 추가 행동이 전투를 즉시 끝내지 않도록 초기 피해와 제어 계수를 조정한다.
- 속도 외 스탯으로도 역할 성능이 확실히 오르게 만든다. 예를 들어 탱커는 방어력에 비례해 아군 피해를 분담하고 느린 딜러는 긴 준비 시간 대신 높은 파괴력이나 방어 관통을 얻는다.
행동 순서 UI는 무엇을 보여줘야 할까?
타임라인 시스템의 공정성은 실제 계산보다 예측 가능성에서 결정된다. 플레이어가 행동 결과를 선택하기 전에 알 수 있어야 하는 정보는 다음과 같다.
- 현재부터 최소 6~8개의 예정 행동자
- 속도 버프·디버프 적용 후의 순서 변화
- 전진·지연 스킬 사용 시 예상되는 순서 변화
- 추가 행동, 반격, 추격처럼 일반 순서를 무시하는 행동의 구분
- 보스의 강제 행동과 그 취소 가능 여부
UI에는 단순 초상화 나열뿐 아니라 순서가 변하는 이유를 보여 주는 피드백이 필요하다. 예를 들어 속도 증가: 다음 행동이 2칸 전진 또는 행동 지연: 적 다음 행동이 1칸 후퇴처럼 효과명을 함께 표시한다. 다만 실제 시간값을 모두 노출할 필요는 없다. 내부 수치는 복잡해도 플레이어에게는 상대적 변화와 결과 순서가 충분하다.
자주 묻는 질문 (FAQ)
속도가 높은 유닛에게 행동 횟수 제한을 둬야 할까?
기본적으로는 제한보다 비용을 설계하는 편이 낫다. 추가 행동마다 에너지 회복을 낮추거나 강한 스킬에 쿨다운과 자원 비용을 부여하면 속도의 가치를 유지하면서 폭주를 줄일 수 있다. 무한 행동 조합이 실제로 발생할 때만 최소 지연값이나 연속 행동 제한을 적용한다.
속도 버프는 즉시 다음 행동 순서에 반영해야 할까?
원칙적으로는 아니다. 속도 버프는 미래의 행동 간격을 바꾸고 즉시 순서를 이동시키는 효과는 별도 스킬로 분리하는 것이 명확하다. 다만 게임의 핵심 재미가 강한 순서 조작이라면 즉시 재계산을 일관된 규칙과 UI 피드백으로 제공할 수 있다.
적과 아군의 속도 차이는 어느 정도가 적절할까?
절대적인 정답은 없지만 일반 전투에서는 평균 속도의 15~30% 차이부터 행동 횟수 차이를 시뮬레이션하는 것이 좋다. 보스전에서는 보스의 느린 속도를 강한 단일 행동으로 보상하되 플레이어가 무한 지연으로 봉쇄하지 못하도록 저항 또는 최소 행동 보장 규칙을 둔다.
정리
좋은 속도 기반 액션 타임라인은 빠른 캐릭터에게 더 많은 선택권을 주되 모든 캐릭터가 속도만 올리게 만들지 않는다. NextActionTime과 ActionCost / Speed라는 명확한 모델을 기반으로 속도 변화와 순서 조작을 분리하고 전투 시뮬레이션과 예측 가능한 UI로 수치를 검증하자. 그렇게 하면 행동 순서는 단순 선공 판정이 아니라 파티 구성과 스킬 사용 순서를 바꾸는 전투 전략이 된다.



