Unity 검색

멀티플레이어 게임 개발을 위한 새로운 유니티 툴 발표

2022년 9월 20일 엔진 & 플랫폼 | 10 분 소요
placeholder
placeholder
공유

Is this article helpful for you?

Thank you for your feedback!

넷코드 SDK에서 툴 지원까지, Unity 생태계 내에서 멀티플레이어 게임을 제작하는 데 활용할 수 있는 최신 기술에 대해 알아보세요.

여러 해 동안 멀티플레이어 게임 개발은 증가하는 추세를 보이고 있으며, Unity 개발자들이 그 한 축을 차지하고 있습니다. 유니티의 2022년 멀티플레이어 보고서에 따르면, 2021년 1월부터 Unity로 제작된 PC 멀티플레이어 게임과 모바일 멀티플레이어 게임의 증가율은 각각 150%와 40%를 기록했습니다.

그러나 Unity에서 멀티플레이어 게임을 제작할 때 특정 게임 유형을 지원하기 위해 타사 툴이 필요한 경우가 많았습니다.

이제 게임 서버 호스팅(Multiplay), Matchmaker를 비롯하여 Unity Gaming Services의 새로운 멀티플레이어 솔루션과 함께 사용하면 좋은 NGO(Netcode for GameObjects) 1.0를 사용할 수 있습니다. 이러한 툴을 Unity에서 제공되는 샘플 및 가이드와 함께 활용하면 Unity를 이용한 멀티플레이어 게임 개발을 가속화할 수 있습니다.

유니티의 목표는 즉시 사용 가능한 솔루션들을 제공하여 온라인 게임의 발전에 기여하는 것입니다. 하지만 다른 멀티플레이어 프레임워크처럼 유니티의 솔루션도 만능이라 할 수는 없습니다.

그러한 이유에서, 유니티는 각 팀의 요구 사항에 부합하는 기술 스택을 구축할 수 있도록 타사 툴과 조합이 가능한 솔루션을 설계했습니다. 그 예시로 Photon을 사용한 Battle Royale 샘플을 확인해 보세요.

이제 넷코드 SDK, 툴 지원, 로우레벨 네트워킹, 서버 런타임 기능 등 유니티에서 제공하는 멀티플레이어 게임 개발 솔루션을 자세히 살펴보겠습니다.

자사 넷코드 SDK를 활용한 멀티플레이어 기반 구축

게임 오브젝트 개발자나 엔티티 얼리 어댑터라면 다음 멀티플레이어 프로젝트에 유니티의 즉시 사용 가능한 넷코드 솔루션을 사용해 보시기 바랍니다.

Netcode for GameObjects 1.0

Netcode for GameObjects는 Unity 게임 엔진을 위해 구축된 네트워킹 라이브러리입니다. 이번 1.0 릴리스는 주로 소규모 협동 게임 제작에 집중하고 있으며, Netcode for GameObjects는 이 카테고리의 P2P 게임에서 Unity Relay 및 Unity Lobby 솔루션과 함께 사용하기 좋습니다.

이번 기본 릴리스에서는 시뮬레이션을 씬 관리, 애니메이션, 물리 등에 대한 지원과 계속해서 동시에 진행할 수 있습니다.

새로운 시나리오를 구상할 때 참고할 수 있도록 개발자 여러분이 프로젝트를 진행하면서 필요한 부분을 공유해 주세요. 유니티의 로드맵 항목을 확인하고, 투표를 통해 Netcode for GameObjects 개발에 기여해 주세요.

다음 설치 가이드를 따라 Netcode for GameObjects를 시작할 수 있습니다.

"Discord에 소스 코드를 공개하고 활성화 상태로 유지했기 때문에 경험과 지원을 공유하는 강력한 커뮤니티를 구축할 수 있었고, 이를 통해 실제 비디오 게임 프로젝트 요구 사항을 토대로 NGO의 개발을 유도할 수 있었습니다. NGO는 오픈 소스 개발의 진정한 성공 사례라고 생각합니다." - 마르크-앙뜨완 포르티에, Fika Productions 최고 기술 책임자

