▲ 코스모유니버스 홍성민 대표

데브컴 행사 둘째 날, 머나먼 타국 독일에서 한국인 개발자의 강연이 진행됐다.

이날 쾰른메세에서 강연을 진행한 코스모유니버스 홍성민 대표는 게임 개발 분야에서 30년 이상의 경력을 가지고 있는 베테랑 개발자다. 1995년 서버 프로그래머로 경력을 시작한 그는 유비소프트와 메타코어, 네오위즈, 스마일게이트 등 여러 기업에서 12개 이상의 실시간 멀티플레이어 게임을 출시한 바 있다. 개발과 라이브 서비스, 투자 및 관리를 전문으로 하는 그는 최근 헬싱키에서 '코스모유니버스'를 설립하고, 멀티플레이어 게임을 위한 컨설팅, 디자인, 공동 개발 및 라이브 서비스를 제공하고 있다.

이날 홍성민 대표가 준비한 강연은 '실시간 멀티플레이어에서 네트워크 레이턴시를 극복하는 팁'이라는 주제로 진행됐다. 그는 이번 강연이 복잡한 기술 강연이 아니며, 직접 겪은 경험을 공유하는 것으로 게임 디자인부터 구현에 이르기까지, 레이턴시와 작동 방법에 대한 개념을 더 깊게 이해할 수 있게 될 것이라고 소개했다.

가장 먼저 홍성민 대표가 소개한 것은 '레이턴시(Latency)'의 개념이다. 레이턴시는 메모리가 다음 명령을 처리할 때까지 걸리는 대기시간으로, 데이터가 네트워크를 건너 하나에서 다른 쪽으로 이동할 때 발생하게 되는 지연 시간을 뜻한다. 그는 물리적으로 약 27,000km가량 떨어져 있는 브라질과 뉴질랜드 사이를 데이터가 이동할 때, 만약 144Hz 주사율의 모니터를 사용하고 있다면 약 26프레임의 레이턴시가 발생한다며, 이는 철권처럼 매우 민감한 동기화 게임을 플레이할 시 무시할 수 없는 격차가 될 수 있다고 설명했다.

▲ 네트워크를 통해 빠르게 이동하는 데이터 역시 물리적 거리로 인한 전파 지연을 피할 수 없다

레이턴시는 보통 인터넷 네트워크에서 패킷이 다양한 서버를 거치는 동안 발생하지만, 비단 네트워크가 아니더라도 다양한 프로세싱 과정에서 자연스럽게 발생하게 된다. 게임 패드의 버튼을 눌렀을 때 신호는 콘솔 기기를 거쳐 서버까지 이동하고, 서버에서부터 다시 돌아올 때도 분명한 처리 시간을 갖는다. 홍성민 대표는 이러한 모든 과정에서 레이턴시가 발생할 수밖에 없으며, 그 어떤 것도 0.01밀리초 안에 지연 없이 이루어질 수는 없다고 강조했다.

▲ 실제론 그림으로 표현한 것보다 훨씬 더 많은 덧셈 과정을 거치게 된다

그렇다면 아무리 노력해도 필연적으로 발생하게 되는 레이턴시를 극복하려면 어떻게 해야 할까? 홍성민 대표는 레이턴시 극복을 위해 기술적인 노력 외에도 게임 디자인과 다른 모든 요소의 협력이 필요하다며, 지난 30년의 업계 경력을 통해 축적한 '레이턴시를 극복하기 위한 다섯 가지 팁'을 소개했다. 그는 게임 플레이 경험에서 절대적으로 공정하게 만드는 것은 불가능하다며, 어디까지나 플레이어가 동기화된 상태를 느끼고, 공정하다고 생각할 수 있도록 환상을 만드는 것이 중요하다고 먼저 밝혔다.

첫 번째 팁은 사전 액션과 VFX다. 홍정민 대표는 축구에서 프리킥을 차기 전에 도움닫기를 하거나 야구에서 투수가 공을 던질 때 와인드업 동작을 취하듯, 실제 액션 전에 충분한 사전 액션을 넣는 것으로 어느 정도 레이턴시를 극복할 수 있다고 설명했다. 인위적으로 지연을 만들고 VFX를 넣는 것으로 실제 행동이 지연 없이 자연스럽게 보이도록 만드는 방식이라고 할 수 있다.


두 번째 팁은 서버에서 동기화 시간을 조정하는 방법이다. 이날 홍성민 대표는 평균 왕복 시간(RTT)에 맞춰 동기화하는 방식을 소개했다. FPS 게임 같은 매우 높은 수준의 동기화를 요구하는 게임에 적용하기는 어렵지만, 화면에 약간의 차이가 있어도 문제가 없을 경우 활용하기 좋은 방식이다. 그는 프레임별로 모든 것을 동기화하려는 것이 아니라며, 평균 왕복 시간과 액션 개시 시점을 계산한 뒤 조금 늦추는 것으로 충분히 공정할 수 있다고 이야기했다.


