Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

뭐라도 쓰겠지

25.04.07 / 게임 히트박스가 네모인 이유? 본문

프로그래밍/이야기

25.04.07 / 게임 히트박스가 네모인 이유?

김데피 2025. 4. 7. 15:27

이번 글을 읽기 전, 이전 글에서 다룬 AABB와 OBB를 읽고 오는 게 이해에 좋다.

2025.04.07 - [프로그래밍/Unity] - 25.04.07 / Bounding Box - AABB, OBB

 

25.04.07 / Bounding Box - AABB, OBB

게임 엔진에서 Bounding Box(경계 상자)란 3D 또는 2D 공간에서 특정 오브젝트(모델, 메쉬 등)를 간단한 상자 형태로 감싸는 최소한의 "외곽"을 의미한다. 주로 충돌 검출, 렌더링 최적화, 물리 연산에

peudann.tistory.com

 

몇몇 게임들을 보다보면, 아래 그림처럼 히트박스가 네모 모양인 걸 볼 수 있다. 

마인크래프트는 애초에 네모난 게임이지만 그렇다고 치자.

 

게임에서 히트박스가 단순한 박스(Box) 형태로 표현되는 가장 큰 이유는 계산의 단순화실시간 퍼포먼스 때문이다. 실제로 오브젝트의 표면이나 캐릭터의 자세를 1:1로 세밀하게 계산하려면, 다각형(폴리곤) 충돌 검사를 수행해야 해서 연산량이 크게 늘어난다. 이를 방지하고 빠르게 충돌(피격)을 감지하기 위해, 가장 단순화된 충돌 볼륨인 Bounding Box를 사용한다. 이 박스는 AABB(축 정렬 박스)일 수도 있고, OBB(회전 박스)일 수도 있다.


왜 "박스" 형태로 히트박스를 만드는가?

  • 1. 연산 비용 절감
    • 박스 형태의 충돌 검사는 계산 방식이 간단하다. 예를 들어 AABB끼리의 충돌은 X, Y, Z 축 각각의 최소/최대 범위가 겹치는지만 검사하면 된다.
    • 복잡한 다각형이나 메시 전체를 검사하는 것보다 훨씬 적은 연산량으로도 충분히 빠르고 대략적인 결과를 얻을 수 있다.
  • 2. 게임 플레이의 명확성
    • 플레이어 입장에서 "어디가 맞았는지" 직관적으로 이해하기 쉬울 때가 많다. 특히 격투 게임처럼 빠른 입력과 피격/가드 판정이 중요한 장르에서는 어느 정도 단순화된 판정이 게임성을 유지하고 밸런스를 조절하기에 편리하다.
    • 3D 게임에서도 총알이나 검격 판정 등을 박스 혹은 캡슐 형태로 두면, 플레이어에게 피격 판정이 일관성 있게 느껴지고 에러를 줄이는 데 도움이 된다.
  • 3. 실시간성 보장
    • 보통 1초에 수십~수백 프레임 단위로 충돌 검사를 해야 하므로, 1 프레임의 계싼이 무거우면 프레임 레이트가 떨어지고 입력 지연이 발생한다.
    • 박스 형태는 최소한의 계산으로 히트 여부를 확인할 수 있어, 네트워킹 환경에서 생길 수 있는 지연이나 렉을 줄이는 데에도 유리하다.

