[NDC 2018] 넥슨에서 겪은 게임 플레이 동기화 사례는 무엇이 있을까?

“온라인시대를 넘어 모바일게임 시대에 접어든 지금 동기화는 더 어려워 지고, 더 복잡해진 분야입니다. 불법 복제 같은 해킹도 이 동기화의 영역 중 하나이니까요”

넥슨 코리아의 송창규 실장은 NDC 2018의 '게임플레이 동기화 개론' 세션을 통해 멀티플레이어 게임플레이를 개발할때 게임플레이의 동기화 방식들의 장점과 단점을 설명했다.

NDC 2018 게임플레이 동기화 개론
NDC 2018 게임플레이 동기화 개론

그는 개발자가 거의 없었던 초기 온라인 게임의 시대에서는 동기화 기술이 성패를 가르는 관건이었지만, 지금은 언리얼, 유니티 등의 엔진을 통해 원하는 서버를 쉽게 만드는 시대로 접어들어 다양한 게임을 구현할 수 있다고 말했다.

하지만 여전히 동기화는 커뮤니케이션의 어려움과 큰 리스크 덕분에 아직도 어려운 분야이며, 모바일 시장의 성장, 시장이 국내에서 글로벌로 확장되면서 각 국가의 네트워크 환경을 신경써야 하는 등 분야 점점 늘어나고 있다고 자신의 경험담을 전했다.

송 실장은 동기화는 흔히 CBT 이후 첫번째 리스크가 발생하며, 게임이 성공해도 해킹이 대규모로 시작되기 때문에 여전히 리스크가 존재한다고 강조했다. 또한, 많은 국가의 네트워크 환경이 개선 되었지만, 글로벌의 시대를 맞아 네트워크 환경이 좋지 못한 국가에서 서비스를 진행하면서 리스크는 여전하다고 강조했다.

NDC 2018 게임플레이 동기화 개론
NDC 2018 게임플레이 동기화 개론

특히, 중국의 경우 국민 대부분이 인터넷을 사용하지만, 100MS 안팎이 과반을 차지하고, 와이파이가 대부분을 차지하며, 인도네시아는 글로벌 버전에서 통용되는 클라이언트가 속도 때문에 문제가 생기는 등 다양한 문제가 발생한다고 전했다.

이와 함께 클라이언트 해킹도 동기화의 영역에 있는 것이며, 중국 시장을 중심으로, 주요 퍼블리셔들이 좋은 네트워크 상황에 따른 해킹과 대응하도록 하고 있고, PvP의 경우 해킹한 게이머 한 두 명만 만나도 이탈율이 높아지며, 게임 내 재화의 가치가 점점 높아지는 현 게임상황에서 해킹은 매우 민감한 문제라고 설명했다.

송창규 실장은 동기화의 방식에 대해서도 언급했다 P2P의 경우 서버 비용을 절감할 수 있지만, 보안이 중시되면서 ‘데디서버’ 중심으로 이동 중이며, 최근에는 TCP와 UDP를 동시에 사용한다고 설명했다.

때문에 여러 보안 프로그램을 사용하는데, 이중 TCP_NODELAY는 TCP의 단점인 느린 데이터 전송의 단점을 없에주고 자비용이 장점이지만, UDP 보다 딜레이가 있고, Reliable UDP는 유실을 순서와 함께 복구해 주는 장점이 있다고 소개했다.

NDC 2018 게임플레이 동기화 개론
NDC 2018 게임플레이 동기화 개론

송 실장은 캐릭터의 이동은 가장 반응성이 요구되는 작업으로 서버에 리퀘스트를 던지고, 허가를 받아서 수행하는 ‘비관적 수행’, 허가를 받지 않고 일단 실행하는 ‘낙관적 수행’이 있으며, ‘비관적 수행’는 안정성은 높지만, 서버의 부담이 커지고, ‘낙관적 수행’는 플레이는 원활하지만, 해킹의 위험에 취약하다고 말했다.

게임동기화의 핵심인 호스트에 대한 조언도 이어졌다. 송 실장은 NPC 보스는 서버가 맡는 경우 하나는 플레이어가 호스트를 맡는 경우가 있는데, NPC는 서버의 상황, 게임의 장르에 따라 모두 다르게 적용해야 하며, 플레이어에게 호스트를 맡기는 경우 보스의 움직임이 PC 상황마다 다르게 나타나는 문제점이 발견된다고 말하기도 했다.

아울러 PvP 위주의 게임이라면 클라이언트를 덜 믿는(서버가 관리하는 부분이 줄어든) 단순한 서버 ‘게임 플레이 모드’를 만드는 것이 좋으며, 아이템을 사용할 경우, 서버가 게이머가 사용한 아이템의 숫자나 슬롯만 알게 하고 동작은 별도 모드에서 처리하는 것이 해킹이나 복제 등의 위험을 더 빠르게 찾아낼 수 있다고 말하기도 했다.

다만 이 게임 플레이 모델은 각 활동별로 책임지는 서버 프로그램을 명확하게 구분해야 하고, 클라이언트 모델과 동기화 지점을 가다듬어 큰 무리없이 작동하도록 유도해야 한다고 강조하기도 했다.

이와 함께 송창규 실장은 몇 초 단위로 상시 RTT를 체크하고 시간을 맞춰주는 것이 좋으며, 하드웨어의 조합에 따라 시간이 비정상으로 빠르게 가는 경우 스피드핵을 잡아낼 수 있고, 리얼워드타임과 로직타임을 분리하면 디버깅이나 2인 플레이(난입)을 쉽게 처리할 수 있는 등 본인의 겪은 경험에 따른 다양한 팁을 제공하기도 했다.

게임동아의 모든 콘텐츠(기사)는 Creative commons 저작자표시-비영리-변경금지 라이선스에 따라 이용할 수 있습니다.
의견은 IT동아(게임동아) 페이스북에서 덧글 또는 메신저로 남겨주세요.