개요편집이의 제기
박스2D(Box2D)는 에린 캣토(Erin Catto)가 개발한 자유 오픈 소스 2차원 물리 시뮬레이션 엔진이다. C++로 작성되었으며 zlib 라이선스와 MIT 허가서로 배포된다[1][2]. 강체 역학, 충돌 감지, 조인트, 마찰, 반발력 등 2D 게임에 필요한 물리 계산을 제공하며, 플랫폼 독립적인 C/C++ 코드베이스로 다양한 운영체제와 언어 바인딩에서 사용할 수 있다[3].
역사편집이의 제기
개발 배경과 최초 공개
박스2D는 2006년 게임 개발자 회의(GDC)에서 에린 캣토가 발표한 물리 시뮬레이션 강연의 데모 엔진인 "박스2D 라이트(Box2D Lite)"로 시작되었다[2][3]. 이 라이트 버전은 교육용 목적으로 공개되었으며, 이후 정식 엔진의 기반이 되었다.
오픈 소스 전환과 호스팅 이전
2007년 9월 11일(자료에 따라 11월 11일), 소스포지(SourceForge)에서 오픈 소스 프로젝트로 정식 릴리스되었다[2][3]. 2010년 1월 17일에는 프로젝트 호스팅을 구글 코드(Google Code)로 이전하였고[2][3], 2015년 7월 12일에는 다시 깃허브(GitHub)로 이동하였다[3].
주요 버전별 변화
버전 2.0 (2008년 3월 6일): 지속적 충돌 감지(Continuous Collision Detection) 도입과 API 대폭 개편이 이루어졌다[2][3].
버전 2.4 (2020년 7월 27일): 다양한 변경사항과 함께 라이선스가 MIT 라이선스로 변경되었다[3].
버전 3.0 (2024년 8월 12일): 라이브러리 전체를 C 언어로 재작성하고 API를 전면 개편하였으며, 단일/멀티스레드 성능 향상과 더 안정적인 물리 솔버로 교체되었다[3]. 위키데이터에는 2.3.0, 2.3.1, 2.4.0, 2.4.1, 2.4.2, 3.0.0, 3.1.0, 3.1.1 등의 판이 기록되어 있다[1].
박스3D 발표
2026년 6월 29일, 박스2D 공식 웹사이트를 통해 새로운 3D 물리 엔진 "박스3D(Box3D)"가 발표되었다[3][4].
특징과 기능편집이의 제기
물리 시뮬레이션 핵심
박스2D는 구속된 강체 시뮬레이션(constrained rigid body simulation)을 수행한다. 볼록 다각형, 원, 에지 형태(edge shapes)로 구성된 바디를 시뮬레이션할 수 있으며, 바디들은 조인트(joint)로 연결되고 힘(force)에 의해 작동한다. 중력, 마찰, 반발력(restitution)도 적용된다[3].
충돌 감지 및 해결 시스템
충돌 감지와 해결 시스템은 세 부분으로 구성된다:
증분적 스위프 앤 프룬(incremental sweep and prune) 브로드 페이즈
지속적 충돌 감지(continuous collision detection) 유닛
안정적인 선형 시간 접촉 솔버(stable linear-time contact solver)
이 알고리즘들은 빠른 바디와 큰 스택을 효율적으로 시뮬레이션하면서 충돌 누락이나 불안정을 방지한다[3].
플랫폼 독립성 및 이식
엔진 자체는 플랫폼 독립적인 C/C++로 작성되어 C 컴파일러가 있는 모든 시스템에서 사용할 수 있다[3]. 고정소수점(fixed point)과 부동소수점(floating point) 모드 모두 컴파일 가능하며, 닌텐도 DS, Wii, 안드로이드, 블랙베리 10, iOS 등 모바일 기기와 주요 운영체제에서 구동된다[3].
자바, 어도비 플래시(ActionScript, Haxe), C#, 루아, 자바스크립트, D 언어 등으로 포팅되었으며, 파이썬, 다크베이직(DarkBASIC), BBC 베이직에서 컴파일된 라이브러리를 바인딩으로 사용할 수 있다[3].
라이선스 및 요금
초기에는 zlib 라이선스로 배포되었으나[1][2], 버전 2.4(2020년 7월)부터 MIT 라이선스로 변경되었다[3]. 두 라이선스 모두 상업적 이용, 수정, 재배포가 자유로운 허용적 라이선스이다. 위키데이터에는 zlib 라이선스와 MIT 허가서가 모두 기록되어 있다[1].
사용 게임편집이의 제기
박스2D를 사용한 대표적인 게임과 엔진은 다음과 같다[2][3]:
크레용 피직스 디럭스(Crayon Physics Deluxe)
림보(Limbo)
롤란도(Rolando)
인크레디봇(Incredibots)
앵그리버드(Angry Birds)
타이니 윙스(Tiny Wings)
쇼벨 나이트(Shovel Knight)
트랜스포마이스(Transformice)
해피 휠스(Happy Wheels)
노이타(Noita)
다수의 온라인 플래시 게임
코코스2d(Cocos2d) 또는 모스크리프(Moscrif) 게임 엔진, 솔라2D(Solar2D) 프레임워크를 사용하는 안드로이드/iOS 게임들
엔진 및 개발 도구 통합
유니티(Unity): 물리 엔진으로 통합 사용[2][3]
일반LibGDX: 네이티브 박스2D C 코드를 자바 래퍼로 감싸 물리 엔진으로 사용[2][3]
게임메이커: 스튜디오(GameMaker: Studio)[2][3]
스텐실(Stencyl): 플래시 및 iOS 내보내기 지원[2][3]
클릭팀 퓨전 2.5(Clickteam Fusion 2.5)[2][3]
디폴드(Defold): 2016년 킹(King) 출시[2]
플레임(Flame): 플러터(Flutter) 게임 엔진[3]
토크 2D(Torque 2D): 2009년 10월 30일 통합 발표[3]
블리츠베이직(BlitzBASIC/BlitzBasic)[2][3]
ENIGMA 개발 환경(ENIGMA Development Environment)[2]
아이소제닉 엔진(Isogenic Engine)[2]
BBC 베이직 포 SDL(BBC Basic for SDL)[3]
스크래치 기반 언어 터보워프(TurboWarp)(확장 갤러리), 펭귄모드(PenguinMod)(내장 확장)[3]
이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.
