게임에 적합한 넷코드를 선택하는 방법

거의 모든 멀티플레이어 게임은 지연, 패킷 손실, 씬 관리 등 게임 경험에 영향을 미치는 네트워크 관련 문제를 충분히 고려하고 해결해야 합니다. 게임에서는 다양한 방식으로 이러한 문제를 해결할 수 있습니다.
올바른 솔루션이란 게임의 장르, 플레이어 및 연결된 오브젝트의 규모, 경쟁력뿐만 아니라 네트워킹 레이어에 필요한 제어의 규모 등 다양한 측면에 따라 달라집니다. 시나리오마다 다른 넷코드 솔루션이 필요합니다.
이 블로그에서는 Unity 엔진에서 사용되는 일반적인 네트워킹 라이브러리를 소개하고, 이러한 솔루션에 대한 개발자의 경험을 조사한 결과를 통해 프로젝트에 적합한 솔루션을 결정하는 데 도움이 되는 내용을 다룹니다.
넷코드는 많은 엔지니어가 데이터 동기화나 지연 보상 등 네트워크 게임플레이의 특정 측면을 더 쉽게 구축할 수 있도록 특별히 고안된 프레임워크를 지칭할 때 사용하는 주요 용어입니다.
완전한 네트워크 프레임워크에는 두 가지 필수 구성 요소가 포함되어 있습니다.
1. 클라이언트, 호스트 또는 서버와 주고받는 모든 트래픽과 패킷을 관리하는 전송(기본) 계층
2. 일반적인 네트워킹 게임플레이 요구 사항을 간소화하고 툴과 통합하는 상위 수준의 추상화 계층
흔히 '넷코드 솔루션'은 네트워크 게임플레이와 최적화를 구현하는 두 번째 추상화 계층을 가리킵니다.
넷코드 솔루션마다 제한 사항과 기능이 다르기 때문에 멀티플레이어 경험을 구축하기가 더 쉬워지거나 어려워질 수 있습니다. 시작하기 전에 무엇을 구축할지 정확히 파악하고 옵션을 평가하여 비용이 많이 드는 리팩터를 줄이는 것이 중요합니다.
Unity에는 두 가지 자체 넷코드 솔루션이 있는데, Netcode for GameObjects와 Netcode for Entities입니다.
Netcode for GameObjects 패키지는 클라이언트 또는 서버 권한 모델을 사용하여 여러 클라이언트 및 플랫폼에서 씬과 게임 오브젝트 데이터를 보다 쉽게 동기화할 수 있도록 제작되었습니다. Unity 엔진은 플레이 모드와 런타임 모두에서 네트워크를 프로파일링하는 툴을 사용하여 멀티플레이어 게임을 최적화할 수 있도록 지원합니다.
또한 비용 효율적인 P2P 컴패니언 서비스인 Unity Gaming Services의 Relay를 사용하여 전용 호스팅에 투자하지 않고도 플레이 테스트를 확장하고 멀티플레이어 게임을 제작할 수 있습니다.
곧 출시될 Unity 2022 LTS에서 가능성의 폭을 넓혀 보세요. 성능과 확장성을 위해 제작된 ECS 기반의 Netcode for Entities 패키지를 사용해서 경쟁 액션 멀티플레이어 게임을 제작해 보세요. 예측, 보간 및 지연 보상 기능을 갖춘 양질의 서버 권한 게임플레이를 제공할 수 있습니다.
에셋을 자동으로 제거할 수 있는 전용 서버 빌드 타겟으로 비용을 관리할 수 있습니다. 게임 인프라의 탄력성과 확장성을 효율적으로 유지할 수 있는 Unity Gaming Services의 Game Server Hosting으로 배포하세요. 최고의 플레이어 경험을 제공하는 데에만 집중하세요.
유니티는 가장 폭넓게 사용되는 타사 넷코드 솔루션에 대한 피드백을 수집하여, 어떤 프레임워크가 가장 적합한지 결정하는 과정을 안내하기 위해 의사 결정 트리를 만들었습니다.
이러한 툴을 만들기 위해 세 가지 소스에서 데이터를 수집하고 분석했습니다.
- 200명 이상의 Unity 사용자를 대상으로 특정 넷코드 프레임워크에 대한 경험에 대한 정보를 묻는 설문조사를 실시했습니다.
- Unity로 멀티플레이어 게임을 출시 중인 사용자를 대상으로 20건 이상의 심층 인터뷰를 진행했습니다.
- MLAPI(현재 Netcode for GameObjects), DarkRift 2, Mirror, Photon Quantum으로 구축한 프로토타입을 통해 정보를 얻었습니다.
고객들은 자신의 경험을 바탕으로 다양한 기준에 따라 최고의 넷코드 솔루션에 점수와 순위를 매겼습니다.
네트워킹은 복잡하기 때문에 넷코드 솔루션을 통해 얻는 안정성과 지원 수준이 매우 중요합니다. 각 넷코드 솔루션의 안정성과 지원은 버그 또는 크래시 가능성, 문제 해결 또는 디버깅을 위한 응답 시간, API의 주요 변경 가능성 등 세 가지 축을 기준으로 평가했습니다.
좋은 샘플 및 기술 자료와 튜토리얼의 제공, 프로토타이핑을 위한 솔루션의 간단한 API 제공 등으로 일반적인 작업을 시작하고 수행하는 것이 얼마나 쉬운지에 대한 사용자들의 평가를 종합했습니다.
성능이 떨어지는 솔루션을 원하는 고객은 없을 것입니다. 평가한 각 넷코드 솔루션에 점수를 매기기 위해, 제한된 GC/할당, 최소 지연 오버헤드, 고성능 컴퓨팅, 이상적으로는 멀티스레드 기능까지 검토했습니다.
제작하고자 하는 게임 장르에 따라 넷코드 솔루션의 확장성은 중요한 고려 사항이 될 수 있습니다. 성능과 마찬가지로, 큰 성능 저하 없이 더 많은 수의 연결된 클라이언트를 지원할 수 있는 솔루션의 역량을 평가했습니다.
모든 기능을 갖춘 넷코드 솔루션은 프로젝트의 모든 장르 또는 고유한 게임별 요구 사항을 지원하는 데 중요합니다. 솔루션 순위를 매길 때 오브젝트 및 변수 모사, RPC, 씬 관리 등과 같은 중간 수준의 기능에 중점을 두었습니다. 또한 예측 및 지연 보상과 같은 더 높은 수준의 기능도 고려했습니다.
넷코드 솔루션에 대한 적절한 예산을 책정할 수 있도록 각 솔루션의 비용에 대한 평가도 포함했습니다. 여기에는 라이브러리/솔루션의 비용 및 별도로 관리해야 하는 운영 오버헤드와 같은 숨겨진 비용이 모두 고려됩니다.
넷코드 솔루션에 대한 결정을 내리기 전에 몇 가지 사항을 고려해야 합니다.
먼저, 자체 평가를 실시할 것을 적극 권장합니다. 가장 일반적인 옵션에 대한 요약 정보도 도움이 될 수 있지만, 게임의 특성에 따라 직접 평가를 수행해 보아야 합니다.
둘째, 이 목록은 2020년에 실시한 평가를 기반으로 하며, 현재 사용 가능한 넷코드 또는 전송 계층 솔루션의 모든 대안을 대표하지는 않습니다.
마지막으로, 네트워크 관련 추가 작업과 유지 관리를 얼마나 감당할 수 있는지 고려하세요. 게임에 그렇게 많은 네트워크 오버헤드가 있어야 할까요?
여러 기기에서 모든 플레이어 상태를 완벽하게 동기화할 필요가 없는 캐주얼 게임이나 협동 게임을 제작하는 경우, Netcode for GameObjects와 같이 오버헤드와 개발 비용이 적은 넷코드 솔루션을 고려해 보세요.
플레이어가 물리적 기술로 서로 경쟁하는 빠른 속도감 및 액션 중심의 게임을 제작하는 경우, Netcode for Entities와 같은 솔루션을 고려해 보세요. 이는 클라이언트 예측 등을 지원할 수 있으며 지연을 보상하는 방법을 제공합니다.
아래 정보는 시작에 불과합니다. 이러한 타사 넷코드 솔루션에 대해 자세히 설명하는 전체 넷코드 보고서도 다운로드해 보세요.
- MLAPI(현재 유니티가 인수하여 Netcode for GameObjects로 발전)
- DarkRift 2
- Photon PUN
- Photon Quantum 2.0
- Mirror
참고: 이 PDF에는 고객이 가장 많이 참조하는 솔루션이 포함되어 있지만 그 외에도 다양한 솔루션이 있습니다. 일부 고객들은 아직 평가할 만큼 충분한 고객 피드백을 수집하지 못한 Forge, Normcore, Bolt, LL(Enet, LiteNet 등) 등의 다른 솔루션을 언급하기도 했습니다. 이러한 솔루션도 고려하여 설정에 적합한 옵션인지 확인해 보세요.

