This document is about: FUSION 2
SWITCH TO

멀티 피어 모드

개요

멀티 피어 모드는 하나의 유니티 에디터 인스턴스 내에서, 각기 독립적인 NetworkRunner 인스턴스(각자의 Fusion 시뮬레이션, 물리 씬, 네트워크 연결, 그리고 씬을 포함)를 여러 개 생성할 수 있도록 합니다.

멀티 피어 모드는 유니티 에디터 상단 메뉴에서 Fusion > NetworkProjectConfig를 선택한 후, Peer ModeMultiple로 설정하여 활성화할 수 있습니다.

Add Fusion Stats
NetworkProjectConfig에서 멀티 피어 모드를 선택하는 화면.

하나의 유니티 인스턴스에서 여러 피어(NetworkRunner)를 실행할 수 있게 되면 다음과 같은 이점이 있습니다:

  • 여러 클라이언트를 에디터 내에서 테스트할 수 있어, 별도의 빌드나 추가적인 유니티 에디터 인스턴스가 필요 없습니다.
  • 하나의 유니티 인스턴스가 여러 게임 세션을 호스팅 할 수 있는 전용 서버를 만들 수 있습니다.
  • 클라이언트가 여러 게임 세션에 동시에 접속할 수 있습니다.

NetworkRunner 가시성

NetworkRunner 가시성 기능은 오직 멀티 피어 모드에서만 적용됩니다.
기본적으로 모든 피어는 가시성이 활성화되어 있습니다.
씬이 로드되거나 오브젝트가 스폰 될 때, NetworkRunner의 가시성 시스템에 의해 렌더러, 오디오 소스, 그리고 기타 가시성 관련 컴포넌트가 자동으로 등록됩니다.

RunnerEnableVisibility 컴포넌트

중요: RunnerEnableVisibility 컴포넌트를 NetworkRunner 게임 오브젝트(또는 프리팹)에 반드시 추가해야 가시성 제어가 가능합니다.
이 컴포넌트가 추가되면, 모든 스폰 된 네트워크 오브젝트(NetworkObjects) 및 씬에 있는 일반 GameObjects(씬에 직접 존재하는 오브젝트)들이 검색되어, 가시성 제어 대상 리스트에 등록됩니다. 이 리스트의 오브젝트들은 NetworkRunner.SetVisibility(bool) 메서드를 통해 활성화/비활성화됩니다.

GetVisible()과 SetVisible(bool)

멀티 피어 모드에서 NetworkRunner.SetVisible(bool)을 호출하면, 해당 NetworkRunner에 연결된 모든 렌더링/오디오 등 가시성 컴포넌트가 활성화 또는 비활성화됩니다.
이를 통해 개발자는 코드 실행에는 영향을 주지 않고, 특정 NetworkRunner에 연결된 오브젝트만 화면에 표시하거나 숨길 수 있습니다.

EnableOnSingleRunner 컴포넌트

이 컴포넌트는 Components 필드에 나열된 각 컴포넌트에 대해 자동으로 RunnerVisibilityLink 컴포넌트를 추가합니다.
이렇게 설정된 컴포넌트는 멀티 피어 모드에서 단 하나의 인스턴스만 활성화됩니다.
특히 AudioListenersEventSystems처럼 유니티가 싱글톤으로 의도한 컴포넌트에 중요합니다.

Runner Visibility Nodes
런너 가시성 노드.
모든 Runner는 서로 완전히 독립적이어야 합니다. 따라서 시뮬레이션에 영향을 주는 정적 변수와 싱글톤 사용은 최대한 피해야 합니다. 멀티 피어 모드에서는 여러 NetworkRunner 인스턴스가 동시에 실행되므로, 정적 변수와 싱글톤은 충돌을 일으킬 수 있습니다.

Preferred Runner

여러 NetworkRunner가 활성화된 경우, 어떤 타입의 피어를 우선 표시할지 선택할 수 있습니다.

Components

여기 등록된 컴포넌트들은 싱글 인스턴스만 활성화됩니다.
(예: 오직 하나의 AudioListener만 활성화)

Network Runner Controls 창

Tools > Fusion > Windows > Network Runner Controls 메뉴를 통해 Network Runner Controls 창을 열 수 있습니다.
이 창에서는 러너를 표시/숨기거나, 입력을 받을 러너를 제어할 수 있습니다.
또한 활성화된 러너에 대해 FusionStats 오버레이를 빠르게 생성하는 버튼도 제공됩니다.

Network Runner Controls
네트워크 런너 컨트롤.

리스트에서 NetworkRunner 이름을 클릭하면, 해당 인스턴스를 씬 뷰에서 핑(Ping)하거나 선택할 수 있습니다.

또한 NetworkRunner.PlayerRef.PlayerIdNetworkRunner 이름 옆에 표시됩니다.
만약 PlayerObject가 할당되어 있다면, 이를 클릭해 해당 플레이어 GameObject를 씬에서 핑하거나 선택할 수 있습니다.

멀티 피어 통합 예시

  • Hathora 와 Simple FPS 샘플에서의 통합 사례
Back to top