물리엔진이라면 당연히 3D 세계에서나 필요하다고 여기는 때가 있었죠. 그때 갑자기 엄청 신기한 2D 게임 하나가 나옵니다.
<Crayon Physics Deluxe>
자신이 직접 손으로 그린 그림이 그 모양 그대로 게임세계에서 물체로써 동작하는 아이디어를 보여주었습니다. 해당 물리엔진의 제작자도 Sweet (아아~ 달콤해~) 라며 좋아하시네요ㅎㅎ (링크)
또한 각종 플래시 게임에서 간단한 2D 물리들을 이용한 게임들이 등장하기 시작했습니다. 그러다가 2D 물리를 이용한 초초초초대박 게임이 나왔습니다. 바로 학교폭력근절 친구 앵그리버드(Angry Bird)죠~!! (무려 다운로드 수가 3억 5천이랍니다;;;)
<Angry Bird>
두 게임에는 공통점이 있습니다. 바로 같은 물리엔진을 사용했는데요. Box2D 라는 물리 엔진입니다.
이 엔진의 제작자는 Erin Catto 라는 아저씨구요. 현재 블리자드에서 디아블로3 랙돌을 담당하는 것으로 보입니다. (이번 GDC 2012에서 디아블로3 랙돌 관련 발표를 하셨네요. (발표자료 : http://box2d.googlecode.com/files/GDC2012_ErinCatto_Ragdolls.pdf)
< Erin Catto, Twitter: @erin_catto >
Box2D 엔진은 완전 공개용이구요. 앵그리버드 처럼 초대박이 났어도 에린 까또 아저씨한테는 땡전한푼 안들어가나 봅니다. 앵그리버드 만든 아저씨한테 크레딧이라도 올려달라고 정중하게 말씀드리네요~ㅎㅎ
Erin: “Hi Peter, could you tell me which physics engine Angy Birds uses?”
Peter: “Box2D”
Erin: “Great. Would you consider giving credit to Box2D in your game?”
Peter: “Yes, of course”
Erin: “Thank you! By the way, I am Erin Catto the creator of Box2D”
Peter: “Great! I would like to talk to you after the session”
Box2D 엔진 소스는 아래 주소에서 받으실 수 있습니다.
보통 물리엔진을 만들고 싶어서 공개용 소스를 열어보면 방대한 양에 어디서부터 봐야할지 감이 잘 안옵니다. Box2D도 다른 공개 물리엔진 보다 그 크기가 작긴 하지만 처음 입문하는 사람이 보기에는 쉽지 않죠~ (사용자가 아닌 물리 엔진 제작 입문자로써..)
그래서 에린 까또 아저씨는 순수하게 박스로만 강체 물리를 구현하는 매우 가볍지만 라이트하고 작지만 스몰하고 짧지만 쇼트한 Box2D Lite 코드를 공개해주셨습니다. Box2D 본 엔진과는 전혀 상관없이 독립적으로 실행되는 완전한 2D 물리 예제입니다.
http://code.google.com/p/box2d/downloads/list 에 보시면 중간 부분에 있습니다.
동영상을 보시면, 기본적인 강체 물리가 정확히 구현된 것을 확인하실 수 있습니다. (동영상 후반부에는 시소도 있고 흔들다리도 있습니다.)
< 실행 동영상, 중간에 난입하는 녹색 박스는 스페이스 키를 누르면 랜덤으로 발사된다.>
물리 엔진을 처음 공부하시는 분들은 엔진의 전반적인 흐름이 어떻게 흘러가는지 이 Box2D Lite 소스코드부터 시작하시는게 어떨까 추천해봅니다~!!!
반응형
'프로그래밍' 카테고리의 다른 글
컴파일 경고하나당 3대씩 맞습니다 (28) | 2012.03.16 |
---|---|
게임 오브젝트 설계.. 나도 잘하고 싶다! #3 (21) | 2012.03.15 |
나... 나도 병렬 프로그래밍 할래!! - #4 (7) | 2012.03.10 |
일리히트엔진 해부학 4강 - Mesh 기본개념이해 (3) | 2012.03.06 |
네트워크 게임 튜터리얼 4 - 로비, 그리고 할말이 많다 (22) | 2012.03.06 |