mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-01-20 11:36:19

넷코드


비디오 게임 용어
{{{#!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. 대전 격투 게임

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

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

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

3. 사례

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

3.1. 스포츠 게임

3.2. FPS 게임

FPS 게임의 경우 넷코드에서 200ms 내외의 차이가 나는 유저들 간의 핑 편차를 중앙 서버에서 보정하지 못할 경우에는 엄폐물에 막 숨었는데도 피격 판정이 뜸으로써 억울하게 자신의 캐릭터가 죽기도 하고, 자신의 캐릭터가 적군에게 먼저 사격을 했음에도 넷코드로 인해 보정된 탄착군이 자신에게 불리하게 판정되어 되려 자신의 캐릭터가 죽기도 한다. 이러한 사례로 악명높았던 게임이 배틀필드 3 배틀필드 4였다.

3.3. 대전 격투 게임

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

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

분류