버프·디버프 중복 그룹 로직 개선
강한 효과와 긴 지속시간이 충돌할 때의 우선순위·승계 규칙 설계
실무 프로젝트 · 모바일 RTS MMORPG
담당 범위
| 담당 | 기획 전담 — 우선순위 규칙 설계 · Standby 상태 정의 · 재평가 시점 명세 · 예외처리 정리 |
| 협업 | 담당 프로그래머 (성능 제약 협의 · 실제 동작 확인) |
| 상태 | 개선안 확정 · 구현 반영 |
30초 요약
동일 중복 그룹 내 버프·디버프가 동시에 존재할 때, 단순 덮어쓰기나 제거가 아니라 최종 수치 절대값과 남은 지속시간을 기준으로 적용/대기/승계 규칙을 나누는 개선안을 설계했다. Battle Start Status 기준 계산과 실시간 스탯 계산을 구분하고, Apply / Expire / Dispel 시점의 재평가 흐름을 정의했다.
핵심 축: 절대값 우선순위 · Standby 승계 · 재평가 시점 명세
문제 상황
수치가 높지만 지속 시간이 짧은 버프와, 수치는 낮지만 지속 시간이 긴 버프가 같은 중복 그룹에 있을 때 유저는 강한 버프가 끝난 뒤 남은 버프 효과를 기대한다. 기존 구조가 이를 자연스럽게 처리하지 못하면 버프 사용 경험이 끊기거나 손해처럼 느껴질 수 있다.
진행 내용
- 중복 그룹 우선순위 규칙 설계 (최종 수치 절대값 기준)
- Standby 상태 정의 (지속시간은 흐르되 효과 미적용)
- Apply / Expire / Dispel 재평가 흐름 명세
- Battle Start Status vs 실시간 Stat 계산 컬럼 구분
- 상태이상·디스펠·중복 그룹 테스트 세팅까지 예외 처리 정리
주요 설계 포인트
① 지속시간 아닌 절대값 기준 우선순위
- 1순위: 최종 수치 절대값이 큰 버프 → 실제 효과 적용
- 2순위: 대기(Standby)로 할당 → 지속시간은 흐르되 효과 미적용
- 강한 버프가 끝나면 자동으로 남은 Standby 버프가 활성화 → 유저 기대와 시스템이 자연스럽게 일치
② Standby 상태 신설
“대기 중이지만 시간은 소모”라는 상태를 명시적으로 정의. 유저 기대(강한 버프 끝난 뒤 남은 효과)를 시스템 규칙으로 옮긴 핵심 결정
③ Apply / Expire / Dispel 재평가 시점
- Apply (신규 부여) / Expire (자연 종료) / Dispel (디스펠) 3시점에 동일 중복 그룹 재평가
- 상시 재평가가 아니라 이벤트 시점에만 재평가해, 확인해야 할 경우의 수와 예외 케이스를 함께 줄였다
④ Battle Start Status vs 실시간 Stat 계산 분리
스탯 컬럼을 두 계열로 구분해 어느 시점 기준으로 계산된 값인지가 표에서 바로 드러나게 했다. 계산 시점 혼동으로 인한 확인 비용을 줄이는 것이 목적이었다
⑤ 1:n 비교 대신 1:1 승계 — 비교 구조로 비용을 낮춘 결정
중복 그룹 안의 버프를 전부 맞비교하면 버프가 하나 들어올 때마다 1:n 비교가 일어난다. 버프가 붙는 빈도를 생각하면 확인해야 할 경우의 수가 계속 불어난다.
그래서 1순위와 2순위만 잇는 1:1 승계 구조로 짰다. 재평가가 일어나도 비교 대상은 한 쌍이라 동작을 예측하기도, 검증하기도 쉽다.
계산 기준 자체는 줄이지 않았다 — 줄이면 “강한 버프가 끝나면 남은 버프가 이어진다”는 기획 목적이 깨지기 때문이다. 기획을 덜어내 성능을 버는 대신, 비교 구조를 바꿔 비용을 낮춘 결정이다.
구현 고려사항
- 우선순위 — 최종 수치 절대값 기준으로 1순위 적용, 2순위 대기 상태 할당. 지속시간이 아니라 실효 수치 기반
- Standby 상태 — 남은 지속시간은 흐르지만 실제 효과는 적용하지 않는 대기 버프 정의. 강한 버프 종료 시 자동 활성화
- 재평가 시점 — Apply, Expire, Dispel 발생 시 동일 중복 그룹 재평가. 3시점만 재평가하면 성능 부담 최소
- 계산 기준 — Battle Start Status 기반 계산과 실시간 Stat 기반 계산을 컬럼으로 구분. 계산 시점 혼동 방지
- 예외 처리 — 상태이상, 디스펠, 중복 그룹 테스트 세팅까지 포함해 QA가 재현·검증 가능하도록 정리
- 비교 구조 — 중복 그룹 전체를 맞비교하는 1:n 대신, 1순위·2순위를 잇는 1:1 승계로 처리. 버프가 들어올 때마다 불어나는 확인 비용을 구조로 낮췄다
참고 이미지

공개용으로 재구성한 설명 도식 — 실제 인게임 화면이 아니다.
결과 · 진행 과정
결과
유저 기대와 시스템 동작이 어긋나는 지점을 절대값 우선순위 + Standby 승계로 해결. 실시간 전투 환경에서 재평가 범위를 통제하면서도 유저 기대를 유지
무엇을 하려 했는가
”버프 로직 개선”이 아니라 “강한 버프가 끝난 뒤 남은 버프가 자연스럽게 이어질 거라는 유저 기대를, 시스템 규칙으로 옮기는 것”. 실시간 전투에서 버프가 들어올 때마다 1:n으로 맞비교하면 확인 비용이 계속 불어나기 때문에, Apply/Expire/Dispel 3시점 재평가와 1:1 승계로 비교 대상을 한 쌍으로 묶었다.
어떻게 일했는가
- 유저 인지 관점부터 규칙 설계 — “덮어쓰기 vs 제거” 이분법에서 벗어나 대기(Standby) 상태 신설. 유저 기대 승계 흐름을 시스템 상태로 명시화
- 재평가 시점을 3시점으로 압축 — 프로그래머와 협의해 Apply/Expire/Dispel 3시점만 재평가. “성능을 위해 기획 축소”가 아니라 “성능 제약 안에서 기획 목적을 지키는 최소 조건”
- 기존 문서와 실제 로직 차이 확인 — 기존 기획 의도와 현재 구현 상태가 어긋난 지점을 확인하고, 프로그래머 피드백을 통해 실제 동작 기준으로 규칙을 재정리했다.
참고 자료
- 버프·디버프 중복 그룹 로직 개선안 (내부 문서, PPT)
※ 원본 문서는 내부 정보 보호를 위해 공개하지 않습니다.