당구 게임에서 서로 충돌하는 공들… 탄도 미사일… 한참 속력을 내고 있는 차에서 코너로 돌아가기… 이와 같은 다이나믹한 액션이 컴퓨터 소프트웨어에서 표현 되려면 응용물리학에 기본을 둔 모델만이 이러한 리얼리즘의 수준을 한층 더 증가시켜 줄 수 있을 것이다.
데이비드 보그는 최근 오라일리에서 출간한 『Physics for Game Developers』의 집필을 이제 막 마쳤다. 이 책은 거의 정지 화면이 없는 리얼한 모델에 컴퓨터 게임, 시뮬레이션, 애니메이션의 굉장한 내용을 만들기 위해 응용할 게임에서의 물리학의 법칙을 어떻게 적용하는지에 대해 기술하고 있다. 우리는 최근 컴퓨터 게임에서 물리학에 기본을 둔 리얼리즘의 역사와 배경에 대해 대이비드와 이야기를 나누었다. 그리고 이것이 왜 게임 개발자들에게 중요한 정보인지에 대한 이야기도 나누었다.
스튜어트: 선생님께서 가지고 계신 배경사상에 대해 말씀해 주시겠습니까?
보그: 해양 건축학자이자 해양 엔지니어로서 나는 컴퓨터 시뮬레이션을 실험하고 배와 보트의 움직임에 따른 파도의 영향 및 호버크래프트의 효율성과 같은 것들을 측정하는 분석 도구를 개발하는 일을 합니다. 그리고 대학 수준에 해당하는 배 설계, 건축 분석과 같은 분야에 대해 강의도 하며 가끔씩은 해양 건축 및 소프트웨어 개발과 같은 주제에 대해 고등학교에서 강의를 합니다.
실무적인 엔지니어링 경험이외에도 나는 크레센트 비전 인터렉티브(Crescent Vision Interactive)라는 내 회사를 통해 컴퓨터 게임 개발과 컨설팅을 전문적으로 하고 있습니다. 우리 회사가 최근 참여한 프로젝트로는 대규모 멀티플레이어 온라인 롤플레이 게임(Oberin, 매킨토시용 게임), 자바 기반의 멀티플레이어 게임, PC 대 매킨토시 게임 포트(탈출과 요새 같은) 등등이 있습니다.
그리고 지금 현재 공학과 응용 과학 분야의 박사학위를 취득하기 위해 열심히 공부하고 있습니다. 내 연구 분야는 SPH(Smoothed Particle Hydrodynamics)와 같은 기술을 사용하여 다양한 현상을 연구하는 수중 시뮬레이션이 포함되어 있습니다.
스튜어트: 이 책은 주로 누구를 위한 책입니까? 그리고 이 책을 이해하기 위해 요구되는 사전 지식은 무엇입니까?
보그: 이 책은 물리학에 기본을 둔 현실감을 게임에 더하고 싶어하는 비디오 게임 개발자들을 위한 책으로 특히 이와 같은 물리학을 어디서부터 어떻게 시작해야 할 지 모르는 사람들을 위한 책입니다. 내가 이 책의 첫 장부터 물리학의 법칙들을 다루었다고 해서 독자들이 물리학 전문가가 될 필요는 없다고 생각합니다. 하지만 나는 이 책을 읽는 독자들이 수리에는 어느 정도 깊은 조예를 갖고 있다고 가정하고 책을 썼습니다. 독자들을 위해 대부분의 중요한 방정식을 유도해 내는 것까지 서술했지만 그것은 미적분과 같은 개념에 독자들이 익숙해지도록 설정한 의도였습니다.
스튜어트: 게임 개발자들을 위한 책을 쓰게 된 계기는 무엇이었습니까?
보그: 나는 12살 때부터 프로그래밍을 시작했습니다. 그때 이후로 계속 게임 프로그래밍에 대단한 흥미를 가지고 있었지요. 더 정확하게 말한다면 내가 진짜 관심이 있었던 분야는 현실세계의 행동과 닮은 게임을 프로그래밍 이었습니다. 그 당시에는 그러한 현실감을 부여하기 위해 내가 진짜 필요한 것이 물리학이라는 사실을 알지 못했습니다. 그렇지만 고등교육을 받으면서 나는 더 실제감이 느껴지는 게임을 만들기 위해 내 공학적 지식을 적용할 수 있다는 것을 깨달았습니다. 실제로도 나의 전문적인 공학작업 중 많은 부분은 속력을 내고있는 보트 성능 시뮬레이션과 같은 실제 세계 시스템의 컴퓨터 시뮬레이션을 만드는 것과 관련되어 있습니다.
지난 몇 년간 전문적으로 게임에 몰입하게 되면서 나는 물리학이나 정통 공학적 배경지식이 없는 게임 개발자들을 위한 정보가 부족하며 특히 게임에 물리학을 더하기 위해 알아둘 필요가 있는 것들과 관련하여 경각심을 불러 일으킬만한 광범위하면서도 핵심만을 담은 정보 리소스가 없다는 것을 발견했습니다.
스튜어트: 이 책이 게임 이외의 다른 프로젝트에 참가하고 있는 프로그래머들에게도 필요한가요? 예를 들어 설명해주실 수 있겠습니까?
보그: 물론이죠. 내 책에서 언급된 법칙들은 항공기의 비행 역학이나 호버크래프트의 효율 모델링을 위해 엔지니어들이 사용한 엔지니어링 분석 시뮬레이션과 동일한 법칙과 기술들입니다. 따라서 내 책에는 엔지니어들이 설계하거나 분석하게 될지도 모를 시스템의 실시간 시뮬레이션을 작성할 때 도움이 될만한 법칙들이 있습니다. 당연히 그때 그들의 초점은 시각적인 효과나 속력보다는 절대적인 정확함에 맞추어지겠지요. 어쨌든 간에 기술이란 기본적으로는 같은 것이니까요. 따라서 3차원 그래픽 아티스트와 프로그래머들도 물리적으로 기본이 되어 있는 플러그 인에 관련된 책을 쓸 수 있다는 말이지요.
스튜어트: 오늘날 게임 개발자들에게 어떤 도구를 추천하시겠습니까? 책에서 언급된 물리학의 개념과 가장 쉽게 조화를 이룰 3차원 패키지에는 어떤 것이 있다고 생각하십니까?
보그: 글쎄요… C/C++ 컴파일러는 필수사항 입니다. 내 개인적으로는 마이크로소프트의 비주얼 C++과 메트로웍스의 코드워리어(CodeWarrior)를 사용합니다. 그리고 3차원 그래픽 API로는 마이크로소프트의 Direct3D와 OpenGL를 사용하죠. 이 두 가지 사항은 프로그래밍 차원에서는 충분히 저수준에 속하는 것이지만 물리학이라는 엔진에 3차원 그래픽을 쉽게 통합할 수 있게 해주는 데는 적격입니다.
스튜어트: 리얼리즘이라는 관점에서 볼 때 책에서 언급된 물리학 개념을 사용해서 획득할 수 있는 세분화된 게임의 요소로는 어떤 것이 있는지 구체적인 예를 들어주실 수 있는지요?
보그: 물론이죠. 우리는 발사체의 종류에 상관없이 그것을 시뮬레이션화 할 수 있습니다. 예를 들자면 총구에서 발사되어져 나오는 총알이라든지 미사일, 수류탄 같은 것들이 되겠네요. 스포츠 게임에서도 공의 모형을 만들기 위해 물리학을 사용합니다. 예를 들어 여러분은 야구에서 다양한 피치를 구사하도록 모델링하거나 클럽에서 골프공이 튕겨져 나간 후 골프공의 역학을 모델링하기 위해 물리학을 사용할 수 있습니다. 폭발하는 장면과 같은 특수 효과를 사용하는 게임은 모두다 폭발로 인해 파편들이 흩어지는 장면을 모델링 하기위해 소립자 시스템에 근거를 둔 물리학을 사용합니다. 또한 비행 시뮬레이션은 다양한 항공기의 비행 역학을 정확하게 모델링하기 위해 물리학을 사용합니다. 현재 우리가 즐기는 게임은 굉장히 역동적입니다. 모든 것들이 움직이고 날라 다니고 슬라이딩하고 서로 부딪히니까요. 이런 모든 동작들이 실제 상황처럼 느껴져서 게임에 몰두하게 모델링 하기위해 물리적인 방법이 사용됩니다.
스튜어트: 좀 더 현실감이 느껴지는 컴퓨터 게임을 만들기 위해 물리학을 이용하겠다는 생각을 하시게 된 경위에 대해 조금만 말씀해 주시겠습니까? 이러한 접근 방법을 실제로 적용한 첫번째 게임은 무엇이었나요?
보그: 최근들어 실시간 물리학 엔진을 사용해서 게임을 시뮬레이션하는 것에 관심이 집중되어 왔습니다. 심지어 Havok와 MathEngine 처럼 모든 물리학을 다룰 수 있는 완벽한 물리학 SDK도 있습니다. 하지만 물리학은 비디오 게임의 초창기부터 게임에 이용되어져 왔습니다. 예를 들어 Atari의 오리지날 행성 게임을 생각해 보십시오. 그 게임에서 여러분은 여러분이 가진 배를 가속시킴으로써 공격 능력을 증강시킬 수 있습니다. 이것은 차례로 속도를 증가 시키고 위치를 변화시켜서 여러분이 화면 위에서 날라 다닐 수 있게 해줍니다. 여기에 적용된 힘(이 경우에서는 공격 능력)과 관련 있는 법칙들은 가속도, 속력, 위치 변화와 관련된 것으로 물리학의 기본 법칙들입니다.
더 상세히 말해 위에서 언급한 것들은 운동학 및 동역학과 같은 주제들과 관련된 가장 기본적인 법칙들로 더 자세한 내용은 책에서 볼 수 있습니다. 게임 개발자들이 비록 이런 사실들을 알지 못한다고 하더라도 그들은 게임에 물리학을 이미 어느 정도는 사용하고 있습니다.
스튜어트: PC 하드웨어에 장착된 실시간 물리학 엔진을 사용하여 게임의 모든 장면을 성공적으로 시뮬레이션 시킬 수 있습니까? 게임에 사용되는 물리학과 그러한 물리학을 처리하는데 걸리는 시간 사이에는 항상 어떤 흥정 같은게 있을 것 같은데요…
보그: 이론상으로 게임의 모든 장면을 시뮬레이션 처리한다는 것이 가능하기는 합니다. 그렇지만 내가 이전에 쓴
Five Steps to Adding Physics Based Realism to Your Games(게임에 물리학에 근거를 둔 실제감을 추가할 수 있는 다섯 단계)라는 기사에서처럼 불필요한 동작으로 인해 게임의 질을 저하시킬 수 있는 실수를 방지하기 위해 게임 개발자들이 시뮬레이션에 어떤 요소를 첨가해야 할 때는 심각하게 고민해야 한다고 말했습니다. 개발자들은 시각적으로 과도하다고 생각되지 않을 정도로만 물리적인 시뮬레이션을 사용해서 시각적 흥미와 물리적인 시간 사이의 균형을 잘 잡아야만 합니다.
스튜어트: 그렇다면 어떤 수준의 하드웨어가 게임 시뮬레이션을 안정적으로 구현할 수 있습니까? 게임 개발자들은 최근 배포된 PC 시스템에서 가장 평범하지 않은 개시자가 되기를 기다려야 합니까 아니면 최신 장비에서만 유연하게 작동할 새로운 게임을 만드는 게 나을까요?
보그: 제 경험에 비추어볼 때 그 질문은 마케팅에 더 가까운 문제인 것 같습니다. 발행인들은 항상 어떤 게임이 특정 플랫폼 위에서만 작동한다고 말할 수 있도록 가장 저렴하면서도 공통적인 하드웨어를 타겟으로 삼는 것처럼 보입니다. 이것은 발행인들이 생각하는 잠재적인 시장을 최대화 시켜주죠. 그렇지만 이것은 이상적인 하드웨어 사양이 아니라 하드웨어를 담게될 박스에 새겨질 추천 요구사항이 될 것입니다. 넓은 범위의 하드웨어 초기설정까지도 다루는 물리적 시뮬레이션을 디자인 할 때 개발자들은 확장시 사용하는 기술들을 차용하여야 합니다. 다시 말해 속도가 빠른 시스템에서는 문제가 없겠지만 속도가 드린 시스템에서 물리적인 시뮬레이션을 구현하려면 특수효과가 작게 들어간 몇몇 요소만을 포함해야 한다는 것이죠.
스튜어트: 컴퓨터 하드웨어가 엄청난 속도록 개발됨에 따라 시뮬레이션 구현에 소비되는 시간 사이의 흥정과 관련된 문제가 앞으로는 더 이상 걱정거리가 아닐 것이라고 예상하십니까?
보그: 글쎄요… 3차원 그래픽의 경우 하드웨어의 능력이 증가한다고 하더라도 게임 개발자들은 한계 상황까지 계속해서 도전하는 자세를 밀고 나갈 것이므로 위에서 말한 시간과의 문제는 앞으로도 계속 될 것입니다. 그리고 미래에는 아날로그에서 3차원 가속 비디오 카드와 같이 실시간 물리 엔진을 상세하게 다루도록 설계된 특수한 목적을 가진 하드웨어가 나오리라고 확신합니다. 실제로 전산 유체 동력학 중에서도 특히 천체 시뮬레이션 분야에는 GRAPE(GRAvity PipE)라고 불리는 특수 목적의 하드웨어가 80년대 이래로 계속해서 사용되어져 왔습니다. 그 하드웨어는 거대 분자 기반 메소드(소위 N-Body 시뮬레이션이라고 불림)를 위한 운동 방정식 적분을 자세하게 다루었죠. 나는 이와 같은 특수한 목적을 가진 하드웨어가 미래에는 개인용 컴퓨터에서도 발견될 것이라고 확신합니다.
데이비스 M 보그(David M. Bourg)는 컴퓨터 시뮬레이션을 실험하고 배와 보트의 움직임에 따른 파도의 영향 및 호버크래프트의 효율성 같은 것들을 측정하는 분석 도구를 개발한다.