최근 수정 시각 : 2024-11-16 12:34:18

넷코드


비디오 게임 용어
{{{#!wiki style="margin: 0 -10px -5px; min-height: 26px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1.5px -13px"
공통 <colcolor=#000,#fff>너프 · 넷코드 · 닥돌 · 대리랭 · 딜찍누 · 버프 · 빨피 · 어그로 · 캠핑 · 티밍 · 티배깅 · 팀킬 · 파밍 · CPU 보정 · GG
FPS 개돌 · 버니합 · 베이스레이프 · 스폰킬 · 퀵 스코프 · 똥싸개
스포츠 축구 호즐메 }}}}}}}}}

1. 개요2. 해결책3. 사례
3.1. 스포츠 게임3.2. FPS 게임3.3. 대전 격투 게임
4. 외부링크

1. 개요

넷코드 (Netcode)는 게임에서 유저들 간의 핑차이를 보정하기 위하여 진행되는 일련의 네트워크 동기화 과정을 뜻한다. 유저들이 중앙 서버에 접속해서 플레이하는 게임들에서는 중앙 서버가 넷코드의 주체가 되고, 유저들 중에서 한명이 호스팅 역할을 맡는 P2P 방식에서는 해당 방장이 넷코드의 주체가 된다.

게임을 플레이하는 유저들의 접속 지역은 제각각 다른 경우가 많고 이는 결국 넷코드 주체로부터 이벤트 세션을 갱신하는 과정에서 유저마다 제각각 다른 시차가 발생하게 된다. 이것이 게임 내에서의 승패와 유저의 게임 진행에 큰 영향을 미치게 된다.

이와 같이 넷코드에서 일어나는 모든 문제들을 넷코드 문제 (Netcode Issue)라고 한다. 넷코드 문제에다가 핵 문제까지 겹치게 되면 게임 한판이 정말 불쾌해지고 재미없어진다.

2. 해결책

넷코드의 가장 근본적인 원인은 물리적인 거리로 인한 네트워크 지연시간이므로 랜파티처럼 물리적인 거리를 줄이지 않는 한 유저나 서버 관리자가 해결할 수 있는 것은 없다[1]. 또한 개발자 입장에서도 높은 핑의 유저와 낮은 핑의 유저 모두를 충족시킬 수 있는 해결책은 없기에 딜레마가 생기게 된다. 때문에 중앙 서버에서 플레이 하는 방식의 게임들은 넷코드 문제를 줄이기 위하여 서버 관리자가 핑 제한을 거는 경우가 흔하다.

호스트 쪽에서 게임 세션을 갱신하는 속도인 틱 레이트 (Tick Rate)를 올리는 것이 그나마 이러한 문제를 근본적으로 줄이는 방법이다[2]. 다만 무작정 올리면 서버 과부하로 더 크게 터져 나가는 수가 있다(...). 넷코드로 장대한 삽질의 역사를 가지고 있는 배필4는 서버 부하를 최소화하면서도 틱 레이트를 많이 올리기 위한 최적화를 따로 소개했을 정도. BF 120Hz Tickrate: (How) Does it Work?

틱레이트(Tickrate)에 대한 정확한 설명

참고로 틱 레이트 자체는 자기 PC에서 싱글플레이를 할 때도 적용된다. 쉽게 말해서 CPU에서 '게임 내부 세계에 이런이런 일이 일어났으니 뭐뭐가 변했다.'를 계산하는 주기가 틱레이트이다. 틱레이트가 30Hz면 프레임이 200프레임 넘게 나오더라도 그래픽만 200프레임이고 게임 내 세계는 1초에 30번만 갱신되는 것.
  • 이는 온라인 게임에도 해당된다. 다만 온라인 게임에서 클라이언트의 틱레이트가 문제될 정도로 개판으로 만드는 경우는 거의 없기 때문에(일반적으로 네트워크의 과 서버의 틱레이트에 모두 영향을 받는 넷코드가 클라이언트의 틱레이트로 인한 보다 훨씬 느릴 수밖에 없다), 넷코드의 주체인 서버/호스트의 틱레이트만 따지는 것이다.
  • 싱글플레이 게임의 경우 틱레이트 자체가 프레임 레이트에 동기화되어 돌아가는 경우도 있어서 구별이 무의미한 경우도 많다. 그리고, 최적화를 위해 물리 엔진이나 GI등 특정 고부하 연산만 낮은 고정 틱레이트를 주는 경우도 있다.

