넷코드
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
넷코드는 온라인 게임에서 발생하는, 각 플레이어의 입력이 다른 시뮬레이션에서 처리되는 문제를 해결하기 위한 기술이다. 딜레이 기반 넷코드와 롤백 넷코드 두 가지 주요 해결책이 사용되며, 딜레이 기반 넷코드는 입력 지연을 통해 동기화를 시도하고, 롤백 넷코드는 예측과 롤백을 통해 딜레이를 줄인다. 넷코드 문제는 지연 시간, 틱 레이트, 소프트웨어 버그, 전송 계층 프로토콜 등의 요인에 의해 발생하며, 이러한 문제들은 게임 플레이의 지연, 시뮬레이션 동기화 오류, 네트워크 전송 방식의 한계 등으로 나타난다.
더 읽어볼만한 페이지
- 비디오 게임 플랫폼 - 모바일 게임
 모바일 게임은 휴대전화와 스마트폰에서 즐기는 비디오 게임으로, 20세기 말 휴대전화 보급 증가와 기술 발전, 앱스토어 등장, 앱 내 구매 모델 확립, 중국 시장 성장 등에 힘입어 전체 게임 시장에서 큰 비중을 차지하며 다양한 플랫폼과 장르로 발전하고 있다.
- 비디오 게임 플랫폼 - 게임 서버
 게임 서버는 온라인 게임에서 게임 로직 실행과 플레이어 간 상호작용을 관리하는 핵심 시스템으로, 운영 주체와 방식에 따라 게임 회사 직접 운영 방식과 사용자 직접 운영 방식으로 나뉘며, 성능, 안정성, 비용 면에서 장단점을 가진 다양한 형태로 구현될 수 있다.
- 서버 - 슈퍼 서버
 슈퍼 서버는 TCP 래퍼를 통해 접근 권한을 확인하고 필요에 따라 다른 서버 프로그램을 시작하여 메모리 사용량 감소 및 시스템 관리 효율성을 높이지만, 높은 연결 요청 빈도에서는 성능 저하를 유발할 수 있으며, inetd, launchd, systemd, ucspi-tcp, xinetd 등이 대표적인 구현체이다.
- 서버 - 씨마이크로
 씨마이크로는 2007년 설립되어 투자 유치 후 AMD에 인수된 서버 개발 회사로, SM10000, SM15000 시리즈 등의 제품을 개발하고 버라이즌과의 협력 및 여러 수상 경력을 보유하고 있다.
- 비디오 게임 개발 - 게임 서버
 게임 서버는 온라인 게임에서 게임 로직 실행과 플레이어 간 상호작용을 관리하는 핵심 시스템으로, 운영 주체와 방식에 따라 게임 회사 직접 운영 방식과 사용자 직접 운영 방식으로 나뉘며, 성능, 안정성, 비용 면에서 장단점을 가진 다양한 형태로 구현될 수 있다.
- 비디오 게임 개발 - 비디오 게임 봇
 비디오 게임 봇은 사용자의 조작을 대신하거나 플레이어 수를 보충하기 위해 사용되는 프로그램이며, 게임 밸런스를 해치고 부정적인 측면이 존재하여 한국 온라인 게임에서 심각한 문제가 되기도 한다.
