버프·디버프 중복 그룹 로직 개선

강한 효과와 긴 지속시간이 충돌할 때의 우선순위·승계 규칙 설계
실무 프로젝트 · 모바일 RTS MMORPG


30초 요약

동일 중복 그룹 내 버프·디버프가 동시에 존재할 때, 단순 덮어쓰기나 제거가 아니라 최종 수치 절대값과 남은 지속시간을 기준으로 적용/대기/승계 규칙을 나누는 개선안을 설계했다. Battle Start Status 기준 계산과 실시간 스탯 계산을 구분하고, Apply / Expire / Dispel 시점의 재평가 흐름을 정의했다.

핵심 축: 절대값 우선순위 · Standby 승계 · 재평가 시점 명세


문제 상황

수치가 높지만 지속 시간이 짧은 버프와, 수치는 낮지만 지속 시간이 긴 버프가 같은 중복 그룹에 있을 때 유저는 강한 버프가 끝난 뒤 남은 버프 효과를 기대한다. 기존 구조가 이를 자연스럽게 처리하지 못하면 버프 사용 경험이 끊기거나 손해처럼 느껴질 수 있다.


진행 내용


주요 설계 포인트

① 지속시간 아닌 절대값 기준 우선순위

② Standby 상태 신설

“대기 중이지만 시간은 소모”라는 상태를 명시적으로 정의. 유저 기대(강한 버프 끝난 뒤 남은 효과)를 시스템 규칙으로 옮긴 핵심 결정

③ Apply / Expire / Dispel 재평가 시점

④ Battle Start Status vs 실시간 Stat 계산 분리

스탯 컬럼을 두 계열로 구분 → 계산 기준 명확화, 디버깅·QA 시간 단축

⑤ 성능 제약 하에 기획 목적 유지 — 프로그래머 협업 결정

모든 버프를 매 프레임 기억·재배치하면 성능 리소스가 크게 증가한다. 프로그래머와 협업해 기획 의도(유저 기대와 어긋나지 않는 승계 규칙)를 유지하면서도 성능 부담을 최소화하는 지점을 찾았다.


구현 고려사항


참고 이미지

중복 그룹 우선순위 / Standby 승계 흐름


결과 · 진행 과정

결과
유저 기대와 시스템 동작이 어긋나는 지점을 절대값 우선순위 + Standby 승계로 해결. 실시간 서버 패킷 전투 환경에서 성능 부담을 상수화하면서도 유저 기대를 유지

무엇을 하려 했는가
”버프 로직 개선”이 아니라 “강한 버프가 끝난 뒤 남은 버프가 자연스럽게 이어질 거라는 유저 기대를, 시스템 규칙으로 옮기는 것”. 서버 패킷 기반 실시간 전투에서는 재평가 비용을 제한하는 것이 중요했기 때문에, 매 프레임 또는 과도한 1:n 비교 대신 Apply/Expire/Dispel 3시점 재평가로 범위를 제한했다.

어떻게 일했는가


참고 자료

※ 원본 문서는 내부 정보 보호를 위해 공개하지 않습니다.

김한얼

게임 기획자

원본 PDF ↗ 새 창