아주 옛날 게임들이 CPU클럭을 올리면 스피드핵을 쓴 것처럼 게임 내부 시간이 빨라진다거나, 크리에이션 엔진을 사용한 게임에서 FPS가 60을 넘으면 생기는 각종 버그 등이 모두 게임 디자인 상에서 의도한 통제범위를 넘어서 틱레이트가 변해서 생기는 문제이다. 현재 레드 데드 리뎀션2 pc판은 프레임이 높을수록 문제가 생긴다.(댓글들에도 여러 사례들이 언급되고 있다.) 퀘이크 3에서 특정 프레임 레이트까진 프레임이 오를 수록 가속 점프 거리가 길어지는 것도 비슷한 문제인데, 이건 알고도 당대 PC 성능상 최적화 한계로 방치했다는 점이 다르다. 이를 방지하기 위해 프레임 레이트 자체를 제한하는 경우도 있고, 이벤트 컷씬만 고정 프레임 레이트를 사용하는 경우도 있다.[3]

서버까지 라우팅 경로가 빙 둘러가는 식으로 잡혀서 쓸데없이 이 높게 나오는 문제의 경우, 미꾸라지 VPN같은 게임용 VPN을 통해 해결할 수 있다.

무선통신은 네트워크 지연시간이 튀는 문제를 완벽하게 해결하기 어렵기에 보통 기피된다. 다만 5GHz Wi-Fi 5나 6GHz Wi-Fi 6 정도라면 라인 오브 사이트를 확보한 상태에서 근거리를 유지하면 게임할 정도는 된다[4][5]. 게임용 무선 마우스 대다수가 (초소형 동글의 편의성을 버리고) 연장 케이블 달린 동글을 마우스 코앞에 위치시키는 것도 같은 이유 때문이다.

3. 사례

게임의 장르를 불문하고 다른 유저의 게임 캐릭터가 멈춰있다가 갑자기 순간이동을 하는 것, 프레임레이트가 충분히 높게 나오는데에도 불구하고 게임 캐릭터들의 움직임이 버벅이는 것 등이 대표적인 사례이다.

3.1. 스포츠 게임

  • 피파 온라인 시리즈: 피파 온라인 3 시절에 넷코드 문제로 인해 선수들의 움직임이 버벅이거나 순간이동하는 현상이 발생하였으며 중앙서버로 호스팅이 연결될 때까지 조작감이 상당히 불편하다는 비판을 받았다. 체팅 렉도 넷코드 문제로 인해 발생했던 것이다.
  • 니드 포 스피드: 엣지: 게임 중에 특정 유저의 네트워크 상태나 PC 상태가 좋지 못할 경우에 종종 차량들이 순간이동하는 현상이 발생한다.

3.2. FPS 게임

FPS 게임의 경우 넷코드에서 200ms 내외의 차이가 나는 유저들 간의 핑 편차를 중앙 서버에서 보정하지 못할 경우에는 엄폐물에 막 숨었는데도 피격 판정이 뜸으로써 억울하게 자신의 캐릭터가 죽기도 하고, 자신의 캐릭터가 적군에게 먼저 사격을 했음에도 넷코드로 인해 보정된 탄착군이 자신에게 불리하게 판정되어 되려 자신의 캐릭터가 죽기도 한다. 이러한 사례로 악명높았던 게임이 배틀필드 3배틀필드 4였다.
  • 오버워치: 넷코드 문제가 두드러지는 게임 중 하나이다. 하이퍼 FPS 특유의 빠른 이동속도, 빠른 방향전환이 합쳐져서 잠깐의 핑 지연이 버그로 생각되는 상황들을 심심치 않게 연출한다. 대표적인 예로 방벽을 들어서 해킹이 실패한 줄 알았는데 성공했다던지, 분명히 머리에 맞힌 것으로 보이는데 실제론 맞지 않았다던지 하는 상황들이 있다.
  • PLAYERUNKNOWN'S BATTLEGROUNDS: 스팀 버전에서는 국내 서버가 많지 않고 대체적으로 해외 서버로 접속하게 되므로 유저들 간의 핑차이가 상당히 심해져서 배틀필드 시리즈 만큼이나 넷코드 문제가 자주 생기는 편이다. 카카오 게임즈 버전에서는 무조건 국내 서버로 접속하게 되므로 넷코드 문제를 걱정할 필요가 없다.
  • Escape from Tarkov: 지형지물과 식생이 많아서 상대의 위치를 찾기도 쉽지 않은데 TTK도 굉장히 짧은 게임이라 넷코드 문제가 상당히 심하다. 게임사에서도 이걸 알아서 핑킥 상한을 180ms로 빡빡하게 잡는 등의 조치를 했지만, 중국발 핵을 피해서 조금만 핑이 튀어도 핑킥을 당하는 간당간당한 핑과 교전의 불리함까지 감수하면서도 미국 서부 서버에서 게임을 하는 유저들이 상당히 많다.
  • 카운터 스트라이크 시리즈: 해당 게임에서 서버의 기본 틱레이트가 66Hz로 나쁘지는 않은 편이지만, 해외 서버에서 플레이할 때에는 종종 순간이동 현상이 나타나기도 한다.
  • 콜 오브 듀티: 블랙 옵스 콜드 워: 해당 게임의 기본 틱레이트는 60Hz로 전작과 동일하지만, 적의 모델링과 실제 적의 히트 박스가 달라 발생하는 탄씹힘 현상과 적이 보는 나의 위치와 내가 보는 적의 위치가 전혀 다른 현상처럼 넷코드에 문제가 있을 때 발생하는 현상들이 전작들에 비해서 매우 자주 발생한다.

