뭐라도 쓰겠지
25.04.07 / 변태들의 게임, '다크 소울'의 히트박스 본문
https://www.youtube.com/watch?v=g79wbf2B00Q
출처: Youtube, Scott Jund 채널
위 영상을 보면 다크 소울의 히트박스는 정말로 "3D 모델링 그 자체"라는 걸 볼 수 있다. 이런 걸 보고 "Hitbox Porn"이라고 한다던데, 용어는 좀 그렇지만 유튜브에 여러 게임들의 Hitbox Porn을 찾아 볼 수 있다.
다크 소울 시리즈는 플레이어와 적의 공격 판정이 "공정하다"고 평가받는 대표적인 게임 중 하나다. 특히 공격 모션과 히트박스가 정확하게 일치하도록 신경 쓴 덕분에, 피하거나 막아야 할 타이밍이 명확하고 "내가 맞은 건 내 탓"이라는 느낌을 준다. 아래에서는 다크 소울 시리즈의 히트박스가 왜, 어떻게 그렇게 뛰어난 평가를 받는지 정리해봤다.
제목에 변태들의 게임이라고 말했는데, 이는 유저나 개발사를 욕보이려는 표현이 아니라, 정말 내 상식을 벗어난, 상상 이상의 수준을 보여주는 유저들과 개발사에 대한 극찬이라고 받아들여주길 바란다. 이걸 만든 사람이나 플레이하는 사람이나 내 알량한 게임 지식으론 이해할 수가 없더라.
다크 소울 히트박스의 특징
1. 공격 모션과 '정확히 맞물리는' 충돌 영역
다크 소울에선 무기의 휘두르는 궤적, 적의 공격 범위, 플레이어의 회피 타이밍 등이 실제 3D 모델의 모션과 거의 일치한다. 예컨대 검을 오른쪽에서 왼쪽으로 휘두른다면, 실제로 "검이 지나가는 공간"에만 히트박스가 생기는 식이다. 덕분에 공격 궤적이 허공을 가르면 플레이어가 다가가도 안 맞고, 검날이 진짜 스치는 부분에만 피격 판정이 난다.
2. 액티브 프레임(Active Frame) 기반의 판정
공격 애니메이션 전체가 히트박스로 판정되기보다는, "충돌이 유효한 프레임 구간"만 활성화하고 나머지 시간에는 판정을 꺼둔다. 예를 들어 검을 들고 준비 동작에서 공격이 시작되는 순간 ~ 공격이 끝나는 순간까지만 무기 히트박스가 켜지고, 이후엔 꺼진다. 이를 통해 공격이 시각적으로 보이는 타이밍과 실제 판정이 최대한 일치하게 된다.
3. 다단계(멀티 히트) 히트박스 설계
일부 공격은 무기의 특정 구간(칼끝, 칼몸통)에서 프레임에 따라 다른 판정(데미지량, 경직 등)을 갖기도 한다. 보스전이나 특수 무기에서는 공격의 앞뒤 모션이 다르게 판정되기 도 해서, 플레이어가 세밀하게 대응하도록 유도한다.
4. 플레이어/적 캐릭터의 "허트박스(Hurtbox)"도 합리적
공격을 받는 대상의 "피격 범위"도 과하게 넓지 않도록 캐릭터 모델에 딱 맞게 세팅되어 있다. 다만 무적 회피(구르기)나 패링 등에선 순간적으로 허트박스가 줄거나 위치가 달라지는 경우가 있는데, 그 역시 공격 모션과 잘 연동되어 있어 정말 아슬아슬하게 피했다는 느낌을 주게 된다.
히트박스가 좋다고 평가받는 이유
1. 플레이어의 체감
"맞을 상황"에서 정확히 맞고, "피한 상황"에서는 맞지 않는다는, 당연하지만 구현하기 까다로운 정직함이 있다. 공격 모션과 판정이 어긋나면 유저는 스트레스를 크게 받지만, 다크 소울은 그 어긋남이 거의 없어서 플레이어 입장에서 "내 실수로 맞았다"라는 생각이 들게 한다.
2. 게임성(난이도 조절)에 직결
다크 소울은 회피 타이밍이 매우 중요하고, 피격 시 큰 데미지를 받는 하드코어한 게임이다. 히트박스-허트박스가 부정확하면 전투가 운빨이 되어 버리는 경우가 있는데, 이걸 잘 잡아줌으로써 "도전할 만한, 그리고 공정한" 이라는 난이도를 유지하는 것이다.
3. 결과적으로 반복 플레이를 유도
정확한 히트박스 덕분에 보스의 패턴을 익히고, 모션별로 최적의 대응을 학습하며 실력 향상이 체감된다. "한 번 더 해보면 이번엔 안 맞고 깰 수 있을 것 같다"는 느낌이 들도록 설계되어, 높은 난이도임에도 플레이어를 붙잡아 두는 요인이 되는 것이다.
어떻게 구현했을까?
프롬 소프트웨어에서 공식적으로 상세 구현 방식을 공개한 적은 많지 않지만, 데이터 마이닝 및 모드 분석 등을 통해 추측해볼 만한 부분은 다음과 같다.
1. 무기 또는 적의 '본(Bone)'에 Collider(박스, 캡슐 등)를 붙임
- 예를 들어, 검 오브젝트에 붙인 히트박스가 공격 애니메이션과 함께 본 단위로 움직여, 실시간으로 위치를 갱신한다.
- 이 히트박스는 특정 프레임 구간에만 활성화되어, "실제로 검이 휘두르는 순간"에만 유효해진다.
2. 프레임 기반의 세밀한 스크립팅
- 애니메이션 재생 중 특정 이벤트 키프레임에서 히트박스 ON/OFF 혹은 데미지 수치 변경 등을 제어한다.
- 공격 준비(바로 전 프레임)에 히트박스를 켜서 판정을 부여하는 식으로, 시각적인 모션과 최대한 일치시킨다.
3. 오브젝트별 레이어/마스크 관리
- 플레이어-적-무기-환경 등 서로 다른 레이어로 구분하고, 공격 시 어떤 레이어를 대상으로 충돌 검사를 할지 필터링한다.
- 이렇게 하면 불필요한 충돌 검사(배경, 지형 등)를 줄일 수 있어 성능을 확보하면서도 정교한 판정이 가능하다.
4. OBB/캡슐 등 박스를 세분화해 정밀도를 높임
- 보스나 무기의 경우 하나의 박스만 쓰기보단, 여러 박스 혹은 캡슐을 연결해 구성하기도 한다.
- 예를 들어, 대검 공격이 단타가 아니라 광역으로 휩쓰는 경우, 검날 기준으로 앞부분/중간/뒷부분에 다른 판정을 주어, 궤적에 따라 여러 구간에서 히트가 발생하도록 구성한다.
히트박스 관련 이슈/논란?
1. 팬텀 범위(Phantom Range)
온라인 플레이에서 핑/렉이나 동기화 문제로, 상대 무기가 닿지 않아 보이는데도 공격 판정이 들어오는 현상이 종종 보고된다. 이는 히트박스 자체의 문제라기보다는 네트워크 지연과 P2P 환경에서 생기는 위치 오차가 원인으로 알려져 있다.
2. 패치 전후 차이
특정 무기의 히트박스가 지나치게 길거나 짧다는 피드백이 있을 경우, 패치를 통해 수정된 사례가 있다. 이를 보면 프롬 소프트웨어가 히트박스를 '정적인 값'이 아니라 '라이브 밸런싱 가능'하게 관리 중임을 짐작할 수 있다. 참 무서운 부분이다.
3. 애니메이션 캔슬 / 무적 프레임 처리
구르기나 특정 공격에 짧은 무적 프레임이 존재하는데, 그 구간에서는 히트박스가 충돌해도 데미지를 받지 않도록 처리한다. 이는 "히트박스는 맞췄는데 왜 데미지가 없냐"는 오해를 부르기도 하지만, 이는 게임 디자인 차원의 의도된 기믹으로 봐야겠다.
이번 글에선 다크 소울 시리즈가 히트박스로 유명한 이유를 알아봤다. 게임의 높은 난이도뿐만 아니라 그에 상응하는 디테일한 요소들이 정말 뭐랄까, 질릴 정도로 무섭다. 컨트롤이 영 좋지 못한 관계로 다크 소울 3의 첫 보스도 못잡아봤지만, 플레이를 얼마 안하고도 이렇게 긍정적인 생각을 가지게 만드는 게임은 다크 소울이 유일하지 않을까 싶다. 별 다섯 개 만점에 다섯 개 드리겠다. 땅땅.
'프로그래밍 > 이야기' 카테고리의 다른 글
| 25.04.19 / JPG에 디지털 풍화가 오는 이유 (0) | 2025.04.19 |
|---|---|
| 25.04.07 / 게임 히트박스가 네모인 이유? (0) | 2025.04.07 |
| 25.03.04 / 비주얼 스튜디오 테마 바꾸기 (0) | 2025.03.04 |
| 25.03.01 / VS와 VSCode는 어떤 차이가 있는가 (0) | 2025.03.01 |