Unity 검색

Games Focus: 멀티플레이어 네트워킹을 통한 커넥티드 게임 제작 및 운영

2022년 11월 16일 엔진 & 플랫폼 | 12 분 소요
Games Focus: Creating and operating connected games with multiplayer networking | Hero image
Games Focus: Creating and operating connected games with multiplayer networking | Hero image
공유

Is this article helpful for you?

Thank you for your feedback!

이 포스팅은 핵심 제품의 향후 개발 계획을 소개하는 Games Focus 시리즈의 여덟 번째 글입니다. 이번 편에서는 Unity 멀티플레이어 네트워킹의 현재 개발 상황, 예정된 릴리스 계획, 앞으로의 비전 등을 다룹니다.

안녕하세요. 저는 멀티플레이어 팀에서 프로덕트 매니저로 일하고 있는 키키 세인톤지입니다. 저희 팀은 현재 유니티에서 게임 오브젝트용 Netcode 솔루션을 제공하는 데 주력하고 있습니다.

유니티에서의 근무 경력은 1년 남짓에 불과하지만, 2013년부터 취미로 시작해서 인디 개발자로서 Unity를 사용했습니다. 저는 수많은 게임 중에서도 특히 크리에이터의 기발한 생각이 구현된 게임을 플레이하는 것을 좋아합니다. 사용하기 쉬운 완벽한 멀티플레이어 개발 솔루션을 원한 분이 많으셨던 만큼, 오늘 이 포스팅에서 유니티의 멀티플레이어 솔루션에 대해 이야기할 수 있게 되어 기쁩니다. 유니티는 이미 기대 이상으로 목표에 가까이 와 있습니다.

Unity: Games Focus | Cover every aspect of your multiplayer game

멀티플레이어 게임 솔루션의 발전

솔직히 말해서 멀티플레이어 게임은 메카닉스 디자인부터 구현과 테스팅에 이르기까지 아주 고된 제작 과정을 거칩니다. 지연, 패킷 손실, 씬 관리 처리, 특정 요소의 네트워크 전송 가능 여부 등 다양한 사항을 고려해야 하며, 이 중 대부분은 추적하거나 시뮬레이션하기가 어렵습니다. 타사 네트워킹 솔루션의 경우에도 과정을 추적하기 위해 또 다른 타사 툴이 필요합니다.

게임을 위해 완벽한 네트워크 시스템을 구축하는 것은 게임 자체를 만드는 과정과 동일합니다. 고유해야 할 뿐 아니라 게임 경험에 맞게 개선되어야 하니까요.

우리는 이 점을 염두에 두고 원하는 형태의 멀티플레이어 게임을 구현하기 위한 충분한 유연성을 갖춘 Netcode 솔루션을 제공하는 동시에 필요한 경우 타사 툴이나 서비스를 쉽게 사용할 수 있게 만들고자 했습니다. 이것이 유니티에서 제작한 Netcode 솔루션의 기본 목표입니다.

Unity: Games Focus | Player count evolution GIF

서비스와 스케일링이라는 두 가지 요소는 싱글플레이어 또는 협동 게임을 개발하는 상황에서는 덜 중요할 수 있지만, 멀티플레이어 개발 시에는 언제나 이 둘을 염두에 두고 있어야 합니다. 유니티는 최근 게임 서버 호스팅(Multiplay), Matchmaker, Relay, Lobby 서비스가 포함된 Unity Gaming Services 플랫폼을 출시했습니다. 이 플랫폼은 하나의 통합된 생태계 내에서 견고한 기반을 구축하고, 흥미로운 플레이어 경험을 제작하며, 게임의 성장을 이끄는 데 필요한 모든 툴을 제공하기 위해 설계되었습니다.

Unity: Games Focus | Netcode for GameObjects now available in 2020 and 2021 LTS

현재 이용 가능한 툴

유니티는 올해 멋진 Netcode 솔루션 릴리스를 여러 차례 발표했습니다. 게임 오브젝트용 Netcode의 첫 주요 릴리스는 현재 2020 및 2021 LTS에서 사용 가능합니다.

이를 활용하면 소규모 협동 멀티플레이어 게임을 빌드할 수 있습니다. DOTS(Entities)를 사용하여 경험을 빌드하셨다면, 2022 테크 스트림에 대규모 멀티플레이어 경험을 설정하는 데 도움이 되는 Entities용 Netcode 솔루션이 포함된다는 반가운 소식을 전해드립니다. 해당 릴리스에 대한 자세한 내용은 이 시리즈의 다음 포스팅에서 확인하세요.

