정의
박스2D는 2차원 물리 시뮬레이션을 위한 오픈소스 물리 엔진이다. 주로 비디오 게임 및 시뮬레이션 애플리케이션에서 물체의 움직임, 충돌, 관절 등을 현실적으로 구현하기 위해 사용된다.
개요
박스2D는 미국의 소프트웨어 엔지니어 에린 캐토(Erin Catto)가 2006년에 처음 발표하였다. C++로 작성되었으며, 다양한 프로그래밍 언어와 플랫폼에서 사용할 수 있도록 여러 바인딩이 제공된다. 이후 JavaScript(Planck.js, Box2DWeb), C#(Farseer Physics), Python 등 여러 언어로 포팅된 버전이 존재한다. 주요 게임 엔진(예: Unity, Godot)에서도 플러그인 형태로 통합되어 활용된다.
어원·유래
‘박스(Box)’는 물리 엔진 초창기에 사각형(박스) 형태의 물체를 기본 단위로 사용한 데서 비롯되었으며, ‘2D’는 2차원(2‑Dimensional) 공간에서 작동한다는 의미를 나타낸다. 정확한 네이밍 배경에 대한 공식 설명은 확인되지 않는다.
특징
- 강체 역학(Rigid Body Dynamics) – 물체의 질량, 관성, 마찰, 반발 계수를 설정하여 현실적인 움직임을 구현한다.
- 충돌 감지 및 응답 – 다각형, 원형, 사각형 등 다양한 형태의 충돌 영역을 지원하며, 충돌 시 반응을 자동으로 계산한다.
- 관절(Joint) 시스템 – 회전, 프리스톤, 거리, 스프링 등 여러 종류의 관절을 제공하여 복합 구조물을 모델링한다.
- 시간 스텝 고정 – 물리 연산을 일정한 시간 간격으로 수행해 시뮬레이션의 안정성을 높인다.
- 오픈소스 라이선스 – MIT 라이선스로 배포되어 상업 및 비상업 프로젝트에 자유롭게 사용할 수 있다.
- 다양한 바인딩 – C++, C#, JavaScript, Python 등 여러 언어에서 사용할 수 있도록 공식 및 비공식 바인딩이 제공된다.
관련 항목
- Chipmunk2D – 또 다른 2차원 물리 엔진.
- Box2DLite – 박스2D의 경량화 버전.
- Unity – 박스2D를 플러그인 형태로 사용할 수 있는 게임 엔진.
- Godot Engine – 내장된 2D 물리 엔진이 박스2D와 유사한 구조를 갖는다.
- Farseer Physics – C#용 박스2D 포팅.
- Planck.js – JavaScript용 박스2D 구현.
※ 본 문서는 확인된 자료에 기반하여 작성되었으며, 추가적인 상세 정보는 공식 문서 및 해당 프로젝트 저장소를 참고한다.