[소식] 게임 더 실감나게 만들려면 물리 알아야한다?
by ♣서로해♣ | 12.02.03 01:10 | 1,829 hit

[한겨레] 과학향기

자동차의 핵심은 엔진이다. 그런데 자체 개발한 엔진 대신 다른 회사 엔진을 사용하는 경우가 있다. 대표적인 예가 벤츠 엔진을 탑재한 체어맨이다. 하지만 체어맨은 벤츠와는 구분되는 고유 브랜드다. 특정한 성능을 갖는 고유 브랜드의 자동차를 빠른 시간 안에 생산하기 위해서는 이렇게 타 회사 엔진을 사용하는 것이 효율적일 수 있다.

자동차에서 엔진이 차지하는 역할과 게임에서 게임엔진이 차지하는 역할은 동일하다. 게임엔진은 게임 개발 과정을 대폭 단축시킨다. 또한 하나의 게임엔진은 여러 개의 게임에 사용될 수 있다. 게임엔진은 하나의 컴퓨터 프로그램이라 할 수 있는데, 이러한 프로그램에 여러 가지 기능을 덧붙여서 보다 큰 프로그램을 만든 것이 바로 게임이다.

게임엔진은 크게 ‘렌더링엔진(rendering engine)’과 ‘물리엔진(physics engine)’으로 나뉜다. 일반인에게 렌더링은 낯선 단어인데, 이는 3차원 그래픽 기술을 사용해 실제 세계와 같은 느낌의 영상을 화면에 그려주는 것을 말한다. 때문에 그래픽엔진이라 부르기도 한다. 가장 유명한 것은 ‘언리얼 엔진’이다. [그림 1]은 이 엔진을 사용해 영화와 같은 사실적인 영상을 만들 수 있음을 보여준다. ‘기어즈 오브 워’와 ‘스페셜 포스2’ 등 국내외 수많은 게임이 이 엔진을 사용했다. 물론 언리얼 엔진 말고도 다수의 상용 엔진이 존재한다. 예를 들어 ‘아이온’은 ‘크라이 엔진’을 사용했으며 ‘마비노기 영웅전’은 ‘소스 엔진’을 사용했다.

이렇게 고성능 렌더링엔진을 통해 사실적인 영상을 즐기게 된 게임 사용자들은 게임 공간에서 물체의 움직임 역시 사실적으로 표현되기를 원했다. 물리엔진은 바로 이런 요구에 대한 응답 차원에서 개발된 것이다. 물리엔진은 게임 공간을 구성하는 물체들이 실제 세계의 물리 법칙에 따라 움직이도록 처리해주는 프로그램을 말한다.

우리의 일상 공간을 지배하는 물리 법칙은 뉴턴의 운동법칙이고, 이의 핵심은 라는 공식이다. 즉, 질량 인 물체에 라는 힘을 가하면 가속도 가 발생한다. 필자는 고등학교 시절 이 공식이 가져다 준 환희를 잊지 못한다. 세상 모든 물체의 움직임을 지배하는 공식, ! 물리엔진의 핵심 역시 를 사용해 물체의 속도와 위치를 계산하는 것이다.

중고등학교 물리를 공부했다면 누구나 이해할 수 있는 간단한 예를 들어 물리엔진을 설명해 보자. 영화와 마찬가지로 게임은 1초에 수십 개의 영상을 연속적으로 보여줘서 움직임을 묘사한다. 초당 30개의 영상을 보여주는 경우를 생각해 보자.


어떤 물체에 힘이 가해져 움직이는 경우 우리는 초가 지날 때마다 물체의 위치를 계산해서 이를 화면에 그려줘야 한다. 힘 와 물체의 질량 이 주어지면 이를 에 대입해 이 물체에 발생한 가속도 를 계산한다. 가속도를 적분하면 속도가 되는데, 이를 위해서는 라는 익숙한 공식을 쓴다. 여기에서 는 초기 속도, 는 시간을 말한다. 앞서 계산한 가속도 에 을 곱하고 이를 에 더하면 속도 를 얻는다. 속도를 적분하면 위치가 계산되는데, 이를 위해서는 라는 또 다른 익숙한 공식을 쓴다. 여기에서 는 초기 위치를 나타내는데, 에 을 대입하면 초 지난 후의 물체의 위치 가 계산된다. 바로 이 위치에 해당 물체를 놓고 렌더링엔진을 이용해 그 물체를 포함한 게임 공간을 그린다. 초마다 이 작업을 되풀이하면 물리 법칙에 따라 사실적으로 움직이는 물체를 묘사할 수 있다.