차기 히트작이 될 배틀로얄 게임을 빌드하는 경우에도, 아기자기한 온라인 협동 게임을 빌드하는 경우에도, 멀티플레이어 네트워킹과 사용 가능한 넷코드 솔루션에 대한 기본적인 이해가 언제나 선행되어야 합니다.
Netcode for GameObjects로 제작한 프로젝트의 프로덕션 품질 예시는 유니티의 보스 룸(Boss Room) 협동 게임 샘플을 참조하세요. 네트워크 성능까지 갖춘 빠른 속도의 경쟁 멀티플레이어 게임 예시를 찾고 있다면 엔티티 컴포넌트 시스템으로 제작된 유니티의 ECS 네트워크 레이싱 샘플을 확인해 보세요. Game Server Hosting이 제공하는 모든 기능을 완벽하게 활용하는 게임 예시를 보려면 Photon Fusion으로 제작된 배틀로얄 샘플을 확인하세요.
감사합니다.
참고: 이 블로그는 2023년 3월, 개발자가 게임에 적합한 넷코드 솔루션을 선택하는 데 도움이 되는 정보를 제공하기 위해 Unity의 넷코드 솔루션에 대한 최신 정보를 반영하여 업데이트되었습니다. 보고서 데이터는 아직 2020년 기준입니다.