Netcode for Entities

멀티플레이어 개발 스펙트럼의 다른 한편에는 Netcode for Entities가 있습니다. Netcode for Entities는 DOTS ECS(Entity-Component-System) 기능 세트의 일부로 제공되며, 플레이어를 위해 확장/축소 가능한 멀티플레이어 월드를 구현할 수 있습니다.

ECS for Unity는 Unity를 통해 보다 야심차고 확장 가능한 대규모 게임을 제작할 수 있도록 지원하는 새로운 프레임워크로, Unity 2022.2 테크 스트림을 통해 제공됩니다. DOTS 베타 포럼에서 최근 진행 상황을 확인하세요. 최신 릴리스인 DOTS 0.51에 관한 로드맵과 정보를 살펴볼 수 있습니다.

멀티플레이어 툴을 통한 문제 모니터링 및 파악

멀티플레이어 게임 개발자는 네트워크 설계 및 안정성과 관련된 당면 과제를 처리해야 합니다. 따라서 모든 잠재적 문제를 최대한 빠르고 간편하게 추적, 파악, 진단할 수 있는 방식을 반드시 구축해야 합니다.

이제 Unity의 툴 공간에서 다음과 같은 업데이트 기능을 사용할 수 있습니다.

  • Runtime Network Stats Monitor: (Netcode for GameObjects) 게임 테스트와 스탠드얼론 빌드에서 서버 및 연결된 클라이언트 전체에 걸쳐 네트워크 변수와 RPC 호출을 추적합니다.
  • Network Profiler: (Netcode for GameObjects) 패키지 삭제와 지연 문제를 파악하기 위해 연결된 모든 플레이어에게 전송된 네트워크 오브젝트 및 메시지의 상세 분석 결과를 확인합니다.
  • Debug Simulator: (Unity Transport) UTP Transport 컴포넌트의 일부로 포함되며, 개발자는 이를 사용하여 테스트를 목적으로 네트워크 변수를 조작하고 고급 네트워킹 시나리오를 시뮬레이션할 수 있습니다.
  • Bounding Box Drawer: (Netcode for Entities) 색상이 지정된 바운딩 박스를 통해 서버에 있는 고스트의 위치를 표시하므로 자식 요소와 비교할 수 있습니다(클라이언트 및 서버에 따라 컬러 코드 설정).
Runtime Network Stats Monitor 실제 사용 사례

유니티는 게임 오브젝트 및 엔티티 경험, 네트워킹 초보자를 위한 업그레이드된 네트워크 지연 시뮬레이터와 기타 기능 전반에서 멀티플레이어 개발 경험을 개선하기 위해 일관성을 향상시키고 있습니다. 앞으로 더 많은 내용을 기대해 주세요.

로우레벨 네트워킹 자세히 알아보기

네트워크 운영에서 세분화된 관리를 유지하려는 개발자라면 UTP(Unity Transport) 패키지를 이용할 수 있습니다. Netcode for GameObjects와 Netcode for Entities는 모두 내부 UTP를 활용하지만 UTP는 넷코드에 구애받지 않고 직접 또는 기타 넷코드 솔루션과 함께 사용 가능합니다.

UTP Diagram Netcode, updated

UTP는 Unity Relay, DTLS(Datagram Transport Layer Security), 파이프라인 등에 대한 지원과 같은 고급 기능으로 기존 UDP(User Datagram Protocol)를 확장합니다.

즉시 사용 가능하며, 다음을 비롯하여 다양한 플랫폼에서 지원됩니다. 

  • 데스크톱: Windows, Linux, MacOS
  • 모바일: iOS, Android
  • 콘솔: 모든 주요 콘솔에서 사용 가능

또한 UTP는 네트워크를 통한 안전한 데이터 전송을 제공하도록 손쉽게 구성할 수 있습니다.

유니티의 멀티플레이어 네트워킹 샘플

