우리가 온라인 게임을 플레이할 때 우리가 '게임 서버'로 접속해서 해당 서버로부터 데이터를 주고받으며 서버가 아닌 상대방(Client)과 게임을 하게 된다.
게임을 플레이하는 유저들이 말하는 이 '서버'라는 것이 사실은 데디케이티드 서버이다.
우리가 P2P 게임을 할 때, 게임을 하기 위해 매 판마다 누군가가 '호스트'가 되어서 서버역할을 감당해야했다.
호스트가 나가면?
연결이 자동적으로 끊기게 된다.
이런 방식 자체는 호스트에게 부담을 줄 뿐만 아니라 불완전한 네트워크 연결 속에서 게임이 플레이되어야한다는 단점이 있다.
하지만 매 게임마다 '전용 서버'가 존재한다면?
얘기는 달라진다.
이 전용 서버를 '데디케이티드 서버'라고 한다.
MMORPG처럼 하나의 거대한 서버에서 모든 유저가 접속해있고 많은 데이터처리를 담당하는 건 다른 문제이고
이 데디케이티드서버는 리그오브레전드나 배틀그라운드, 오버워치처럼 매 판마다 전담서버가 존재하는 형식의 서버이다.
게임이 끝날때마다 해당 서버로부터 연결이 끊기고 다시 게임이 시작되면 새로운 전담서버에 연결되는 방식이다.
장점이라고 하면
당연히 '서버'가 각 게임마다 따로 존재하므로 다른 게임에 영향을 끼치지 않는다는 것
중앙 서버 방식(MMORPG)과 다르게 분산처리가 용이하다는 것
서버는 게임이 활성화되어 있을 때 해당 게임과 데이터를 1초에 얼마나 받을 지에 대해 생각해야한다.
만약에 1초에 60번 정도를 정보를 주고받겠다고 한다면?
틱 레이트는 60이 된다.
우리가 게임을 할 때 부르는 용어 중 '핑'이라는 것이 있다.
이 '핑'이 높으면 반응속도가 매우매우~ 느려지게 된다.
이 '핑'에 직접적 영향을 주는 것 중 하나가 틱레이트이다.
게임 내 데이터들의 처리 속도를 빠르게 하면 그만큼 호스트에 과한 부담을 주기 때문에 데이터의 병목현상이나 '핑'의 불안정이 더 심해질 수 있다.
그와 반대로 데이터들의 처리 속도를 느리게 한다면? 서버는 안정적일 수 있으나 플레이할 때 주변 사물이나 캐릭터 등의 움직임이 끊기듯 부자연스러운 현상을 볼 수 있다.
넷코드 (Netcode)는 게임에서 유저들 간의 핑차이를 보정하기 위하여 진행되는 일련의 네트워크 동기화 과정을 뜻한다. 유저들이 중앙 서버에 접속해서 플레이하는 게임들에서는 중앙 서버가 넷코드의 주체가 되고, 유저들 중에서 한명이 호스팅 역할을 맡는 P2P 방식에서는 해당 방장이 넷코드의 주체가 된다. (나무위키)
FPS와 같은 게임은 '반응속도'가 매우 중요하다.
이 반응속도라는 게 사람에게만 해당되는 것이 아니다.
사람의 동체 시력, 반응 속도 뿐만 아니라 네트워크 상에 존재하는 지연시간 또한 포함된다.
우리가 게임에서 어떤 행동을 하면 즉각 반영되는 것이 아니다.
서버에서 해당 행동에 대한 데이터 처리를 하고 그 데이터들을 해당 게임에 접속한 다른 유저(클라이언트)들에게 보내줘야 한다.
그렇다면 유저의 행동 -> 서버 -> 다른 유저 로 이뤄지는 이 데이터처리 연결간에는 직관적으로 보아도 최소 두 번의 연결을 거쳐야한다는 것이 된다.
이 때, 그 두 연결 간에 걸리는 지연시간은 물리적인 한계가 존재하므로 최대한 배제하고 생각해보자면
(물리적인 지연시간이라고 칠 수 있다. 한국에서 플레이하는데 서버가 미국에 있으면 미국까지 갔다 와야하니까)
서버 내에서 그 데이터를 요청받아서 처리하는 시간이 얼마나 빠른가에 따라 다른 유저가 받아들이는 속도 또한 달라지게 된다는 뜻이 된다.
다시 말하자면, 유저의 어떤 행동(움직이거나 총을 쏜다거나)을 서버가 전달 받았을 때 해당 데이터를 지연시간없이 바로 처리할 수 있을까?
아니다.
틱레이트에 따른 속도로 해당 데이터를 처리하게 된다.
이 틱레이트라는 것이 그래서 게임서버에서 중요한 것이다.
유저로부터 서버가 50ms만에 데이터를 받았을 때 해당 데이터는 틱레이트가 60이라고 쳤을 때 대략 16ms의 속도로 데이터를 처리하게된다.
그러면 50 + 16 ms에 다른 유저에게 전달하는 시간까지 합쳐 대략 116ms만에 데이터를 뿌리게 되는 것이다.
=> 넷코드 이슈로 인해 사용자 간에 반응속도 차이가 생긴다.
이 뜻은 결국, FPS, 배틀로얄, AOS, RTS, 레이싱게임 등의 반응속도가 중요한 경쟁 게임에서 Peeker's Advantage가 생기게 된다는 것이 된다.
서버가 안정적일 수 있는 상황 내에서 최대한 많은 틱레이트를 낼 수 있는 것은 결국
게임 내에 원활한 환경을 조성해줄 수 있는 수단 중 하나라고 볼 수 있다.
FPS와 같은 반응에 민감한 게임에 경우
앞에서 설명했다시피 틱레이트와 유저 - 서버 간 이뤄지는 데이터처리 속도에 따라 먼저 움직여서 발견한 사람(A)와 먼저 움직인 사람의 움직임을 데이터로 전달받는 대기하던 사람(B) 간에 발생하는 반응차이로 먼저 움직인 사람은 항상 이점을 갖는 상황(넷코드 이슈)이 된다.
이런 상황에 대해 A는 피커스 어드벤티지를 갖는다고 할 수 있다.
넷코드에 대한 재밌는 내용은 나무위키의 이 문서를 참조하면 좋다.
https://namu.wiki/w/%EB%B0%B0%ED%8B%80%ED%95%84%EB%93%9C%204/%EB%84%B7%EC%BD%94%EB%93%9C