국내 최대 게임 축제 '지스타2019'가 부산 벡스코에서 성황리에 개최되고 있는 가운데 지스타 콘퍼런스 ‘G-CON 2019’가 더욱 발전된 모습으로 게임인들을 찾아왔다. 14일과 15일 양일간 제 2전시장에서 진행되고 있는 ‘G-CON 2019’는 현재 업계에서 가장 큰 화제가 되고 있는 게임 스튜디오의 유명 개발자를 초청해 블록체인과 클라우드, 인디게임, 플랫폼, IP 등의 핵심 이슈를 포함하여 약 35개 세션으로 진행되고 있다.
15일 오전에는 넷텐션의 '배현직 대표가 '게임 프로듀서가 알아야 할 게임 서버 개발의 생리'를 주제로 강연을 진행했다. 배현직 대표는 국내외 유명 게임에 사용된 상용 게임 서버 엔진 ‘프라우드넷’을 제작했으며, 해당 엔진은 최근 펄어비스의 '검은사막' 모바일에 사용됐다. 발표는 '게임 기획'과 '개발자에게 일 시키기', '같이 구르기', '멘탈 관리' 순서로 진행됐다.
배현직 대표는 먼저 '서버 개발자 관점에서 최고의 게임 서버는 무엇인가'라는 질문에 "존재 자체가 거론되지 않는 것이 최고의 서버다"라고 정의하며 강연을 시작했다.
서버 관리자가 항상 다루는 것은 네트워크다. 물리적 거리에 따른 지연 속도 차이는 '레이턴시'로 부른다. 한국과 미국 간의 인터넷 중계 시간이 한국과 일본의 지연시간 차이보다 더 긴 것을 예로 들 수 있다. 요즘 모바일 게임의 경우 무선 인터넷을 사용하는데 무선 인터넷 환경에선 레이턴시가 무작위다.
게임 랙이라고 하는 것은 프레임 레이트 하락과 캐릭터 움직임이 튀는 것으로 나눌 수 있다. 캐릭터 움직임이 튀는 것은 서버랙에 해당한다. 레이턴시는 물리적으로 줄일 수 없으며, 개발자와 기획자의 협업으로 레이턴시를 감추는 작업을 진행한다. 디아블로3를 이러한 예로 들 수 있는데 디아블로3의 기술 모션과 이펙트는 서버에서 처리하지 않고 클라이언트에서 미리 연출이 처리되고, 연출이 발생하는 동안 처리 값이 서버에서 계산된 후 클라이언트로 전송되는 식이다.
흔히 '동시 접속은 최대 어느 정도까지 버티는가'같은 질문이 나온다. 이 부분은 게임의 콘텐츠와 장르에 따라 고려해야 한다. 즉, 초당 클릭 횟수의 차이에 따라 다르다는 것. 또한 해킹에 대해 얼마나 내성을 갖췄는지도 영향을 미친다. 많은 개발자가 서버를 여러 개를 두는 '수평 분산'으로 이용자들의 접속으로 인한 부하를 분산한다.
그렇다면 기획자가 개발자에게 일을 맡길 때 어떤 정보를 주는 것이 좋을까? 고려해야 할 사항에는 글로벌 단위 서버인지, 국가별 서버인지 명확히 정의하는 것이 중요하다. 그리고 한 서버 안에서 게임에 로그인 하고 나서 서버 리스트가 있는지 없는지 제시해야 한다. 서버를 선택해 월드에 들어갔을 때 한 개의 대륙인가 여려개의 대륙인가, 대륙 내 구획이 있는가 없는가, 포탈 같은 요소가 있는지 없는지, 한 지역에 몇 명이 들어가는지 생각하는 것도 중요하다. 또한 가시거리가 어디까지인가, 몇 명까지 보이는가, 서버의 설계가 얼마나 복잡한가, 분산서버로 설계한 이유는 무엇인지, 레이턴시 제한을 포함한 다양한 부분까지 정해주는 것이 좋다.
기획자와 개발자가 같이 일을 할 때 개발자 입장에선 로그인 과정 설계가 매우 까다롭다는 것을 생각해야 한다. 게임이 어디까지 해킹을 허용할 것인가 정의하는 것도 중요하다. 물론 해킹이 불가능한 게임을 만드는 것이 이상적이지만 서버를 비효율적으로 운영하게 된다.
테스트는 서버 개발의 완성도에 있어 큰 비중을 담당한다. 흔히 개발자들 사이에선 동접자가 두 배로 늘어날 때마다 뭔가 문제가 발생한다고 얘기한다. 게임 서버 개발은 클라이언트 개발과 달리 테스트를 못 하고 들어가게 된다. 즉, 실제로 10 만명이 동시에 접속할 수 있는지 테스트를 진행하지 못하고 서비스가 들어가는 것이다. 개발 과정에선 자동화 테스트를 이용하는데 동시 접속 테스트뿐만 아니라 다양한 테스트를 해보길 권한다. 동시접속자가 많아질수록 개발자들이 생각하지 못한 플레이를 보여주는 이용자가 있어 서버에 부하를 주기도 하기 때문이다.
개발 과정에선 중앙 서버를 기획과 개발, 아트팀이 공유하는 방법이 많이 사용됐다. 가능하면 자신의 자리에서 자신의 서버를 가지고 작업하는 것이 좋다. 업무를 진행하면서 신규 정보를 갱신하면 중앙 서버 업데이트 과정에서 다른 부서의 업무가 멈추기 때문이다.
PC게임은 패치를 모든 이용자가 같은 버전을 사용하도록 강제할 수 있지만, 모바일은 업데이트 업로드에 시간이 걸리기 때문에 이용자 간 버전 차이가 있을 수 있다. 그래서 몇 개 인접한 버전을 호환되도록 만들 필요가 있고, 이러한 부분을 프로듀서가 체크해야 한다.
운영 과정에서 로그 시스템은 매우 중요한 요소다. 로그는 사전에 어떤 것이 필요하다고 정의하는 것이 좋지만 개발 과정에선 중간중간 필요 사항을 업데이트하기 마련이며, 이는 서버에 부하를 주게 된다. 이럴 땐 당일 로그를 바로 보지 않고 다음 날 봐도 되는지 정하는 것이 좋다. 게임 서버 개발자 입장에선 게임 서버 안정화를 위협하는 근본을 제거할 수 있으며, 기획자 입장에서도 한번 가공된 로그 데이터를 통해 게임을 분석할 수 있다.
오픈하고 코드에서 이상 현상이 발생하면 점검을 하게 된다. 업데이트 예정 시간에 못 맞출 경우 이상현상이 일어난 기능을 막고, 오픈한 뒤 문제가 해결되면 기능 제한을 해제하는 방식을 사용할 수도 있다.
배현직 대표는 마지막으로 "개발 과정에서도 스트레스가 생기지만 출시 후 업데이트나 추가 일정 때문에 더 큰 스트레스가 생긴다"고 밝혔다. 예를 들어 "서버를 언제 안정화할 수 있는가?"하고 물어보는 경우가 있는데 이럴 땐 "서비스 종료 때까지"라고 답한다고 한다. 온라인 게임은 완성된 상품이 아니고 계속해서 완성해나가는 것이기 때문에 "서버 문제는 게임 서비스 내내 안고 가야 되는 것"이라고 전했다.
[(부산)성수안 기자 nakir@chosun.com] [gamechosun.co.kr]