| 넷코드 | |
|---|---|
| 설명 | |
| 용어 | 'Netcode(넷코드)'는 온라인 게임에서 클라이언트와 서버 간의 통신을 관리하고 동기화하는 소프트웨어 구성 요소를 지칭함. | 
| 역할 | 게임의 반응성, 공정성 및 전반적인 품질에 중요한 역할을 함. | 
| 목표 | 플레이어의 액션을 게임 세계에 정확하게 반영하고, 모든 플레이어에게 일관된 경험을 제공하는 데 있음. | 
| 기술적 측면 | |
| 주요 과제 | 지연 시간: 인터넷 연결의 지연 시간을 관리하는 것. 데이터 손실: 패킷 손실을 처리하는 것. 일관성 유지: 모든 플레이어에게 일관된 게임 상태를 유지하는 것. | 
| 기술 | 지연 보상 (Lag Compensation): 플레이어의 지연 시간을 보상하여 사격 정확도를 높이는 기술. 클라이언트 측 예측 (Client-Side Prediction): 클라이언트가 자신의 행동 결과를 예측하여 반응성을 높이는 기술. 상태 동기화 (State Synchronization): 서버와 클라이언트 간에 게임 상태를 동기화하는 기술. 관심 영역 (Area of Interest): 플레이어 주변의 관련 객체만 전송하여 대역폭 사용량을 줄이는 기술. | 
| 아키텍처 | 클라이언트-서버 (Client-Server): 중앙 서버를 통해 모든 통신을 처리하는 방식. 피어 투 피어 (Peer-to-Peer): 플레이어 간에 직접 통신하는 방식. | 
| 성능 지표 | |
| 틱 레이트 (Tick Rate) | 서버가 게임 상태를 업데이트하는 빈도. 높을수록 게임의 반응성이 좋아짐. | 
| 지연 시간 (Latency) | 클라이언트와 서버 간의 통신 지연 시간. 낮을수록 좋음. | 
| 패킷 손실 (Packet Loss) | 전송 중에 손실되는 데이터 패킷의 비율. 낮을수록 안정적인 통신을 의미함. | 
| 문제 해결 | |
| "넷코드" 문제 | 게임의 반응성이 낮거나 불공정한 상황을 초래할 수 있음. DICE의 배틀필드 4에서 "넷코드" 문제 해결을 위한 노력이 있었음. | 
| 참고 문헌 | |
| 문헌 | An analysis of continuous consistency models in real time peer-to-peer fighting games | 
| 외부 링크 | |
| 문서 | 배틀필드 4의 "넷코드" 문제 해결 | 
2. 넷코드의 종류
온라인 게임은 로컬 게임과 달리 여러 개의 병렬 시뮬레이션(각 플레이어당 하나)을 가진다. 각 플레이어의 입력은 즉시 수신되지만, 다른 플레이어의 입력은 일정 지연 시간을 두고 도착한다.[3] 이로 인해 플레이어 시뮬레이션 간 비동기화가 발생할 수 있다. 이를 해결하기 위한 대표적인 두 가지 넷코드 기술은 다음과 같다.
- 딜레이 기반 넷코드: 원격 플레이어의 입력이 늦게 도착하면, 로컬 플레이어의 입력을 지연시켜 두 입력을 동기화하고 동시에 실행한다.
- 롤백 넷코드: 로컬 플레이어의 입력을 즉시 실행하고, 원격 플레이어의 입력은 예측하여 처리한다. 예측이 틀리면 게임 상태를 되돌려 수정된 상태에서 게임을 진행한다.
각 방식에 대한 자세한 내용은 하위 문단을 참고할 수 있다.
2. 1. 딜레이 기반 넷코드

딜레이 기반 넷코드는 원격 플레이어의 입력이 늦게 도착할 때, 게임이 두 입력을 동기화하고 동시에 실행하기 위해 로컬 플레이어의 입력을 그에 맞춰 지연시키는 방식이다. 이 추가 지연은 플레이어에게 방해가 될 수 있지만(특히 지연 시간이 높을 때), 전체적으로 변경 사항은 눈에 띄지 않는다. 그러나 이러한 지연은 현재 지연 시간의 갑작스러운 변동으로 인해 일관성이 없을 수 있다. 플레이어 간의 지연 시간이 원격 플레이어에 대해 설정된 버퍼 창을 초과하면 게임은 대기해야 하므로 화면이 "정지"된다. 이는 딜레이 기반 넷코드가 문제의 프레임에서 모든 플레이어의 입력을 받을 때까지 시뮬레이션이 계속되도록 허용하지 않기 때문에 발생한다.[4] 이러한 가변 지연은 오프라인 플레이(또는 LAN 게임)에 비해 일관성이 없고 반응이 없는 경험을 유발하며, 격투 게임과 같이 시간 민감하고 빠르게 진행되는 장르에서 플레이어의 성능에 부정적인 영향을 미칠 수 있다.[5]
2. 2. 롤백 넷코드

