게임 속의 과학, 물리엔진

현실의 물리법칙이 게임 안에 그대로

우리나라에서 선풍적인 인기를 끌며 PC방 산업과 프로게임리그를 발전시키는데 핵심적인 역할을 한 미국 블리자드 사(社)의 ‘스타크래프트(Starcraft)’는 출시된 지 12년이 됐지만 여전히 인기게임으로 자리 잡고 있다. 블리자드 사는 이 게임의 후속작인 ‘스타크래프트2’의 출시를 앞두고 “전편과는 다르게 물리엔진을 사용해 매우 현실적이면서도 화려한 그래픽을 제공한다”고 발표하면서 화려한 시연회를 통해 사람들의 관심을 불러일으켰다.

스타크래프트를 비롯한 비디오 게임들은 더 이상 어린 아이들만의 놀이에 불과하지 않다. 현재 이용되고 있거나 개발되고 있는 비디오 게임들은 단순한 오락을 넘어 새로운 가상 세계를 열어주며 나이와 성별에 관계없이 모든 사람들이 즐기는 하나의 매체가 됐다. 그래픽 표현과 음향효과는 나날이 발전하며 게임 내용과 방법들도 매우 다양하고 복잡해지고 있다.

주로 컴퓨터와 비디오게임 전용기기를 이용하며 요즘에는 모바일 기기를 이용한 게임들도 매우 다양하게 출시되고 있다. 비디오게임 전용기기는 오래 전부터 보급됐지만 ‘게임기’라는 약간은 부정적인 인식 속에서 지금보다 많이 이용되진 않았다. 하지만 현대에 오면서 기술이 발전해 개인용 컴퓨터(PC-Personal Computer)가 거의 모든 가정에 보급됐고 이로써 비디오게임의 전성기가 열리기 시작했다.


현실을 그대로 옮겨 놓은 듯한 게임들

처음엔 퍼즐게임 같은 간단한 게임들로 시작했지만, 반도체 집적회로의 발달로 인한 컴퓨터의 비약적인 성능 향상으로 게임 또한 함께 발전해 왔다. 2D를 넘어 3D게임이 만들어지고 그 표현력이 날이 갈수록 정교해지고 있다. 요즘 출시되는 게임들을 보면 게임 안 캐릭터의 머리카락과 옷자락에서부터 주변 환경의 나뭇잎, 호수, 바다까지 현실과 거의 흡사한 장면들이 펼쳐지고 있다. 심지어 사용자의 캐릭터가 휘두르는 칼이나 쏘아대는 총탄이 변형되는 모습까지 현실과 거의 다를 것이 없을 만큼 정교하다.

물론 예전 게임들에도 이런 장면들은 많았다. 하지만 그것들이 단순히 부서지는 장면을 녹화해 부서질 때마다 같은 모습이 재생되는 원리였다면 요즘 개발되는 게임들에선 실제 우리가 물건을 만지는 것과 같은 효과를 보여준다. 즉 앞에 있는 물건을 던졌을 때 어디로 튈지 예측이 불가능하며 던질 때마다 다른 방향으로 운동하는 것처럼, 게임 상에서도 그런 운동이 가능하다는 것이다. 예를 들어 당구 게임의 경우 실제 당구처럼 치는 지점과 방향, 힘의 세기에 따라 회전력이 달라진다.

게임에 이용되는 실시간 시뮬레이션


이렇게 불과 몇 년 전만 해도 상상으로나 가능할 법한 일들을 가능하게 해주는 것이 바로 ‘물리 엔진’이다.

물리엔진이란 현실에서 일어나는 물리법칙을 컴퓨터 프로그램에서도 동일하게 적용시킬 수 있게 하는 소프트웨어다. 이것을 게임에 적용시켜 실제와 다를 바 없는 움직임이 가능하게 한 것이다.

