히트박스

 



'''Hitbox''' / '''Hit Mark'''
1. 개요
2. 히트박스란?
3. 대전 액션 게임에서의 히트박스
4. 슈팅 게임에서의 히트박스
5. 예시
6. 관련 문서


1. 개요


게임에서 위치, 공격, 피탄 등을 판별하기 위해 오브젝트나 캐릭터를 둘러싸도록 만든 투명한 박스를 말하며, '''''', '''스페이스 인베이더'''에서 시작해서 판정이 필요한 모든 게임에 변용될 정도로 아주 오래된 아이디어이다. 2D 대전 액션 게임에서는 캐릭터 성능을 좌우하는 기준으로 쓰기도 한다.
히트박스가 겹치는지 매 순간 검사하는 알고리즘을 충돌 감지(Collision Detection)라 한다.

2. 히트박스란?


다음과 같은 상황을 예로 들어 생각해보자.
  • 인간형 플레이어 캐릭터
  • 인간형 적이 칼로 플레이어를 내려친다.
이 상황에서 '칼에 맞았다'라는 걸 프로그램이 어떻게 판단할까?
상식적으로 생각해봤을 때 '칼날이 플레이어의 몸체가 차지하는 공간을 지나갔다.'가 정답일 것이다. 물론 틀린 말은 아니며 충분히 구현 가능하다. 하지만 인간형 물체가 굴곡져 있는지라 이를 기준으로 공간을 판단하면 계산할 양이 많아진다. 게다가 극도로 현실적인 시뮬레이션을 구현하려는 게 아닌 이상 '맞았다', '안 맞았다' 판단만 하면 땡이므로 굴곡을 직접 쓰는 방법은 쓸데없는 연산을 늘릴 뿐이다. 따라서 몸체를 적당히 네모난 박스로 둘러싸고 이 박스들이 충돌했느냐에 따라 칼에 맞았는지 안 맞았는지 판단하는 것이다.
앞서 언급했듯 퐁이나 스페이스 인베이더 같은 단순한 게임의 경우 통짜 네모 박스를 써도 되고 액션 게임이나 FPS 등 정교한 판단을 요구하는 경우 부위별로 히트박스를 만들기도 한다. 물론 판정'박스'라고 그 범위가 사각형이나 직육면체일 필요는 없으며, 굳이 공간에 한정할 필요도 없다. 그 사례로 벡터 기반의 게임은 사각형이 아닌 도형 자체를 히트박스로 사용하기도 하고, 리듬 게임에서는 시간차와 입력 위치를 히트박스로 사용하기도 한다. 심지어는 직접 '박스'를 쓰지 않아도 일반적인 로직으로 구현할 수 있는데, 히트박스 자체가 판정 로직을 '단순화한 가상의 물체'로 정의한 것이기 때문에 이런 게 가능한 것이다.
캐릭터가 아슬아슬하게 적의 공격을 회피하는 정교한 히트박스를 연출하는 움짤류를 히트박스 포르노라고 하는듯하다.

3. 대전 액션 게임에서의 히트박스


[image]
[image]
[image]
사기판정의 예인 KOF 캐릭터 다이몬 고로의 히트박스와 쓰레기 판정의 예인 쿄레기의 히트박스.
공격판정, 피격판정, 몸판정, 장풍판정, 반격판정, 가드포인트 판정 등으로 나누어지며 뒤의 스샷에서 공격판정은 빨간색, 피격판정은 파란색, 몸판정은 하늘색으로 되어 있다.[1] 위의 예를 보면 고로의 경우 공격판정(빨간색)이 피격판정(파란색)보다 멀리 있기에 그보다 긴 공격판정이나 무적기가 아닌 이상 고로가 이기는 판정이 나온다. 반면 쿄의 경우 피격판정(파란색)이 공격판정(빨간색)보다 앞에 있기 때문에 섣불리 내밀다간 상대를 때리기 전에 얻어맞는다.
3D 대전 액션 게임에서는 히트박스가 3D 폴리곤의 형태로 나타나지만, 스트리트 파이터 4를 필두로 한 2D의 게임성을 가지고 있는 게임들은 그래픽만 3D로 쓸 뿐 2D 히트박스를 사용한다.
2D 대전 액션 게임에는 기본적으로 3가지 종류의 데미지 박스가 있으며 특수한 데미지 박스까지 합하면 4~5개쯤 나오며 스트리트 파이터 4는 가드플래그(여기에 닿아야 가드 모션이 뜸) 판정, 장풍무적 판정 등 정말 복잡하기 그지없는 히트박스를 보여준다.
  • 공격판정(빨간색) - 이곳과 상대의 피격판정을 닿게 하면 때리는 것으로 인식이 된다. 넓을수록 유리하며 이것이 화면 전체에 있는 것이 화면 전체판정.
  • 피격판정(파란색) - 이곳과 상대의 공격판정이 닿으면 플레이어가 맞는 것으로 인식이 된다. 작을수록 유리하며 이것이 아예 없는 것이 무적시간.
  • 잡기판정 - 이 판정이 상대의 몸판정에 닿으면 잡는 것으로 인식한다. 물론 점프하면 땡이지만 공중에 뜬 몸판정만 잡는 잡기판정도 있다.
  • 몸판정(하늘색) - 캐릭터들이 겹쳐질 수 없도록 하는 판정. 이 판정은 서로 겹쳐지지 않고[2] 벽에도 부딪힌다. 캐릭터들의 위치관계의 기준이 되므로 역가드공격의 기준이 되며 잡기의 기준이 된다. 물론 앉아 있는 것과 서 있을 때의 크기는 다르다.
  • 장풍판정 - 장풍, 혹은 장풍 상쇄 가능 기술 등에 붙어있는 판정으로 장풍판정끼리 닿으면 없어진다. 장풍의 종류에 따라 강약이 있는 경우(예를 들면 한쪽이 왕장풍일 경우)에는 판정이 더 센 왕장풍 쪽이 뚫고 지나간다.
  • 반격판정 : 여기에 공격판정이 닿으면 반격을 시도한다. 지상기본기만 반격가능한 것, 필살기나 공중기본기만 반격가능한 것, 모든 것을 반격가능한 것 등으로 구분된다.
  • 기타 - 가드 포인트 등의 판정 범위를 표시하는 히트박스.