유니티의 멀티플레이어 솔루션을 사용해 보려면 멀티플레이어 샘플을 통해 유니티 제품을 어떻게 연동해 사용하는지 확인하고, 유니티의 네트워킹 툴을 정식 제작 환경에서 자세히 알아보세요.

Boss Room: 3D 소규모 협동 게임 샘플

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

Boss Room은 Netcode for GameObjects, Relay, Lobby를 활용해 제작된 3D 소규모 협동 게임 샘플 프로젝트로, 멀티플레이어 게임 제작의 개념과 패턴을 살펴볼 수 있도록 설계되었습니다. UGS에서 제공되는 이러한 툴들을 조합하여 사용하면 협동 게임을 개발할 수 있는 탄탄한 기반이 되며, 개발자는 Boss Room의 오픈 소스 코드를 자세히 살펴보며 툴들이 어떻게 결합되는지 확인할 수 있습니다.

Boss Room 코드를 자세히 살펴보며 캐릭터 능력을 구현하고, 캐스팅 애니메이션을 사용하여 지연을 숨기고, 오브젝트를 복제하고, RPC를 활용하는 방법 등을 알아보세요.

Galactic Kittens: 2D 소규모 협동 게임 샘플

Galactic Kittens, a 2D small scale cooperative sample

Galactic Kittens의 우주 공간에서 2D 고정형 슈팅 게임의 네트워킹 패턴을 살펴보세요. Galactic Kittens는 기본 네트워크 관리자 설정을 사용하며, 스프라이트 애니메이션, 파티클 효과, 기본 2D 동작을 어떻게 적용하고 동기화하는지 보여주도록 제작되었습니다.

간단한 샘플

열정적인 개발자라면 간단한 샘플로 더 세분화하여 Netcode for GameObjects의 다양한 측면을 분리해 볼 수 있습니다.

Invaders Sample은 외계 침략자를 막아내기 위해 플레이어들이 힘을 합치는 간단한 네트워크 협동 게임입니다. 이 샘플을 활용하면 Netcode for GameObjects를 이용하는 게임 흐름과 모드, 즉 Scene Management, Unconventional Movement Networked, 서버 측 시딩(seeding)으로 업데이트된 클라이언트들 간 공유 타이머의 사용 등을 더 쉽게 파악할 수 있습니다.

이러한 기술을 사용하면, 예를 들어 플레이어가 게임이 시작되기 전에 합류할 수 있는 게임 로비를 간단한 방법으로 구현할 수 있습니다.

또한 NGO를 기반으로 빌드된 유니티의 2D 스페이스 슈터 샘플(2D Space Shooter Sample)은 물리, 플레이어 체력, 상태 효과 등의 예시를 제공합니다. 이 샘플에는 NetworkVariables 및 ObjectPooling 등의 기술이 사용됩니다. NetworkVariables를 사용하면 플레이어의 체력 등 서버와 클라이언트 간 상태를 간단하게 동기화할 수 있습니다. 그리고 ObjectPooling을 사용할 경우 오브젝트를 자주 재사용할 수 있으므로 네트워킹 환경에서 성능상의 이점을 얻을 수 있습니다.

유니티의 협력 파트너가 되어 Unity로 훨씬 더 뛰어난 멀티플레이어 게임을 제작하세요

멀티플레이어 개발 과정은 복잡합니다. 유니티의 목표는 멀티플레이어 툴과 솔루션을 확장하여 개발자가 어떤 유형의 게임이라도 개발할 수 있도록 지원하는 것입니다.

유니티에서 더 많이 투자했으면 하는 기능과 툴에 대한 의견과 제안이 있으면 적극적으로 투표해 주시고 로드맵에 대한 아이디어를 공유해 주시기 바랍니다. Unity Gaming Services를 통해 플레이어의 참여를 유도하고 연결하고 소통하는 데 활용할 수 있는 유니티의 다른 멀티플레이어 툴도 확인해 보세요.

2022년 9월 20일 엔진 & 플랫폼 | 10 분 소요

Is this article helpful for you?

Thank you for your feedback!

관련 게시물