슈팅 게임 등에서 포탄의 궤도는 위와 같은 방식에 중력을 적용해 계산할 수 있다. 하지만 게임 세계에는 포탄처럼 간단한 물체만 있는 것이 아니다. 럭비공처럼 이리저리 튀는 물체도 있고, 옷과 같은 변형체도 있으며, 물이나 연기와 같은 유체도 존재한다. 이들 움직임을 묘사하기 위해서는 미분방정식을 풀어야 하는 등 복잡한 수학적 풀이 과정을 거쳐야 한다. 하지만 여기서도 기본은 를 사용해 속도와 위치를 계산하는 것이다. 최근 제작된 모든 게임에는 어떤 형태로든 물리엔진이 들어가 있다고 보면 된다. [그림 2]는 물리엔진에 의해 생성된 사실적 영상을 보여준다.

대표적인 물리엔진으로는 ‘하복(Havok)’과 ‘피지엑스(PhysX)’가 있다. 하복은 ‘헤일로 3’, ‘스타크래프트 2’, ‘엘더스크롤5: 스카이림’, ‘언차티드’ 등의 게임에 사용됐고 소스 엔진 등에 통합 판매되기도 한다. 피지엑스는 ‘기어즈 오브 워3’, ‘배트맨: 아캄 시티’, ‘앨리스: 매드니스 리턴즈’, ‘마피아2’ 등의 게임에 사용됐고 언리얼 엔진 등에 통합 판매되기도 한다.

물리엔진은 게임에서만 필요한 것은 아니다. ‘트랜스포머’ 등과 같은 영화 특수효과에서도 물리 법칙을 구현하는 것은 필수적이다. 그런데 영화 특수효과에서 사용되는 물리엔진과 게임 물리엔진 사이에는 차이점이 있다. 1초에 24장의 화면을 보여주는 영화에서는 고품질 영상을 얻기 위해서 한 화면을 만드는데 몇 시간이 걸리더라도 이를 감수한다. 하지만 게임에서는 1초에 30장 이상의 화면을 그 자리에서 생성해야 한다. 따라서 고난도의 복잡한 물리 공식을 초 마다 풀어내는 것은 어려운 일이다.

초기 물리엔진은 포탄 탄도 계산 등의 간단한 기능만을 제공했으나 이후 지속적으로 기능을 확장해서 지금은 약간 어색한 수준이나마 옷과 같은 변형체, 연기와 같은 유체도 처리할 수 있다. 이는 컴퓨터 하드웨어와 소프트웨어의 발달 덕분에 가능해졌다. 특히 눈부시게 진화하는 CPU와 그래픽 카드에 힘입은 바가 크다.

복잡한 변형체와 유체 등을 처리하는 이론은 이미 ‘캐러비안의 해적’ 등과 같은 영화의 특수효과 제작에 이용되고 있다. 이런 정도의 물리 효과를 게임에서 구현하기는 아직 어렵다. 하지만 컴퓨터 하드웨어와 소프트웨어는 꾸준히 발전하고 있기 때문에 파도치는 바다 등을 표현하는 물리엔진의 등장은 멀지 않았다고 말할 수 있다.

필자가 관찰한 바에 따르면 컴퓨터학과에 입학하는 학생 중 10% 정도는 게임 개발자를 꿈꾼다. 이런 신입생과 상담할 때 항상 하는 말이 있다. “게임 산업을 선도하는 개발자가 되고 싶은가? 그렇다면 수학과 물리 공부에 집중하라.” 이제 물리 효과를 생성하지 못하는 게임은 상상할 수 없고 물리와 수학을 모른다면 절대로 훌륭한 게임 개발자가 될 수 없기 때문이다.

글 : 한정현 고려대학교 컴퓨터통신공학부 교수


추천 0

게임 소식 다른 게시글

게시물 더보기

게임 소식 인기 게시글

  1. 아스달 연대기가 유저들 많네여 인기가 상당…48,884
  2. 스타시드 아스니아 트리거! 컴투스 미디어 쇼…44,799
  3. 메이플 월드 크리에이터 모집 최대 4천만원지원48,339
  4. 파워레인저 올스타즈 재밌습니다48,230
  5. 나이트 크로우에 등장한 거란의 명장 소배압48,022
  6. 서든 어택 영상 뽑아준거 재밌던데43,582
  7. 아도르 수호의 여신 AI 일러스트 이벤트 참여…43,466
  8. 귀여운 고양이 가득한 캣판타지44,956
  9. 니케 글로벌 창작 대회 수상작45,595
  10. 러브앤딥스페이스 출시 전 진행 중인 이벤트 …41,177

2024.06.26 07:00 기준