스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록

2024.07.02 TIL - Circle VS Box VS Capsule Collider 충돌 연산량 비교

테크러너 2024. 7. 2.

 

 

CPU(ms)

Circle  6.5 ~ 8.2
Box  6.8 ~ 8.2
Capsule 6.9 ~ 8.2

 

FPS(높을수록 빠름)

Circle  114 ~ 160
Box  117 ~ 150
Capsule 114 ~ 150

 

각 콜라이더는 100개를 기준으로 테스트 해봤다.

100개라 그런지 눈에 띄게 차이가 나지 않는다.

 

 

300개 기준 FPS(높을수록 빠름)

Circle  110 ~ 126
Box  94 ~ 112
Capsule 95 ~ 110

 

 

GPT한테 충돌 연산량 비교 질문한 답변 결과▼

더보기

유니티에서 Circle, Box, Capsule Collider의 충돌 연산량을 비교하는 것은 게임 성능 최적화에 중요한 요소입니다. 각 Collider는 다양한 형상의 충돌을 처리하며, 각각의 연산량과 성능에 미치는 영향을 비교하는 것은 매우 유용합니다.

비교 기준

  1. 충돌 계산 복잡도
  2. 메모리 사용량
  3. 물리 엔진 최적화

Circle Collider

  • 장점: 가장 단순한 형태의 콜라이더로, 원형의 충돌 계산이 매우 단순합니다.
  • 단점: 정확한 충돌이 필요할 때는 부적합할 수 있습니다.
  • 충돌 계산: 두 원 사이의 거리 계산을 기반으로 하며, O(1) 복잡도를 가집니다.

Box Collider

  • 장점: 직사각형 형태의 충돌 계산이 상대적으로 단순하며, 여러 방향으로의 충돌을 처리할 수 있습니다.
  • 단점: 원형 또는 복잡한 형태의 오브젝트에 비해 비효율적일 수 있습니다.
  • 충돌 계산: AABB(축 정렬 경계 상자) 충돌 검사로, 상대적으로 빠른 편이며 O(1) 복잡도를 가집니다.

Capsule Collider

  • 장점: 인체와 같은 길쭉한 형태의 오브젝트에 적합하며, 복합적인 충돌 처리가 가능합니다.
  • 단점: 연산량이 다소 높을 수 있으며, 다른 콜라이더에 비해 메모리 사용량이 많을 수 있습니다.
  • 충돌 계산: 원형과 직선 부분의 조합으로, 충돌 계산이 Circle 및 Box Collider보다 복잡할 수 있습니다. 복잡도는 일반적으로 O(n)입니다.

연산량 비교 실험

다양한 상황에서 이 세 가지 콜라이더의 충돌 연산량을 비교하기 위해, 다음과 같은 실험을 수행할 수 있습니다.

  1. 동일한 수의 Collider 배치: 동일한 수의 Circle, Box, Capsule Collider를 게임 월드에 배치합니다.
  2. 충돌 횟수 기록: 일정 시간 동안 발생한 충돌 횟수를 기록합니다.
  3. 프레임 속도 측정: 각 콜라이더 조합에 대해 프레임 속도를 측정합니다.

이러한 실험을 통해 얻은 데이터를 기반으로 각 콜라이더의 성능을 비교할 수 있습니다. 예를 들어, Circle Collider가 가장 간단한 충돌 계산을 가지고 있어 가장 높은 프레임 속도를 유지할 가능성이 높습니다. 반면 Capsule Collider는 복잡한 형태로 인해 상대적으로 낮은 성능을 보일 수 있습니다.

실험 결과는 다음과 같은 표로 정리할 수 있습니다.

Collider TypeAverage Collision Checks per SecondAverage Frame Rate (FPS)
Circle Collider 1000 60
Box Collider 800 55
Capsule Collider 600 50

위 표는 가상의 데이터 예시이며, 실제 실험 결과는 다를 수 있습니다.

유니티에서 각 Collider의 충돌 연산량을 직접 비교해보는 실험을 수행하면, 최적화할 때 어떤 콜라이더를 선택해야 할지에 대한 중요한 인사이트를 얻을 수 있습니다.

실험결과대로 Circle Collider가 충돌했을 때 연산이 빠른 것 같다.

논문을 쓸건 아니라서 실험은 100개, 300개에서 그쳤지만, 좀 더 최적화하고 싶은 마음에 실험을 해봤다.

결론은 Circle > Box > Capsule 순으로 빠르다.

 

하지만 언제나 Circle이 빠르다는 생각은 안하는게 좋을 것 같다. 상황마다 다를 것이니...

반응형

댓글