멀티플레이어 개발을 시작하기 위한 폭넓은 기반은 여러 스택이 모여 확보됩니다. 다양한 요소로 구성된 단계들을 하나씩 거쳐 멀티플레이어 게임 개발을 시작할 수 있습니다. 또한 모든 릴리스는 서버 및 클라이언트와 통신하는 방식의 추상화, 네트워크상의 오브젝트 데이터 전송, 입력 처리 등의 중요한 네트워킹 시나리오에 중점을 둡니다.

Netcode 디버깅 툴

이번 릴리스에서는 네트워크 오브젝트의 패킷 손실, 크기, 지연을 추적하는 몇 가지 필수 툴도 지원합니다. Network Profiler는 에디터에 내장된 프로파일러의 확장 기능이며, RNSM(Runtime Network Stats Monitor)은 네트워크 상태를 나타내는 경량 프로파일러 뷰로서 커스터마이징이 가능하고 플레이 테스트를 위해 스탠드얼론 빌드에서 실행할 수 있습니다.

에디터 내에서 com.unity.multiplayer.tools 패키지를 통해 위 툴을 설치할 수 있습니다.

크로스 플랫폼 지원

Entities를 포함한 모든 Netcode 스택은 유니티의 전송 계층을 기반으로 합니다. 이 계층은 넷코드에 구애받지 않으며 모든 솔루션과 함께 사용할 수 있습니다.

UTP(Unity 전송 프로토콜)는 Unity Relay에 대한 추가 지원과 DTLS를 통한 보안 강화 기능으로 사용자 데이터그램 프로토콜을 확장합니다. 이 계층은 Windows, Mac, Linux, iOS, Android를 비롯한 모든 주요 콘솔에서 작동합니다.

전송 패키지의 Debug Simulator 프로퍼티를 통해 일부 경량 네트워크 시뮬레이션 기능도 제공하며, 이를 통해 에디터 내에서 테스트할 때 스로틀링하거나 지연 또는 대역폭 문제를 시뮬레이션할 수 있습니다.

com.unity.transport 패키지를 통해 바로 설치하면 이 로우레벨 네트워킹 라이브러리에 직접 액세스할 수 있습니다.

게임 오브젝트용 Netcode로 게임 제작

게임 오브젝트용 Netcode가 비교적 새로운 솔루션이기는 하지만 이미 여러 게임을 제작하는 데 이 솔루션이 사용되고 있습니다.

Promotional image for Fika Productions and Team17's hand-drawn game, Ship of Fools

Team17과 함께하는 Fika Productions의 뛰어난 팀원들은 손으로 직접 그린 멋진 아트를 담은 Ship of Fools를 작업하고 있습니다. 바다를 용감하게 항해하는 빠른 속도감의 멀티플레이어 협동 게임으로 전체가 게임 오브젝트용 Netcode로 개발되었습니다.

향후 목표

우리는 더 편하게 네트워크 개발에 접근할 수 있도록 멀티플레이어 툴 사용 방안을 끊임없이 모색하고 있습니다.

In this screenshot,we have three clients running simultaneously, two that are connected and one waiting to connect. They are all being hosted by the main Editor (in the background) and are visible with their console logs open for debugging.
이 스크린샷에서는 세 개의 클라이언트가 동시에 실행되고 있으며 그중에서 둘은 연결되어 있고 나머지 하나는 연결 대기 중입니다. 백그라운드의 메인 에디터가 클라이언트를 전부 호스팅하고, 디버깅을 위해 콘솔 로그가 열려 있는 상태로 표시됩니다.

멀티플레이어 플레이 모드는 멀티플레이어 게임 개발에 있어 최고의 에디터 경험을 제공하는 중요한 첫 단계로 작용합니다.

이 멀티플레이어 툴의 목표는 플레이 모드 진입 후 제대로 '작동'하는 것입니다. 싱글플레이어 워크플로와 동일한 경험이 제공되지만 이 툴에서는 동일한 에디터 세션 내에서 최대 4개의 클라이언트를 실행할 수 있으며, 각각 자체 콘솔 정보를 수신하고, 네트워크 기반 태깅 시스템을 통해 각 클라이언트를 서로 다르게 설정할 수 있습니다.

The Network Simulator component attached to the NetworkManager object. It’s showing the connected state, lag spike options, and the customizable parameters available to test specific conditions.
Network Simulator 컴포넌트가 NetworkManager 오브젝트에 연결되어 있으며 연결 상태, 지연 스파이크 옵션, 커스터마이징 가능한 파라미터가 표시되어 있어 특정 조건을 테스트할 수 있습니다.

Network Simulator는 전송 계층을 넘어 UI를 통해 더 완벽하게 작동하는 툴로 확장하기 위해 노력 중인 또 다른 기능입니다. 이 기능을 사용하면 지연 스파이크를 도입하고, 핑 속도를 설정하고, 원하는 대로 연결/연결 해제를 트리거할 뿐 아니라 플레이 테스트 중에 특정 네트워킹 시나리오가 실행되도록 커스터마이즈할 수도 있습니다.

