나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-02-21 20:07:49

넷코드


비디오 게임 용어
{{{#!wiki style="margin: 0 -10px -5px; min-height: 26px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1.5px -13px"
공통 <colcolor=#000,#fff>군중제어기 · 궁극기 · 겜안분 · 광역 기술 · 너프 · 노다이 클리어 · 넷코드 · 닥돌 · 대리랭 · 딜찍누 · 딸피 · 랜덤 인카운터 · 랭크 · 막장 플레이 · 버프 · 분노 패턴 · 스피드런 · 어그로 · 입○○ · 잔기 · 잡몹 · 즉사기 · 전체판정기 · 캠핑 · 차지샷 · 티밍 · 티배깅 · 팀킬 · 파밍 · 플레이어형 보스&플레이어형 잡몹 · 패턴화 · 하이스코어 · 히트박스 · 히트스캔 · CPU 보정 · GG
FPS & TPS 개돌 · 버니합 · 베이스레이프 · 스폰킬 · 퀵 스코프 · 똥싸개
종/횡스크롤 슈팅 게임 기합회피 · 노봄발악 · 반격탄 · 방어막 시스템 · 봄 배리어 · 시누가요이 · 안전지대 · 입슈팅 · 와인더 · 위험행위권장 슈팅게임 · 처리지연 · 탄막 게임 · 폭탄 · 피탄 판정 · CAVE 5대천왕
아케이드 게임 노미스 클리어 · 원코인 클리어 · 코인 러시
스코어링 관련 틀:하이스코어
실시간 전략 게임 데스볼 · 어택땅 · 입스타 · AOE
SRPG 맵병기
}}}}}}}}} ||


1. 개요2. 해결책3. 사례
3.1. 스포츠 게임3.2. FPS 게임3.3. 대전 격투 게임
3.3.1. 딜레이 넷코드3.3.2. 롤백 넷코드
4. 외부링크

1. 개요

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

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

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

2. 해결책

넷코드의 가장 근본적인 원인은 물리적인 거리로 인한 네트워크 지연시간이므로 랜파티처럼 물리적인 거리를 줄이지 않는 한 유저나 서버 관리자가 해결할 수 있는 것은 없다. 미꾸라지 VPN 같은 건 최적 라우팅 경로 냅두고 빙빙 돌아가서 더 심각한 지연시간을 만드는 문제를 해결하는 것이지, 최적 라우팅 경로로도 이미 지연시간이 길어서 랙 걸리는 걸 줄여주지는 못한다. 또한 개발자 입장에서도 높은 핑의 유저와 낮은 핑의 유저 모두를 충족시킬 수 있는 해결책은 없기에 딜레마가 생기게 된다. 때문에 중앙 서버에서 플레이 하는 방식의 게임들은 넷코드 문제를 줄이기 위하여 서버 관리자가 핑 제한을 거는 경우가 흔하다.

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

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

참고로 틱 레이트 자체는 자기 PC에서 싱글플레이를 할 때도 적용된다. 쉽게 말해서 CPU에서 '게임 내부 세계에 이런이런 일이 일어났으니 뭐뭐가 변했다.'를 계산하는 주기가 틱레이트이다. 틱레이트가 30Hz면 프레임이 200프레임 넘게 나오더라도 그래픽만 200프레임이고 게임 내 세계는 1초에 30번만 갱신되는 것.
아주 옛날 게임들이 CPU클럭을 올리면 스피드핵을 쓴 것처럼 게임 내부 시간이 빨라진다거나, 크리에이션 엔진을 사용한 게임에서 FPS가 60을 넘으면 생기는 각종 버그 등이 모두 게임 디자인 상에서 의도한 통제범위를 넘어서 틱레이트가 변해서 생기는 문제이다. 현재 레드 데드 리뎀션2 pc판은 프레임이 높을수록 문제가 생긴다.(댓글들에도 여러 사례들이 언급되고 있다.) 퀘이크 3에서 특정 프레임 레이트까진 프레임이 오를 수록 가속 점프 거리가 길어지는 것도 비슷한 문제인데, 이건 알고도 당대 PC 성능상 최적화 한계로 방치했다는 점이 다르다. 2024년 말 마블 라이벌즈에서 유사한 문제가 나오기도 했다.

이를 방지하기 위해 프레임 레이트 자체를 제한하는 경우도 있고, 이벤트 컷씬만 고정 프레임 레이트를 사용하는 경우도 있다.[1]

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

3. 사례

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

3.1. 스포츠 게임

3.2. FPS 게임

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

3.3. 대전 격투 게임

넷코드에 가장 민감한 게임이라면 당연히 밀리초를 다투는 대전 격투 게임이다 보니, 제작사나 이식팀에서 심혈을 기울여서 넷코드를 짜야 한다. 아울러 크게 봤을 때 두 가지 넷코드로 갈리는데 이는 각각 장단점이 존재하며 게임의 출시연도 또는 게임의 특성에 따라 달라진다.

3.3.1. 딜레이 넷코드

Delay Netcode