사실 이런 물리엔진이 비단 게임에만 이용되는 것은 아니다. 게임에 적용되기 전부터 이미 영화 촬영이나 가상 실험 등에 물리 기반 시뮬레이션이 활용됐다. 영화촬영 시에도 실제 촬영하기 힘든 장면을 컴퓨터 그래픽을 통해 제작했으며, 항공기나 우주선 운행의 모의실험 등에도 이용됐다. 그렇다면 일찍이 활용된 이런 시뮬레이션들이 왜 게임에는 요즘에 와서야 적용되고 있을까? 그 원인은 바로 속도의 차이에 있다.

자연에서 일어나는 물리현상을 계산하는 것은 쉬운 일이 아니다. 주위 환경과 운동하는 수많은 물체들 사이에 관계가 복잡하게 일어나며, 재질이나 종류에 따라서도 운동하는 모습이 얼마든지 변화한다. 이런 엄청난 계산을 하기 위해 고성능의 컴퓨터가 필요하게 된다.

이런 계산이 수차례의 크고 작은 작업을 거쳐 조금씩 영화 촬영에 이용됐다면, 게임에선 그 반대다. 직접 캐릭터를 이동시키며 주위 환경이 사용자에 의해 임의적으로 변화하게 되는데, 이를 위해선 실시간 시뮬레이션 기술이 필요하다. 최소한 우리가 눈으로 보는 만큼의 공간을 충분히 표현할 수 있어야 제대로 된 3D게임을 즐길 수 있기 때문에 이런 실시간 시뮬레이션은 매우 높은 성능의 컴퓨터를 요구한다.

따라서 초기 물리 엔진을 도입한 게임들은 그래픽 품질이나 표현력 면에서 매우 뒤떨어진다. 하지만 개인용 컴퓨터의 성능이 눈에 띄게 발전하면서 연산능력이 향상되고, 그래픽처리를 담당하는 그래픽카드 또한 발전해 사실성 높은 그래픽과 함께 복잡한 물리연산도 가능해졌다. 점점 현실에 가까워지는 게임들을 만날 수 있는 것이다.


물리엔진에 적용시키는 물리법칙

컴퓨터 성능이 좋아지면서 물리엔진에 사용되는 물리법칙들의 종류와 효과도 늘어나게 됐다. 현실에서 우리가 쉽게 느끼는 물리법칙들로는 마찰력, 관성, 중력, 충돌효과 등이 있는데 이것들을 표현하기 위한 기술들이 물리엔진을 구성하고 있다. 마찰력이나 관성, 중력 같은 경우는 그다지 복잡한 부분이 아니지만 충돌이나 폭발, 그리고 작은 움직임들은 매우 복잡한 연산을 요구한다.

우선 강체 동역학이 있다. 강체는 그 형태가 변하지 않는다고 가정해 운동을 기술하기 쉽게 한 물체를 말한다. 물론 현실세계엔 없지만, 대부분의 운동이 강체의 운동과 거의 비슷하게 나타나기 때문에 이것으로 많은 운동을 표현한다. 예를 들어 많은 사람들이 즐겨하는 1인칭 슈팅 게임(FPS; First-Person Shooter)의 경우, 사용자가 발사한 총알이 표적을 맞고 어디로 튀어갈 것이며 표적은 어떤 식으로 변형돼 움직일 것인지를 계산하는 것이다.
 
다음으로 입자 시스템(particle-system)이 있는데, 이는 작은 입자들이 외부에서 힘을 받아 어떻게 운동할 것인지를 계산하는 것이다. 강체동역학과 별다를 바 없어 보이지만 작은 입자들이 많이 뭉쳐있는 상태에서는 좀 더 복잡한 계산이 필요하다. 이를 이용할 시 강체 동역학보다 훨씬 정교하고 화려한 그래픽 구현이 가능하지만, 그만큼 고성능의 연산장치를 요구하기에 최근에 와서 이용되고 있는 방법이다.

캐릭터의 사실성을 높이기 위해 의복이나 머리카락을 표현하는 기술도 있는데 이는 다른 물체에 비해 부드럽고 섬세하게 표현해야하기 때문에 매우 복잡하고 힘든 기술이다. 의복 시뮬레이션을 위해선 질량-용수철 시스템(mass-spring system)을 사용한다. 연결돼 있는 작은 입자들 사이에 작용하는 힘이 거리와 여러 조건에 따라 달라지는 것을 계산해 표현하는 방법이다. 이처럼 유연하고 쉽게 변하는 물체들을 변형체라고 하며, 이들을 제어하는 기술은 영화나 고급 그래픽 처리에나 사용됐다. 하지만 비교적 간단한 강체의 역학만을 사용하던 게임에서도 컴퓨터 성능 향상에 따라 변형체 시뮬레이션을 사용하고 있다.

