d라이브러리









대세 게임 ‘폴 가이즈’ 재미 비결은 ‘F=ma’

◇ 꽤 어려워요

‘사회적 거리두기 때문에 집에만 있으니 답답한데, 뭐 재밌는 게임 없을까?’


시작은 단순한 호기심이었다. 60명이나 되는 플레이어가 귀여운 모습으로 동시에 목표지점을 향해 달린다는 내용이 그저 신선했다. 그런데 웬걸. 하면 할수록 또 다른 매력에 빠져들었다. 장애물이나 다른 캐릭터와 충돌할 때 미끄러지거나 튕겨 나가는 느낌이 현실처럼 생생했다. 올해 8월 출시되고 한 달 만에 게임 유통 플랫폼 스팀(Steam)에서 700만 장 이상 판매된 영국 게임 개발사 미디어토닉의 ‘폴 가이즈(Fall Guys)’ 얘기다.

 

‘통통’ 캐릭터의 점프가 자연스러운 이유


게임이 생생하다는 것은 화면과 움직임이 현실 세계와 분간이 가지 않을 정도로 닮았다는 뜻이다. 이를 위해서는 렌더링 엔진과 물리 엔진 두 가지 핵심 프로그램이 필요하다. 렌더링 엔진은 3차원 그래픽 기술을 사용해 실제 세계와 같은 느낌의 영상을 화면에 그려주는 프로그램이다. 물체의 형상과 표면의 질감, 빛에 따른 음영 등을 조절해 실제 같은 이미지를 만들어낸다.


물리 엔진은 완성된 이미지에 사실적인 움직임을 불어넣는 프로그램으로 하복(Havok), 피직스(PhyX) 등이 대표적이다. 우리의 일상 공간에는 ‘F=ma’ 같은 일정한 물리 법칙이 존재한다. F는 힘, m은 질량, a는 가속도로, 현실 세계에서 힘은 질량과 가속도에 비례한다.

 


마찬가지로 게임 세계에도 유사한 물리 법칙이 일정하게 유지된다. 캐릭터가 비탈을 내려가면 가속도가 붙어 속도가 빨라지고, 슈팅 게임에서 포탄을 쏘면 포탄이 중력을 받아 포물선 궤적을 그리며 날아가는 식이다. 캐릭터의 옷깃이나 머리카락, 배경으로 쓰이는 나뭇잎, 빗방울 등에도 중력과 마찰력 등 물리 법칙이 적용된다.


물리 엔진은 이러한 게임 속 물리 법칙에 따라 물체가 움직이는 정도를 계산한 뒤 시각적으로 구현한다. 개발자가 물리적인 힘을 계산하는 소스코드를 일일이 만들 필요가 없다. 컴퓨터 시뮬레이션 모델을 연구하는 기민형 고려대 컴퓨터학과 미디어연구실 석박사통합과정연구원은 “물체의 모든 운동에 일일이 힘을 정의하는 것은 비효율적”이라며 “중력과 저항력 같이 시스템 내에 공통적으로 작용하는 힘을 설정해 물체의 움직임을 계산하는 과정을 줄이면서 자연스러운 움직임을 구현하는 것이 게임 개발의 핵심”이라고 설명했다.


게임 개발자들은 물리 엔진에 게임 속 물체의 특성을 입력한다. 물체의 특성에 따라 물체의 움직임은 제각각이다. 예를 들어 대포를 쏘는 게임에서 대포알을 젤리같이 말랑말랑한 재질로 설정하느냐, 웬만해선 부서지지 않는 단단한 소재로 설정하느냐에 따라 대포알의 움직임은 천지 차이다.


폴 가이즈 게임의 개발자들은 캐릭터의 소재를 비치볼처럼 탄성있는 소재로 설정했다. 덕분에 캐릭터들은 서로 부딪치면 튕겨 나가고 움직이는 구조물에 부딪혀도 튕겨서 운좋게 목표지점까지 한 번에 나아가기도 한다.

 