롤백 넷코드는 기존 넷코드의 대체 시스템이다. 로컬 플레이어의 입력을 즉시 실행하고, 원격 플레이어의 입력은 예측하여 처리한다. (이전 틱과 동일한 입력을 한다고 가정) 원격 입력이 도착했을 때(예: 45ms 후) 예측이 정확하면 게임은 그대로 진행되지만, 예측이 틀리면 게임 상태를 되돌려(rollback) 수정된 상태에서 게임 플레이를 계속한다. 이는 다른 플레이어에게 "점프"하는 것처럼 보인다.[1]
이러한 "점프" 현상을 숨기기 위해 일부 게임은 고정된 입력 지연 후 롤백을 사용하는 하이브리드 방식을 사용하기도 한다. 롤백은 랙 스파이크나 연결 불일치 등의 문제를 효과적으로 숨길 수 있다. 예측이 대부분 정확하여 플레이어가 인지하지 못하는 경우가 많기 때문이다.
하지만 클라이언트 게임이 느려질 때(주로 과열) 문제가 발생할 수 있다. 기계 간 티켓 교환 속도가 달라져 균열 문제가 생길 수 있기 때문이다. 이는 입력을 느리게 받는 플레이어에게는 시각적 결함을 일으키고, 게임이 느려진 플레이어는 다른 플레이어로부터 정상 속도로 입력을 받아 유리해지는 '일방적인 롤백' 현상을 야기한다.
이러한 불균형한 입력 흐름 문제를 해결하기 위해 늦은 입력이 모든 기계에 도착할 때까지 기다리는 표준 솔루션(지연 기반 넷코드와 유사)이나, ''Skullgirls''에서 사용되는 것처럼 7프레임 중 1프레임을 생략하여 건너뛴 프레임을 복구하는 방식으로 게임 인스턴스를 동기화하는 독창적인 솔루션도 있다.[7]
롤백 넷코드는 P2P 아키텍처 및 격투 게임과 관련이 깊지만, 데이터베이스 관리 시스템의 롤백 기능이나 클라이언트-서버 아키텍처, 다른 비디오 게임 장르에서도 사용된다.[1]
GGPO는 게임(주로 격투 게임)에 롤백 네트워킹 구현을 돕는 MIT 라이선스 라이브러리이다.[9]
2. 2. 1. 롤백 넷코드 구현의 어려움
롤백 넷코드는 게임 엔진이 이전 상태로 되돌아갈 수 있는 기능을 갖춰야 한다. 이는 기존 엔진에 수정을 요구할 수 있기 때문에 구현에 어려움이 따른다. 드래곤볼 파이터즈 프로듀서 히로키 토모코가 언급했듯이, AAA급 게임(일반적으로 견고한 엔진과 높은 트래픽 네트워크를 가짐)에서는 엔진의 복잡성으로 인해 롤백 넷코드의 구현이 더욱 문제가 되고 비용이 많이 들 수 있다.[8]3. 넷코드 문제의 원인
온라인 게임에서 넷코드 문제는 여러 요인에 의해 발생한다. 로컬 게임과 달리 온라인 게임에서는 여러 플레이어의 입력을 동시에 처리해야 하는데, 각 플레이어의 입력은 네트워크 환경에 따라 지연 시간을 가지고 도착한다.[3] 예를 들어, 60 FPS 게임에서 한 프레임은 16.66 ms인데, 원격 플레이어의 입력이 이 시간 안에 도착하지 않으면 플레이어 시뮬레이션 간에 불일치가 발생한다.
이러한 문제를 해결하기 위해, 딜레이 기반 넷코드 외에 롤백 넷코드가 사용될 수 있다. 롤백 넷코드는 로컬 플레이어의 입력을 즉시 실행하고, 원격 플레이어의 입력은 예측하여 처리한다. 예측이 맞으면 게임은 계속 진행되지만, 예측이 틀리면 게임 상태를 되돌려 수정된 상태에서 다시 진행한다. 이 방식은 랙 스파이크나 연결 불일치 문제를 효과적으로 숨길 수 있지만, 클라이언트의 게임이 느려질 경우 (주로 과열로 인해) 문제가 발생할 수 있다.[6]
롤백 넷코드 구현은 게임 엔진의 상태를 되돌릴 수 있어야 하므로, 기존 엔진에 수정이 필요하며, 이는 AAA급 게임에서는 구현이 어렵고 비용이 많이 들 수 있다.[8]
롤백 넷코드는 P2P 아키텍처 및 격투 게임과 관련이 있지만, 클라이언트-서버 아키텍처 및 다른 비디오 게임 장르에서도 사용될 수 있다.[1] 게임에 롤백 네트워킹을 구현하는 데 도움이 되는 GGPO라는 라이브러리도 있다.[9]
3. 1. 지연 시간 (Latency)
지연 시간(Latency영어)은 온라인 게임에서 피할 수 없는 요소이며, 플레이어의 경험에 큰 영향을 미친다. 플레이어 간의 지연 시간이 길수록 게임이 입력에 늦게 반응하는 것처럼 느껴진다.[1] 지연 시간은 플레이어의 네트워크 환경(게임에서 제어할 수 없는 부분)뿐만 아니라, 게임 시뮬레이션 방식 자체에서도 발생한다. 이러한 지연 시간, 특히 높은 지연 시간을 숨기거나 보완하기 위해 다양한 랙 보상 방법이 사용된다.[10]딜레이 기반 넷코드는 이 문제에 대한 고전적인 해결책이다. 원격 플레이어의 입력이 늦게 도착하면, 게임은 두 입력을 동기화하고 동시에 실행하기 위해 로컬 플레이어의 입력을 지연시킨다. 이 추가 지연은 플레이어에게 불편함을 줄 수 있지만(특히 지연 시간이 높을 때), 전체적으로는 큰 변화가 눈에 띄지 않는다. 그러나 이 지연은 현재 지연 시간의 갑작스러운 변동으로 인해 일정하지 않을 수 있다. 플레이어 간 지연 시간이 원격 플레이어에 대해 설정된 버퍼를 초과하면 게임은 대기해야 하며, 이로 인해 화면이 "정지"되는 현상이 발생한다. 이는 딜레이 기반 넷코드가 해당 프레임에서 모든 플레이어의 입력을 받을 때까지 시뮬레이션을 진행하지 않기 때문이다.[4] 이러한 가변적인 지연은 오프라인 플레이(또는 LAN 게임)에 비해 일관성이 떨어지고 반응이 느린 경험을 유발하며, 격투 게임과 같이 시간에 민감하고 빠르게 진행되는 장르에서 플레이어의 실력에 부정적인 영향을 줄 수 있다.[5]
3. 2. 틱 레이트 (Tick rate)
게임 시뮬레이션에서 한 번의 업데이트를 틱(tick)이라고 한다. 서버에서 시뮬레이션이 실행되는 속도를 틱레이트(tickrate)라고 부르며, 이는 클라이언트의 프레임 속도와 비슷한 개념이지만 서버에서 렌더링 시스템 없이 사용된다.[11] 틱레이트는 시뮬레이션을 실행하는 데 필요한 시간에 의해 제한되며, 변동하는 틱레이트로 인한 불안정성을 줄이고 CPU 및 데이터 전송 비용을 절감하기 위해 의도적으로 제한되기도 한다. 틱레이트가 낮으면 서버와 클라이언트 간의 게임 시뮬레이션 동기화 지연 시간이 늘어난다.[12]1인칭 슈팅 게임과 같은 게임들의 틱레이트는 다음과 같다.
| 게임 | 틱레이트 | 
|---|---|
| 발로란트 | 초당 128틱 | 
| 카운터 스트라이크: 글로벌 오펜시브, 오버워치 | 초당 64틱 | 
| 포트나이트, 배틀필드 V 콘솔 에디션 | 초당 30틱 | 
| 콜 오브 듀티: 모던 워페어, 콜 오브 듀티: 워존, Apex 레전드 | 초당 20틱[14][15] | 
틱레이트가 낮아지면 시뮬레이션의 정밀도 또한 자연스럽게 감소하며,[11] 이는 과도하거나 클라이언트와 서버 시뮬레이션이 상당히 다른 속도로 실행될 때 문제를 일으킬 수 있다.
사용 가능한 대역폭의 양과 네트워크 통신에 필요한 CPU 시간의 제약 때문에, 일부 게임은 덜 중요한 정보의 빈도와 우선 순위를 제한하고 특정 필수 통신에 우선 순위를 두기도 한다. 틱레이트와 마찬가지로, 이는 효과적으로 동기화 지연 시간을 증가시킨다. 게임 엔진은 대역폭 사용을 줄이기 위해 네트워크를 통해 전송되는 일부 값의 정밀도를 낮추는 것 외에도, 특정 클라이언트 및/또는 게임 세계의 특정 객체로 업데이트(시뮬레이션)가 전송되는 횟수를 제한할 수 있다. 이러한 정밀도 부족은 때때로 눈에 띄게 나타날 수 있다.[11][16]
3. 3. 소프트웨어 버그
게임 클라이언트 간의 시뮬레이션 동기화 오류는 넷코드 문제의 또 다른 원인이 될 수 있다. 여기에는 시뮬레이션이 한 머신에서 다른 머신과 다르게 진행되거나, 사용자가 통신해야 한다고 인식하는 일부 사항이 통신되지 않도록 하는 버그가 포함될 수 있다.[2] 전통적으로, 실시간 전략 (예: 에이지 오브 엠파이어) 게임은 모든 클라이언트에서 시뮬레이션이 정확히 동일하게 실행될 것으로 가정하는 록스텝 프로토콜 피어 투 피어 네트워킹 모델을 사용했다. 그러나 어떤 이유로든 한 클라이언트가 동기화에서 벗어나면 비동기화가 복합적으로 발생하여 복구할 수 없게 될 수 있다.[11][17]3. 4. 전송 계층 프로토콜 (TCP/UDP)
전송 제어 프로토콜(TCP)을 게임에서 사용하면 플레이어 간 대기 시간이 늘어날 수 있다. TCP는 두 컴퓨터 간의 연결을 기반으로 데이터를 교환하고 읽을 수 있게 한다. 이러한 연결은 매우 안정적이고, 정렬되어 있으며 구현하기 쉽다. 그러나 실시간 스트리밍 프로토콜인 TCP는 자동으로 데이터를 패킷으로 그룹화하여 특정 양의 정보에 도달할 때까지 전송하지 않으므로( 네글 알고리즘이 비활성화되지 않는 한), 빠른 속도의 게임이 요구하는 네트워크 속도에는 적합하지 않다. 또한 TCP는 패킷 손실, 순서 오류, 중복 등에 느리게 응답하여 실시간 온라인 게임에 매우 해로울 수 있다.[18]사용자 데이터그램 프로토콜(UDP)을 게임에서 사용하면 기계 간 연결은 매우 빠르다. 이는 기계 간 연결 설정 없이 데이터를 직접 전송하고 수신하기 때문이다. UDP는 TCP보다 훨씬 간단하지만, 안정성이 부족하며, 패킷을 통한 데이터 분할, 자동 패킷 손실 감지 등 기계 간 통신에 필수적인 기능을 처리하기 위해 자체 코드를 구현해야 한다. 이는 엔진의 복잡성을 증가시키고 문제를 일으킬 수 있다.[18]
참조
[1] 
서적
 