이 외에도 물이나 연기와 같이 유연하게 흐르는 유체 시뮬레이션이나 물건이 폭발, 파손될 때의 운동을 표현하는 파괴 시뮬레이션 등도 물리 엔진에 포함돼있다.
 

CPU, GPU, PPU?

이런 물리법칙들을 표현하게 해주는 물리엔진의 종류도 여러 가지가 있다. Havok이나 PhysX 가 잘 알려져 있으며 많은 게임들이 이 물리엔진들을 사용하고 있다. 오는 27일 출시 예정이며 많은 사람들의 주목을 받고 있는 스타크래프트2는 Havok 물리엔진을 사용한다고 한다.

게임에서 이런 물리엔진들을 처리하기 위해서는 앞서 말했듯이 매우 고사양의 컴퓨터를 필요로 한다. 물리계산뿐만이 아니라 그래픽처리를 통해 모니터로 출력해야 하기 때문에 그래픽 처리능력 또한 높은 사양이 요구된다.

컴퓨터에서는 이런 처리들을 위해 CPU(Central Processing Unit)와 GPU(Graphic Processing Unit)를 이용한다. CPU는 컴퓨터의 뇌라고 할 수 있는 주요 장치로 여러 연산들을 수행하며 GPU는 영상정보를 처리하고 화면에 출력시키는 일을 한다. 많은 게임들의 그래픽 사양이 높아지면서 그래픽카드 또한 나날이 발전해 성능이 높아지고 있다.


또한 다소 생소할 수 있는 PPU(Physics Processing Unit)라는 처리장치도 있다. 이는 물리연산을 처리하는 하드웨어로 복잡해지는 물리연산을 CPU나 GPU가 처리하는데 생기는 과부하를 해결해준다. 실제로 물리엔진의 하나인 PhysX는 이 PPU를 통한 처리를 활용하면서 CPU와 GPU에 부담을 덜어 좀 더 부드럽고 원활한 그래픽처리에 효율성을 높이고 있다.

현재는 다중연산처리가 가능한 멀티코어 CPU가 개발되면서 CPU나 GPU처리만으로도 큰 무리가 없어 PPU는 비교적 비중이 크지 않다. 하지만 하드웨어가 발전하는 만큼 게임도 나날이 발전하고 있기 때문에 앞으로 출시될 더욱 복잡한 연산을 필요로 하는 게임들에선 PPU가 매우 중요한 하드웨어의 하나로 자리잡을지 모르는 일이다.

과학이 게임을 더 즐겁고 재밌게!

어느새 비디오 게임은 단순한 오락을 넘어 현대인들에게 제2의 삶을 만들어 줄만큼 큰 영향을 끼치고 있다. 거기엔 그래픽과 물리엔진 등의 발달로 인한 현실감이 큰 몫을 했으며, 이는 계속해서 눈부신 발전을 거듭하고 있다. 특히 그래픽 기술에 3D홀로그램 및 신경을 자극해 크고 작은 신체의 변화까지 조절하는 기술이 접합된다면 영화나 소설에서나 보던 완벽한 가상현실이 가능할지도 모른다.


어렵고 지루하기만한 과학 시간, 학생이라면 대부분 치를 떠는 물리를 공부하면서 나무토막의 충돌, 용수철 상수, 속력과 가속도 등이 나오면 “대체 이런 것을 어디에 쓴다고 배우는 거야!” 라며 불평하는 일이 많다. 그리곤 집에 와서 신나게 물리 엔진이 적용된 게임을 즐긴다. 과학은 이렇게 알게 모르게 우리 주변에서 편안함과 즐거움을 주고 있다.

(13993)

뉴스레터 구독신청
태그(Tag)

전체 댓글 (0)

과학백과사전