트렌드깃허브 · 쇼핑에서 뜬 것, 매일 07:30 · English

깃허브 · 2026년 11월 8일 기준 · 깃허브에서 보기 →

erincatto/box3d

게임용 3D 물리 엔진

게임 속 물체의 충돌과 운동을 정밀하게 계산하는 3D 물리 엔진

게임 속 캐릭터가 벽을 뚫지 않고, 수많은 물체가 자연스럽게 쌓이도록 만드는 계산 과정을 직접 제어할 수 있습니다. Box3D는 게임 개발을 위한 3D 물리 엔진으로, 충돌 감지와 강체 운동을 처리하는 코어만 제공합니다. C17 표준으로 작성되어 플랫폼 간 동일한 결과를 보장하며, 대규모 물체 시뮬레이션에 최적화되어 있습니다.

충돌 감지와 물체 형태 지원

Box3D는 빠르게 움직이는 물체가 다른 물체를 뚫고 지나가는 현상을 막기 위해 연속 충돌 감지를 수행합니다. 구, 캡슐, 볼록한 껍질, 삼각형 메시, 지형 데이터 등 다양한 형태의 물체를 지원하며, 하나의 물체에 여러 형태를 동시에 적용할 수도 있습니다. 레이 캐스트나 오버랩 쿼리를 통해 특정 영역에 물체가 있는지 확인하고, 센서 시스템을 이용해 물체가 특정 영역에 들어왔을 때 이벤트를 발생시킬 수 있습니다. 또한 캐릭터 이동자를 내장하여 게임 캐릭터의 움직임 처리를 지원합니다.

강체 솔버와 조인트 시스템

물체의 움직임은 Robust Soft Step 알고리즘을 기반으로 한 강체 솔버가 처리합니다. 이 방식은 물체가 빠르게 이동하거나 회전할 때도 물리 법칙이 깨지지 않도록 연속 물리 계산을 수행합니다. 회전, 직선 이동, 거리 유지, 모터, 용접, 바퀴 등 다양한 유형의 조인트를 제공하며, 각 조인트에는 한계, 모터, 스프링, 마찰력을 설정할 수 있습니다. 물체의 움직임 변화나 수면 상태 전환 시 이벤트를 받아 처리할 수 있어 게임 로직과 연동하기 쉽습니다.

데이터 중심 설계와 결정론

이 엔진은 데이터 중심 설계 원칙을 따르며, 다중 스레딩과 SIMD 명령어를 활용하여 성능을 최적화했습니다. 특히 수많은 물체가 한곳에 쌓이는 상황을 효율적으로 처리하도록 설계되어 있습니다. 플랫폼 간 결정론을 보장하여 동일한 입력이 주어지면 모든 환경에서 동일한 결과가 나오도록 합니다. 물리 시뮬레이션 과정을 기록하고 다시 재생할 수 있는 기능도 포함되어 있어 디버깅이나 분석에 유용합니다.

빌드 환경과 프로젝트 적용

Box3D를 사용하려면 CMake와 git이 설치되어 있어야 합니다. CMake 프리셋을 사용하는 것이 권장되며, Windows, Linux, macOS, MinGW 환경에 따라 각각의 명령어를 실행하면 됩니다. 코어 라이브러리에는 C 런타임과 Unix 환경의 libm 외에는 추가 의존성이 없습니다. 프로젝트에 적용할 때는 FetchContent를 통해 원격 저장소에서 가져오거나, 로컬에 복사한 뒤 add_subdirectory로 포함시킬 수 있습니다. 샘플 앱은 sokol을 사용하여 Windows에서는 D3D11, macOS에서는 Metal, Linux에서는 OpenGL 4.5로 렌더링되며, imgui를 통해 그래픽 사용자 인터페이스를 제공합니다.

사용 전 확인 사항

Box3D는 Windows, Linux, Mac에서 빌드와 실행이 가능합니다. 라이브러리 빌드에는 C17을 지원하는 컴파일러가 필요하고, 샘플 빌드에는 C++20을 지원하는 컴파일러가 필요합니다. 성능 향상을 위해 SSE2와 Neon SIMD 수학을 사용하며, 필요 시 BOX3D_DISABLE_SIMD를 정의하여 비활성화할 수 있습니다. x86 환경에서는 CPU가 지원할 경우 AVX2 커널이 런타임에 선택되며, -DBOX3D_AVX2=OFF로 설정하여 비활성화할 수 있습니다. 현재 풀 리퀘스트는 비활성화되어 있으며, 버그나 기능 요청은 이슈로 접수해야 합니다. MIT 라이선스로 배포되어 상업적 사용이 가능합니다.

AI가 이 저장소의 README를 읽고 2026년 10월 4일에 쓴 글입니다. 사실관계는 깃허브 원문이 기준입니다.

숫자로 본 저장소

깃허브 트렌딩 기록
트렌드가 기록을 시작한 2026년 6월 19일 ~ 11월 8일 가운데 하루 · 처음 오른 날 7월 31일

2026년 11월 5일 기준으로 깃허브에서 읽은 숫자입니다. 2026년 11월 8일에는 새로 읽은 숫자가 없습니다.

언어
C
별
6,745
기여자
2
포크
382
최근 릴리스
v0.1.0 · 2026년 6월 30일
커밋
62
마지막 커밋
2026년 10월 28일
열린 이슈
31
열린 PR
1

깃허브에서 보기 →