특히 주가 되는 것은 공격판정과 피격판정. 여기에 따라서 기본기와 필살기의 성능이 좌우된다고 보면 된다. 그 밖에 중요한 것은 발동속도와 공격판정의 넓이, 지속시간, 회수시점에서의 피격판정의 넓이 등이다.

4. 슈팅 게임에서의 히트박스


[image]
다라이어스 외전의 예.
노란 부분이 히트박스이며, 2.7버전에서 1P C + 2P C로 디버그 모드로 들어간 뒤 Hit Mark를 ON으로 설정하여 확인할 수 있다.
[image]
스트라이커즈 1945 II 기체들의 피탄 판정
피탄 판정 역시 히트박스의 일종이다.
대전 액션 게임과는 달리 각 플레이어별(적 포함)로 탄환 판정과 피탄 판정으로 나뉘는데, 자신의 탄환이 상대방의 기체에 닿으면 그것에 대해 조건 처리를 하면 된다. 이 히트박스를 극악으로 활용한 예는 '''탄막 슈팅 게임'''. 이 경우 플레이어의 기체와 적 탄환에 히트박스를 가급적 작게 만들어, 요리조리 회피가 가능한 탄막을 가능하게 한다. 그래서 탄막 슈팅 게임만큼은 '보이는 게 다'가 아니다. 처음 보는 사람은 "사람이 깨라고 만든 거야?"라고 생각하지만, 앞서 말했듯이 히트박스가 작아서 끄트머리가 살짝 닿는 정도는 허용되므로 다른 의미로 '깨라고 만든' 셈이다.
건 슈팅 역시 히트박스를 활용한다. 덕헌트 등에 쓰였던 '''재퍼'''가 대표적인 예.

5. 예시


좋은 히트박스의 예는 다음과 같다.
[image]
98 버전의 다이몬 고로 점프 D. 통칭 발로 쏘는 장풍.
[image]
02 김갑환의 점프 A. 통칭 김가불. 몸판정과 공격판정이 지옥을 보여준다.
[image]
스트리트 파이터 2승룡권(상승 중일 때). 이쪽은 아예 피격판정이 존재하지 않는 데다[3] 공격판정도 아스트랄하게 넓다. 이에 대한 내용은 매직 리치 참조.
구려터진 히트박스의 예는 다음과 같다.
[image]
[image]
기본기가 가장 구리기로 악명이 높은 02 쿄의 히트박스. 쿄레기 문서 참조.
[image]
많은 격투 게임이 사각형의 히트박스를 채용하고 있지만 마대캡3나 대난투는 원형이다.
[image]
FPS 게임에서의 히트박스의 예시. 사진 속 캐릭터는 CS:GOGIGN이다.

6. 관련 문서


[1] 위 스크린샷의 색상 중 빨간색, 파란색이 사각형으로 꽉 차있는 건 유저들이 편의를 위해 직접 편집해서 비워진 부분을 채우는 식으로 추가한 것이다. 실제 에뮬을 켜서 보면 저렇게 친절하게 다 채워서 나오지 않고 몸판정을 뜻하는 하늘색 박스처럼 테두리만 살짝 나온다.[2] 그렇기 때문에 두 캐릭터가 서로 가까이 다가갈 경우 스쳐 지나가지 않고 제자리에서 이동 모션을 취한다. 벨트스크롤 액션 게임은 근접할 경우 자동으로 잡기가 실행되는데 역시 원리는 같다. [3] 때문에 둘이 동시에 승룡권을 쓰면 공중에서 서로 몸만 부데끼다가 내려오고, 시전에 약간의 시간차가 있으면 먼저 쓴 쪽이 격추당한다.