An analysis of continuous consistency models in real time peer-to-peer fighting games
 
http://urn.kb.se/res[...] 
2019
 
[2] 
웹사이트
 
Addressing "Netcode" in Battlefield 4
 
http://battlelog.bat[...] 
EA Digital Illusions CE
 
2014-03
 
[3] 
웹사이트
 
Netcode [p1]: Fightin' Words
 
https://ki.infil.net[...] 
2020-12-07
 
[4] 
웹사이트
 
Explaining how fighting games use delay-based and rollback netcode
 
https://arstechnica.[...] 
2019-10-18
 
[5] 
웹사이트
 
The difference between LAN and Online esports
 
http://www.pinnacle.[...] 
[6] 
Youtube
 
Analysis: Why Rollback Netcode Is Better
 
https://www.youtube.[...] 
2020-04-08
 
[7] 
웹사이트
 
Skullgirls receives an improved netcode update initially created by a fan of the game
 
https://www.eventhub[...] 
2020-04-29
 
[8] 
웹사이트
 
The era of delay-based netcode may finally be over for good in fighting games depending on what SNK does with The King of Fighters 15
 
https://www.eventhub[...] 
2020-12-10
 
[9] 
웹사이트
 
Explaining how fighting games use delay-based and rollback netcode
 
https://arstechnica.[...] 
2019-10-18
 