실제 캐릭터의 생김새는 펭귄과 닮은 길쭉한 원통형이지만, 물리 엔진은 캐릭터가 비치볼 2개를 아래위로 이어붙인 눈사람 모양이라 가정하고 이것의 물리적인 움직임을 계산한다. 캐릭터가 핫도그 모양, 비둘기 모양, 공룡 모양 등 어떤 모양의 옷을 껴입어도 캐릭터의 질량이나 무게중심은 바뀌지 않는다.


폴 가이즈 게임의 캐릭터들은 제 키의 두 배 만큼 뛸 정도로 점프력이 뛰어나다. 이를 위해 개발자들은 게임 세계의 중력을 지구의 중력보다 훨씬 강하게 설정했다. 물리 엔진이 지구와 유사한 수준의 중력을 구현한다면 점프 후에 땅으로 되돌아오는 시간이 너무 길어 지루할 것이기 때문이다.


폴 가이즈 개발에 참여한 조 월시 미디어토닉 수석 게임디자이너는 “캐릭터는 강한 중력 때문에 점프했다가 이내 바닥으로 고꾸라진다”며 “강한 중력은 이용자가 움직임을 사실적으로 느끼게 해주는 동시에, 캐릭터들의 몸개그를 연출하는 장치”라고 설명했다.     

 


 
물리 엔진에도 인공지능이?


물리 엔진은 게임을 사실적으로 연출하는 프로그램이지만 현실을 그대로 반영하진 않는다. 서버의 처리 성능엔 한계가 있어 괜히 실제와 같은 움직임을 구현하려다 게임이 멈추거나 느려져서는 안 되기 때문이다. 개발자들은 물체에 작용하는 힘을 단순화해 움직임을 효율적으로 계산한다.
한 예로 움직임을 계산할 때 ‘유한요소법(finite element method)’을 사용한다. 물체를 여러 개의 작은 영역으로 나누는 방법이다. 이때 질량-용수철 모델을 적용하면, 각 영역이 용수철처럼 탄성력 있는 물체로 이어져 있다고 가정하고 각 영역이 받는 힘을 종합해 물체 전체의 움직임을 표현한다.


기 연구원은 “유한요소법을 적용할 영역을 무한히 쪼개면 실제와 똑같은 움직임을 구현할 수 있지만 현실적으로 쉽지 않다”며 “물체에서 유한요소법을 적용할 영역의 수와 넓이를 바꿔가며 그럴듯한 움직임을 만들어 내면서도 계산 시간은 최소화할 수 있는 조건을 찾는다”고 설명했다.


움직임을 계산하는 시간 간격도 적절해야 한다. 그렇지 못한 경우 부자연스러운 움직임이 연출된다. 대표적인 ‘옥의 티’가 2014년에 개봉한 영화 ‘겨울왕국’에 나온다. 주인공인 엘사가 머리카락을 풀며 노래하는 장면에서 머리카락이 뒤에서 앞으로 넘어오는 순간을 자세히 보면, 머리카락이 겨드랑이를 그대로 관통해 앞쪽으로 이동한다. 머리카락의 움직임을 계산하는 시간 간격이 머리카락이 앞으로 넘어가는 시간보다 길었기 때문이다. 보통은 ms(밀리초)보다 더 짧은 간격으로 계산하기 때문에 이런 오류가 눈에 잘 띄지 않는다.

 


최근에는 인공지능(AI)으로 물리 엔진을 구현하려는 시도도 있다. 인공지능에 공이 튀는 현상, 물체와 물체가 충돌하는 현상, 물체가 미끄러지는 현상 등을 학습시켜 현실 세계의 물리 법칙을 그대로 구현할 수 있는 소스코드를 짜도록 만드는 것이다.


한정현 고려대 컴퓨터학과 교수는 “인공지능을 이용해 물리 엔진을 구현하는 연구는 아직 초기 단계”라며 “인공지능이 물리 엔진을 만들면 인간이 반영하지 못했던 ‘그럴듯한 요소’ 구현도 가능해질 것”이라고 기대했다.

 

 

2020년 11월 과학동아 정보

  • 박영경 기자
  • 디자인

    유두호

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 게임공학
이 기사를 읽은 분이 본
다른 인기기사는?