10분이라도 공부하자
안녕하세요 코드아키텍트입니다.
이직과 적응은 꽤나 어려운 일입니다. 회사에서 주마다 발표가 있다는 핑계로 글을 돌보지 못했습니다. 이제는 학생처럼 공부할 수 없다는 사실도 인정하게 되었습니다. 그렇다면 어떻게 해야 할까요? 도전을 끝까지 이어나가기 위해서는 하루에 10분이라도 공부해서 여러분과 공유하는 게 맞다는 생각이 들었습니다. 그런 의미에서 조금씩이라도 배운 내용을 정리하며 진행하도록 하겠습니다.
물리법칙 시작
우리가 접하는 3D는 정적이거나 동적인 형태를 띱니다. 애플 사이트에 가서 보는 현란한 아이폰의 모습은 정적인 예시입니다. 왜냐하면 다른 물체와 부딪히는 장면을 보여주지 않기 때문입니다. 반면, 게임에서는 매우 동적인 모습을 볼 수 있습니다. 물체와 물체가 부딪히면 손상되거나 예측하지 못한 방향으로 진행하는 등 그런 요소가 물리적인 부분으로 볼 수 있습니다.
성능최적화의 첫걸음 : 3D 하지만 2D
게임 업계에선 느 성능 최적화가 중요한 이슈입니다. 모두가 슈퍼컴퓨터와 최신 스마트폰을 소유한다면 성능에 대해 크게 신경 쓰지 않아도 될지 모릅니다. 하지만 우리의 장비들은 자원의 한계가 있습니다. 특히 3D는 자원을 가장 많이 잡아먹는다고 볼 수 있습니다. 그래서 자원을 최적화하는 방안은 항상 필요합니다.
극단적으로는 3D처럼 보이지만 실제로는 2D요소만 작동하는 경우도 있습니다. 이번 강의에서는 아래 예시가 앞에서 언급한 3D 같지만 2D인 사례라고 했습니다.
자바스크립트 라이브러리
여유가 많거나 머리가 좋다면 모든 물리 법칙을 직접 구현하는 것도 본인에겐 큰 공부가 될 것입니다. 하지만 그러기엔 우리가 배울 것은 많습니다. 물리법칙 라이브러리를 따로 관리할게 아니라면 물리와 관련된 것은 라이브러리를 가져다 쓰는 것이 좋습니다. 강의에서 제안하는 2D, 3D 라이브러리는 아래와 같습니다.
3D
Ammo.js (더 많이 사용)
Cannon.js (더 쉽기 때문에 여기서 사용)
Oimo.js
2D
Matter.js
p2.js
Planck.js
Box2D.js
그리고 3D 중 Cannon.js를 사용해 이번 강의를 끌어간다고 합니다. 다음 글에서는 구현 내용을 공유하도록 하겠습니다.