[10] 
웹사이트
 
Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization
 
https://developer.va[...] 
[11] 
웹사이트
 
Source Multiplayer Networking
 
https://developer.va[...] 
Valve Corporation
 
[12] 
웹사이트
 
Titanfall, de l'importance d'un bon tickrate
 
http://www.gamekult.[...] 
gamekult.com
 
2014-03-29
 
[13] 
웹사이트
 
Battlefield V Server Tick Rate Revealed & Why It Matters
 
https://www.glitched[...] 
[14] 
뉴스
 
Valorant's super-fast servers are attracting streamers and pros in droves. Here's why.
 
https://www.washingt[...] 
[15] 
웹사이트
 
How bad is Apex Legends netcode compared to Fortnite and PUBG?
 
https://www.dexerto.[...] 
2019-11-23
 
[16] 
웹사이트
 
Unreal Networking Architecture
 
http://udn.epicgames[...] 
Epic Games
 
[17] 
웹사이트
 
What every programmer needs to know about game networking
 
http://gafferongames[...] 
2010-02-24
 
[18] 
웹사이트
 
UDP vs. TCP
 
https://gafferongame[...] 
2008-10-01
 
[19] 
서적
 
An analysis of continuous consistency models in real time peer-to-peer fighting games
 
http://urn.kb.se/res[...] 
2019
 
[20] 
웹인용
 
Addressing "Netcode" in Battlefield 4
 
http://battlelog.bat[...] 
EA Digital Illusions CE
 
2014-03
 
                        
                        본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다. 
                        모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
                        하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다. 
                        따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
                        
                        문의하기 : help@durumis.com