2012년 9월 15일 토요일

0026 2D Physics Engines & Classic Mechanics


게임 개발에는 물리엔진이 참 중요한 요소다. 게임 속의 물체들이 실제와 같이 '그럴 듯하게'움직이도록 시뮬레이팅 하는 것을 도와주기 때문이다.

2D게임의 물리엔진은 대표적으로 Box2D와 Chipmunk Physics가 있다. 나는 아무 생각없이 Chipmunk Physic를 선택했었고, 최근 이를 이용해 간단한 게임을 만들었다.

지금은 Box2D를 공부하고 있다. Chipmunk와 비교하자면, (Chipmunk에서 제시한 자료에 따르면) Chipmunk가 더 빠르다. 다만, Chipmunk의 모든 기능을 사용하려면 유료이고, 개인 개발자인 나에게는 부담스러운 가격이다. 무료로 제공되는 기능은 C Api이다. 때문에 때에 따라서 쓰기 번거롭기도 하다.

때문에 업계에선 실제로 Box2D를 더 많이 쓰는 것 같다. Angry Birds나 Tiny Wings 모두  Box2D를 이용해 만들어 졌다. C++로 구현되었으며 완전 무료다.

서론이 길었는데, 물리엔진을 더 재미있게 갖고 놀기 위해, 대략에 물리 개념을 공부해야겠다는 생각이 들었다. Box2D의 가이드 문서에서도, 물리 개념을 정확히 알지 못하면 Googling을 통해 공부하라고 제안하고 있기도 하다.

물리는 고등학교 때 보고 거의 안 봤으나, 주입식 교육의 힘인진 몰라도 나오는 공식들은 매우 친숙했다. 이 자료들을 읽으면서 엔진을 쓸 때 명확하지 않은 채 그냥 썼던 값들, Torque나 Moment of Inertia같은 것들에 대한 이해도 가 조금은 높아져서 좋았다.

최근 공부를 함에 있어서 고민이 되는 건, '어느 정도 아는 것이 좋을까'이다.
요즘에는 알아야할 것이 너무나 많다. '시간이 없다'는 것은 제일 형편없는 핑계라고 믿고 있지만, 알아야할 것이 너무 많다는 사실 하나 만으로도 날 압박감에 시달리게 한다.

Wiki의 공부도, 각각의 개념들에 대해 너무 자세하게(개념의 탄생 배경, 철학자들의 의견 등등)이 나와 있어서 얼마나 꼼꼼히 읽을 까에 대한 딜레마에 빠졌다. (Classic Mechanics, 대부분 뉴턴에 의해 명확해진 물리 개념들 부분만 중점적으로 읽었고, 이 조차 여러가지 응용에 관해서는 뛰어 넘었다.)

그 과정에서 한 가지 결론을 내렸다.
현대인의 지식은, '어떤 개념들이 있는가'라는 지식이 '얼마나 자세히 아는가'의 지식보다 중요할 수 있을 거란 사실이다. 개념들에 대한 이해를 적당히 하고, 나중에 정작 자세한 개념이 필요해지면 언제든 다시 찾아볼 수 있는 세상이니까 말이다.

댓글 없음:

댓글 쓰기