지금의 목표는 Transport 패키지를 Burst와 더 긴밀하게 통합하고 웹소켓(WebSocket)을 지원하는 것입니다.

전용 서버 빌드 제어

많은 멀티플레이어 게임에서 전용 서버를 두는 것은 핵심적인 사항이며, 이를 위해 빌드하는 헤드리스 서버의 유형을 더 세부적으로 제어할 수 있어야 합니다.

따라서 팀에서는 전용 서버 워크플로를 연구하기 시작했습니다. 그 시작은 바로 서버 내에서 필요한 에셋과 불필요한 에셋을 더 명확히 파악하고 면밀히 제어할 수 있도록 지원하는 것입니다. 기본적으로 서버 빌드에서 필요한 콘텐츠를 선택하면 시간이 절약되고 장기적으로 대역폭도 줄일 수 있습니다.

위 기능과 더불어 게임 오브젝트용 Netcode에 대해 자세히 알고 싶다면 멀티플레이어 네트워킹 로드맵을 통해 1.0 버전에 포함된 항목과 향후 릴리스 진행 상황을 확인하세요. 최근 진행된 유나이트 2022 로드맵 세션에서는 Unity 생태계 전반의 개요를 확인할 수 있습니다.

리소스

멀티플레이어 게임은 제작하기 쉽지 않으며, SDK 문서가 제공되더라도 부담스러울 때가 많습니다.

유니티의 목표는 훌륭한 멀티플레이어 게임 경험을 구축할 수 있는 툴을 마련하여 개발자를 지원하는 것입니다. 여기에는 기본 네트워킹 기술뿐만 아니라 Boss Room과 같이 해당 기술을 어떻게 응용할 수 있는지 이해하는 데 필요한 기술 자료와 교육용 템플릿을 제공하는 과정 또한 포함됩니다.

현재 Unity Multiplayer 솔루션에 대해 자세히 알아볼 수 있도록 다양한 리소스가 제공되고 있습니다.

The Boss Room shows a specific approach to creating and networking in Unity for a small-scale co-op game.
Boss Room은 소규모 협동 게임을 제작하고 네트워킹하는 방법에 대한 구체적인 접근 방식을 보여줍니다.

Boss Room 은 게임 오브젝트용 Netcode로 빌드된 소규모 협동 게임 샘플 프로젝트로, 멀티플레이어 게임 제작 과정의 개념과 패턴을 살펴볼 수 있도록 설계되었습니다.

Galactic Kittens, a 2D small scale cooperative sample

멀티플레이어 팀은 게임 오브젝트용 Netcode가 제공하는 기본 기능과 신규 기능을 더욱 돋보이게 해 주는 자체 개발 프로젝트도 계속 개발하고 있습니다.

최신 공개된 플레이어블 데모 게임인 Galactic Kittens는 멀티플레이어 2D 게임으로 오픈 소스와 협동 슈팅을 특징으로 합니다.

다음 블로그 포스팅에서 Unity 멀티플레이어 제품군을 자세히 알아보세요.

Unity 커뮤니티에서 만든 멋진 리소스도 확인해 보세요.

의견을 공유해 주세요

Games Focus 시리즈에 관한 피드백을 계속 공유해 주세요. 이 블로그에 관한 질문과 의견을 Multiplayer 포럼 또는 전용 스레드에 게시해 주시기 바랍니다. 

Productboard에서 로드맵에 대한 자세한 내용을 확인하세요. Unity ID로 로그인하고 기능 쿠키 사용에 동의해야 합니다. 인터랙티브 페이지의 각 카드를 클릭하면 해당 주제에 관한 자세한 정보를 확인하고, 피드백을 통해 의견을 공유할 수도 있습니다. 카드를 클릭하고 주제의 중요도를 선택한 후 의견을 제출해 주세요. 피드백은 담당 제품 팀으로 직접 전달됩니다.

게임 오브젝트용 Netcode는 기본 넷코드 솔루션입니다. 광활한 우주를 배경으로 하는 게임이나 수천 명의 플레이어가 동시에 접속하는 멀티 서버 MMO와 같은 초대형 게임을 빌드하려는 경우 Game Focus 시리즈의 다음 포스팅에 주목하세요. 이 포스팅에서는 더 큰 월드와 풍성한 환경을 제작하는 방법을 다룰 예정입니다.

2022년 11월 16일 엔진 & 플랫폼 | 12 분 소요

Is this article helpful for you?

Thank you for your feedback!

관련 게시물