세 번째 팁은 적극적인 카메라워크 활용이다. 카메라워크의 적극적인 활용은 더 극적이고 자극적인 게임 플레이 경험을 만드는데 기여하는 것은 물론, 네트워크 레이턴시로 인한 위치 오류를 수정할 때도 도움이 된다. 이날 강연에서 홍성민 대표는 카메라와 카메라가 비추는 캐릭터, 배경의 예시를 소개하고, 카메라워크를 더 적극적으로 활용하면 네트워크 레이턴시에 의해 제한된 속도 내에서도 극적인 효과를 만들 수 있을 것이라고 설명했다.

▲ 카메라워크를 활용하면 레이턴시 커버는 물론, 나아가 더 극적인 연출도 가능하다

홍성민 대표가 제안한 네 번째 팁은 게임 디자인 속 해결책이다. 개발자라면 응당 자기 게임이 더 정확하게 작동하기를 원하지만, 네트워크 레이턴시를 예측하기란 쉽지 않다. 그렇기에 게임을 디자인하는 첫 번째 순간부터 네트워크 레이턴시 발생을 염두에 두고 게임 플레이가 원활하게 느껴질 수 있도록 미리 준비해야 한다는 것이다.

홍성민 대표는 자신이 개발했던 게임에 반영했던 '호밍 미사일'의 예시를 소개하며 미사일이 맞았을 때와 맞지 않았을 때의 두 가지 경우에 따라 미사일의 궤적이 완전히 다른 쪽으로 꺾여 보이게 설계했다고 말했다. 이는 결코 정확한 표현은 아니었지만, 충분히 허용될 수 있는 수준의 표현이었다는 것이다. 그는 히트 감지는 게임에서 굉장히 중요한 요소이므로, 시간과 위치의 오류가 어느 정도 선까지 용인될 수 있는지, 예외적인 상황이 발생하지는 않을지, 그런 예외가 허용될 것인지 등의 문제를 항상 함께 고려할 필요가 있다고 덧붙였다.

▲레이턴시를 고려한 연출을 넣는 것은 좋지만, 항상 이를 통해 발생할 수 있는 다른 문제도 염두에 두어야 한다

마지막 다섯 번째 팁은 '과장된 효과'다. 과장된 시각 및 오디오 효과는 많은 게임에서 일반적으로 볼 수 있는 것으로, 주로 극적인 상황을 강조하거나 사용자를 게임에 몰입시키기 위해 사용된다. 홍성민 대표는 과장된 효과가 우리가 접하는 실시간 경험과는 다른 속도로 진행되는 경우가 많으며, 이 과정에서 플레이어가 알아차리지 못할 정도로 사소한 오류를 만들어내기도 한다고 소개했다. 그는 넓은 범위로 발사되는 레이저 무기의 궤적, 그리고 도플러 효과를 그 예시로 들었다.

홍성민 대표는 때로는 확실하지 않게, 두루뭉술하고 애매하게 표현하는 것도 하나의 방법이 된다고 이야기했다. 넓은 범위로 발사되는 레이저 무기의 궤적을 두꺼운 직사각형처럼 명확하게 표현하면 픽셀 하나에 캐릭터가 걸쳐진 것만으로 피격 판정이 필요하게 된다. 이때 레이저에 그라데이션을 넣어 그 경계를 모호하게 만들면, 네트워크 레이턴시로 인한 지연이 발생했을 때 조금의 여유가 더 생길 수 있는 식이다.

▲ 분명 공격 범위에 걸쳤지만, 그 경계를 모호하게 표현하는 것으로 어느 정도 여지를 만들 수 있다

홍성민 대표는 끝으로 세 가지 포인트를 다시 한번 강조했다. 첫 번째는 레이턴시가 네트워크 문제 외에도 다양한 과정들의 결합으로 발생한다는 점, 두 번째는 레이턴시를 극복하기 위해 기술적인 노력은 물론 게임 디자인부터 모든 기타 요소를 함께 고려해야 한다는 점, 마지막으로 세 번째는 항상 '절대적으로 공정한 것은 불가능하다'라는 것을 인지하고, 이를 바탕으로 플레이어에게 공정한 경험을 제공해야 한다는 점이다. 그는 게임 개발자들이 만드는 것은 현실 세계를 복제하는 시뮬레이션이 아니므로, 게임을 플레이하는 플레이어가 '이 게임은 훌륭하다'라고 느낄 수 있도록 항상 공정한 경험을 제공하는 것이 가장 중요하다고 당부하며 자신의 발표를 마무리했다.