Box3D 오픈 소스 3D 물리 엔진 출시
Box3D 오픈 소스 3D 물리 엔진 출시
Box3D는 검증된 Box2D 아키텍처를 기반으로 고성능 오픈 소스 3D 물리 솔루션을 제공합니다
Box3D는 Box2D의 설계 철학과 효율성을 3차원 공간으로 확장하기 위해 설계된 3D 물리 엔진입니다. Erin Catto가 개발하였으며, C17으로 작성되어 C API를 제공하므로 웹 기반 게임을 위한 WASM을 포함한 다양한 게임 엔진 및 플랫폼에 통합하기에 적합합니다.
핵심 기술 사양
Box3D는 Box2D와 거의 동일한 아키텍처를 유지하여, 이미 2D 형제 엔진을 사용 중인 개발자들에게 익숙한 워크플로우를 보장합니다. 주요 기술적 특징은 다음과 같습니다:
- 충돌 지원: triangle mesh 충돌, height-field 충돌, 그리고 baked compound 충돌을 포함합니다.
- 솔버 및 충돌 로직: sub-stepping 솔버, continuous collision detection (CCD), 그리고 광범위한 SIMD contact solver를 특징으로 합니다.
- 확장성: 대규모 islands를 위해 graph coloring을 활용하며, 선택적인 내부 스케줄러를 포함한 multi-threading hooks를 제공합니다.
- 월드 관리: 위치 데이터에 doubles를 사용하여 대규모 월드를 지원합니다.
- 유틸리티: 내장된 recording 및 replay 기능이 포함되어 있습니다.
개발 배경: Rubikon-Lite에서 Box3D로
Box3D는 Unreal Engine으로 제작된 서바이벌 게임인 The Legend of California의 특정 기술적 요구 사항에서 시작되었습니다. 개발자는 Unreal의 기본 물리 엔진인 Chaos에서 몇 가지 한계점을 발견했습니다. 구체적으로는 gyroscopic torques에 대한 지원 부족(가느다란 물체가 부자연스럽게 회전하는 현상)과 매끄러운 triangle mesh 위로 떨어지는 대형 capsule의 시뮬레이션 시 발생하는 불규칙한 동작이 문제였습니다.
이 문제를 해결하기 위해, Catto는 처음에 Dirk Gregorius가 유지 관리하는 Half-Life: Alyx에 사용된 Rubikon 엔진의 취미용 버전인 "Rubikon-Lite"를 fork했습니다. 시간이 흐르면서, Rubikon-Lite fork는 2D와 3D 프로젝트 간의 일관성을 유지하기 위해 API, 데이터 구조 및 알고리즘을 Box2D v3.0의 것으로 교체하며 진화했습니다. Rubikon-Lite의 일부 convex hull generation 및 충돌 알고리즘은 남아 있지만, 결과적으로 탄생한 엔진은 이제 Box3D입니다.
대규모 오픈 월드를 위한 최적화
Box3D는 수십만 개의 엔티티를 처리하는 서버 권한 오픈 월드를 위해 구축되었기 때문에, 규모와 복잡성에 특화된 최적화가 포함되어 있습니다:
- 복합 충돌 시스템 (Compound Collision System): 수천 개의 개별 충돌 메쉬를 로드하는 메모리 및 CPU 오버헤드를 피하기 위해, Box3D는 별도의 형상들을 하나의 최적화된 uber-shape으로 "cook"할 수 있게 합니다.
- Voxel 통합: 엔진은 grid-like voxel terrain에 특화된 median split을 사용하여 빠른 런타임 충돌 메쉬 구축을 위해 최적화되었습니다.
- Broad-phase 효율성: 엔진은 ragdoll, voxel, 환경 오브젝트의 서버 측 시뮬레이션을 위해 필요한 높은 엔티티 수를 관리하기 위해 빠른 broad-phase를 구현합니다.
현재 상태 및 생태계
Box3D는 현재 알파(alpha) 소프트웨어로 간주됩니다. 개발자는 곧 v0.1 태그를 달 예정이며, 장기적인 목표는 v1.0에 도달하는 것입니다. 향후 계획된 개선 사항으로는 개선된 joint solvers, 더 나은 ghost collision 완화, 그리고 강화된 캐릭터 이동 기능이 포함됩니다.
초기 도입 사례
알파 상태임에도 불구하고, Box3D는 이미 여러 프로젝트에서 활용되고 있습니다:
- The Legend of California: 엔진 개발의 주요 동기입니다.
- s&box: Facepunch Studios의 게임 플랫폼입니다.
- Esoterica: 오픈 소스 게임 엔진입니다.
- A 1000-player space game: Glenn Fiedler가 진행하는 멀티플레이어 프로젝트입니다.
커뮤니티 인사이트
업계 전문가와 개발자들은 특정 사용 사례에 대한 이 엔진의 잠재력을 주목하고 있습니다. 한 개발자는 이 라이브러리의 작은 크기(macOS 기준 약 916K)를 강조하며, 웹 게임을 위한 Emscripten/WASM 컴파일에 이상적인 후보라고 제안했습니다. 대규모 3D 물리 엔진 라이브러리는 웹에서 종종 제한적이기 때문입니다. 다른 개발자들은 Jolt 및 Rapier와 같은 기존 대안들과 비교하며, 최근 오픈 소스 3D 물리 옵션의 다양성이 증가하고 있음을 언급했습니다.