말그대로 "지연식 넷코드"이며 자신이 누른 인풋과 상대방이 누른 인풋이 동시에 발동할 때까지 게임이 기다려주는 방식의 넷코드다. 다만, 부드럽지만 지리적으로 조금만 멀어지면 느려진다는 단점이 있다. 이유는 내가 누른 인풋이 상대방한테까지 가는데 길어질수록 게임이 일부러 느려져 기다린다는 뜻이다. 핑이 아주 높은 상황에선 자신이 누른 인풋이 바로바로 나오는 것이 아닌 매우 지연된 상태로 발동하여 게임이 전체적으로 질척거린다는 느낌이 날 수 있다. 현실에서 비유하자면 진흙속에서 걷던지, 물속에서 걷는다고 생각하면 되며 딜레이가 심한 상황에선 플레이어가 미리 미래를 예측하면서 게임을 해야할 때가 있다. 당연하겠지만, 핑이 낮으면 거의 지장없어서 지리적 거리도 작고 인구도 많은 한국이나 일본에서 게임하는 이들은 서로 딜레이 넷코드만으로도 수월한 플레이가 가능하다.[3]

3.3.2. 롤백 넷코드

Rollback Netcode

"되돌아가기 넷코드"로 설명 가능하며, 딜레이 넷코드에서의 미래 예측을 본인이 아닌 게임이 대신 해준다는 뜻이다. 즉, 핑이 높은 상황에서 상대방이 방어 태세를 취한 상태면 게임이 몇 프레임을 앞서 예측하여 자신한테 그 예측한 모션을 보여주는 것. 이후 제대로된 인풋을 받으면 예측된 모션을 바로 취소하여 제대로된 모션으로 "되돌아가주는" 형식이다. 이는 상대방도 마찬가지이며 따라서 서로의 인풋을 일일히 기다리지 않아도 꾸준한 예측 덕에 끊김없는 수월한 게임 플레이가 가능하다는 장점이 있다. 물론, 이것도 완벽한 것이 아닌지라 만약 예측을 잘못하면 캐릭터가 순간이동을 해버린다.[4] 2D 격투 게임들은 대부분 수직선 방향으로 움직이다 보니 예측이 틀릴 변수가 적어 롤백 넷코드가 가장 적합하지만 3D의 경우 말그대로 3차원으로 움직여서 롤백만으로 예측하기 매우 어려울 수 있다. 따라서 많은 3D 격투 게임들은 딜레이 + 롤백 하이브리드 형식으로 두 가지 넷코드를 동시에 사용할 때도 있다.[5]

현재 격투 게임판이 온라인이 대세가 되면서 점차 롤백 넷코드가 대세가 되어가는 중. 특히 북미권의 경우 딜레이 넷코드가 적용되면 온라인 자체가 힘들기 때문에 롤백 넷코드가 반강제적으로 요구된다. 제대로 만든 길티기어 STRIVE의 경우 200ms정도 즉, 한국에서 북미 서부까지 플레이가 가능해질 정도. 하지만 롤백은 기술적으로 매우 까다롭고, 발동이 빠른 기술을 넣을 수 없다는 단점이 있다. 암전이 없는 1프레임 잡기는 너무나 많은 버그를 일으키기 쉽기 때문에 점점 사라지고 있다. 최초로 롤백 넷코드를 구현한 미들웨어 및 사이트는 GGPO로 알려져있다.

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

4. 외부링크


[1] PC 싱글플레이 게임의 경우 콘솔이 리드플랫폼인 게임의 PC판일 경우 많이 쓰는 방식이다. PC판 싱글 플레이의 게임 플레이 자체는 프레임 레이트 제한이 없지만, 이벤트 씬은 고정 프레임 레이트이고 이를 풀 수 있으나 버그가 발생하는 대표적인 예로 드래곤 에이지: 인퀴지션이 있다.[2] Wi-Fi 7처럼 전이중 통신을 지원하거나, 특별히 저지연 기술을 지원하는 경우에는 유선 수준의 안정성도 가능해질 것으로 보인다. 다만 무선통신 특성상 다른 기기의 전파 간섭은 물론 같은 기기에 무선 접속한 다른 기기 때문에도 지연이 튈 수 있다. 때문에 도심 2.4GHz 사용은 이론상 게임 가능한 환경을 확보하더라도 실제 지연 시간은 엄청나게 튀는 경우가 많다. 게다가 저가,구형 공유기라서 AP 성능이 낮은데 QoS/방화벽 등 프로세싱이 필요한 기능을 많이 켜놔도 지연이 튀거나 전체적으로 느려질 수 있다.[3] 심지어 한국에서부터 일본까지도 딜레이만으로 가능하다.[4] 방어 태세인줄 알았던 캐릭이 실제 점프 상태였으면 순식간에 땅에서 공중으로 순간이동한다. 물론, 이건 핑이 500이 넘는 아주 극심한 경우던지 아니면 개발자가 넷코드를 거지같이 제작한 상황이다.[5] 한마디로 반은 딜레이, 반은 롤백으로 커버한다는 뜻이다. 게임을 전체적으로 지연시켜 모션의 정확도를 높이고 나머지 높은 핑을 롤백으로 커버한다는 뜻이다. 이러면 200이 넘는 핑도 100대 초반 느낌나게 플레이할 수 있게 해준다. 참고로 200대면 한국에서 미국 거리가 된다. 100대 초반이면 한국에서 동남아시아 정도.[6] 유저들이 Project Slippi, 일명 슬리피라 불리는 프로그램을 제작하여 Dolphin와 연동을 통해 기존 Dolphin의 딜레이 넷코드를 롤백 넷코드로 개선하였다.

분류