3.3. 대전 격투 게임

넷코드에 가장 민감한 게임이라면 당연히 밀리초를 다투는 대전격투게임이다 보니, 제작사나 이식팀에서 심혈을 기울여서 넷코드를 짜야 한다. 크게 부드럽지만 조금만 멀어지면 느려지는 딜레이 넷코드와 입력의 일관성이 있지만 끊기는 롤백 넷코드로 나뉘는데, 격투게임 판이 온라인이 대세가 되면서 점차 롤백 넷코드가 대세가 되어가는 중. 특히 북미권의 경우 딜레이 넷코드가 적용되면 온라인 자체가 힘들기 때문에 롤백 넷코드가 반강제적으로 요구된다. 제대로 만든 길티기어 STRIVE의 경우 200ms정도 즉, 한국에서 북미 서부까지 플레이가 가능해질 정도. 하지만 롤백은 기술적으로 매우 까다롭고, 발동이 빠른 기술을 넣을 수 없다는 단점이 있다. 암전이 없는 1프레임 잡기는 너무나 많은 버그를 일으키기 쉽기 때문에 점점 사라지고 있다. 최초로 롤백 넷코드를 구현한 미들웨어 및 사이트는 GGPO로 알려져있다.

다음은 롤백 넷코드로 멀티를 운영중인 게임 목록이다. ☆표시는 정식 서비스가 아닌 유저들이 자체적으로 운영하는 프리서버이다.

4. 외부링크


[1] 미꾸라지 VPN 같은 건 최적 라우팅 경로 냅두고 빙빙 돌아가서 더 심각한 지연시간을 만드는 문제를 해결하는 것이지, 최적 라우팅 경로로도 이미 지연시간이 길어서 랙 걸리는 걸 줄여주지는 못한다.[2] 해결 효과만 따졌을 때. 낮은 핑의 유저만 받는 서버가 가장 좋은 해결책이라면, 높은 틱 레이트는 바로 그 다음에 속할 정도로 효과가 좋다.[3] PC 싱글플레이 게임의 경우 콘솔이 리드플랫폼인 게임의 PC판일 경우 많이 쓰는 방식이다. PC판 싱글 플레이의 게임 플레이 자체는 프레임 레이트 제한이 없지만, 이벤트 씬은 고정 프레임 레이트이고 이를 풀 수 있으나 버그가 발생하는 대표적인 예로 드래곤 에이지: 인퀴지션이 있다.[4] Wi-Fi 7처럼 전이중 통신을 지원하거나, 특별히 저지연 기술을 지원하는 경우에는 유선 수준의 안정성도 가능해질 것으로 보인다.[5] 다만 무선통신 특성상 다른 기기의 전파 간섭은 물론 같은 기기에 무선 접속한 다른 기기 때문에도 지연이 튈 수 있다. 때문에 도심 2.4GHz 사용은 이론상 게임 가능한 환경을 확보하더라도 실제 지연 시간은 엄청나게 튀는 경우가 많다. 게다가 저가,구형 공유기라서 AP 성능이 낮은데 QoS/방화벽 등 프로세싱이 필요한 기능을 많이 켜놔도 지연이 튀거나 전체적으로 느려질 수 있다.[6] 유저들이 Project Slippi, 일명 슬리피라 불리는 프로그램을 제작하여 Dolphin와 연동을 통해 기존 Dolphin의 딜레이 넷코드를 롤백 넷코드로 개선하였다.

분류