AABB vs OBB

  • AABB(Axis-Aligned Bounding Box)
    • 특징
      • 게임 월드(세계 좌표축)에 평행한 박스 모양.
    • 장점
      • 계산이 매우 간단해 대량의 오브젝트, 캐릭터가 동시에 있는 환경에서 충돌 후보를 걸러낼 수 있다.
      • 게임 엔진에서 Broad-Phase(1차 충돌 판단 단계)로 많이 사용한다.
    • 단점
      • 캐릭터가 회전하거나 기울어지면 AABB가 실제 모델보다 훨씬 커지거나(작아지기도 하지만 대부분은 커진다) 맞지 않는 부분도 포함될 수 있다.
      • 정확도가 떨어질 수 있으므로, 일부 게임은 AABB로 1차 필터링 후, 좀 더 세분화된 충돌 볼륨(OBB 또는 여러 개의 작은 박스)으로 2차 판정을 하기도 한다.
    • 예시
      • 오픈 월드 RPG나 슈팅 게임에서 수많은 적/객체의 "대략적인 위치 겹침"을 먼저 판별할 때.
      • 플레이어 주변 광역 공격이나 범위 스킬 판정 시, 큰 AABB로 대충 범위를 잡고 피격 여부를 빠르게 체크.
  • OBB (Oriented Bounding Box)
    • 특징
      • 오브젝트의 회전 상태에 맞춰 함께 기울어진 박스 모양.
    • 장점
      • AABB보다 실제 모델에 더 가깝게 밀착되므로, 히트 판정에서 "빈 공간"이 적고 정확도가 높다.
      • 모델이 회전해도 불필요하게 크기가 변경되지 않아, 판정이 좀 더 정밀해진다.
    • 단점
      • 충돌 검사에 필요한 수학적 연산이 AABB보다 복잡하다(비용이 더 발생한다).
      • Broad-Phase에서 대규모 객체를 한꺼번에 검사하기엔 부담이 될 수 있다.
    • 예시
      • 3D 격투 게임에서 캐릭터가 회전하며 공격할 때, 상대 캐릭터의 정확한 피격 여부를 판단하려고 OBB 히트박스를 사용.
      • TPS/FPS에서 플레이어 캐릭터나 섬세한 환경 오브젝트에 대해, 좀 더 정확한 충돌을 원할 경우.

실제 게임 사례

  • 2D 격투 게임(스트리트파이터, 킹 오브 파이터즈 등)
    • 캐릭터마다 여러 개의 박스(히트박스)를 겹쳐놓고, 특정 동작 프레임마다 이 박스들의 위치와 크기가 달라진다.
    • 이때 기본적으로는 Axis-Aligned 형태로 구성되어 계산을 단순화하며, 동작에 따라 여러 개의 박스를 세분화하여 정확도를 높인다.
  • 3D 액션/격투 게임(철권, 소울 칼리버 등)
    • 3D 모델이 회전하므로, AABB만 사용하면 실제 모델과 판정 차이가 커질 수 있다.
    • 일부 게임은 주 동작마다 OBB나 여러 조인트별 Capsule Collider 등을 배치하고, 이들을 조합해 실제 모델에 가까운 히트 판정을 구현한다.
  • FPS/TPS 게임(배틀필드, 콜 오브 듀티 등)
    • 플레이어나 NPC 캐릭터의 상하반신에는 기본적으로 Capsule Collider나 OBB를 두는 경우가 많다.
    • 총알이 날아오는 궤적과 박스(또는 캡슐) 간 충돌 검사를 통해 "명중 여부"를 체크하고, 더 세밀하게는 머리/몸/팔다리 등 여러 부위에 세분화된 히트박스를 사용한다.

대부분의 게임이 히트박스를 박스(또는 캡슐) 형태로 단순화 하는 이유는 충돌 검사 연산이 빠르고, 실시간 게임 플레이에 충분히 정확한 수준을 제공하며, 부정확함(빈 공간)으로 생기는 오차는 어느 정도 게임성이 허용하는 범위이기 때문이다.

 

결과적으로 게임 구현에서는 성능과 정확도의 균형을 맞추기 위해 AABB로 1차 판정을 하고, 필요할 때 OBB 또는 캡슐, 스피어 등으로 세밀 판정을 하기도 하며, 복잡한 상황에서는 여러 형태의 단순화된 히트박스를 조합해 실제 모델을 대략적으로 감싸는 방식을 많이 활용한다.