멀티 피어 모드
개요
멀티 피어 모드는 하나의 유니티 에디터 인스턴스 내에서, 각기 독립적인 NetworkRunner
인스턴스(각자의 Fusion 시뮬레이션, 물리 씬, 네트워크 연결, 그리고 씬을 포함)를 여러 개 생성할 수 있도록 합니다.
멀티 피어 모드는 유니티 에디터 상단 메뉴에서 Fusion > NetworkProjectConfig
를 선택한 후, Peer Mode
를 Multiple
로 설정하여 활성화할 수 있습니다.

하나의 유니티 인스턴스에서 여러 피어(NetworkRunner
)를 실행할 수 있게 되면 다음과 같은 이점이 있습니다:
- 여러 클라이언트를 에디터 내에서 테스트할 수 있어, 별도의 빌드나 추가적인 유니티 에디터 인스턴스가 필요 없습니다.
- 하나의 유니티 인스턴스가 여러 게임 세션을 호스팅 할 수 있는 전용 서버를 만들 수 있습니다.
- 클라이언트가 여러 게임 세션에 동시에 접속할 수 있습니다.
NetworkRunner 가시성
NetworkRunner
가시성 기능은 오직 멀티 피어 모드에서만 적용됩니다.
기본적으로 모든 피어는 가시성이 활성화되어 있습니다.
씬이 로드되거나 오브젝트가 스폰 될 때, NetworkRunner
의 가시성 시스템에 의해 렌더러, 오디오 소스, 그리고 기타 가시성 관련 컴포넌트가 자동으로 등록됩니다.
RunnerEnableVisibility 컴포넌트
중요: RunnerEnableVisibility
컴포넌트를 NetworkRunner
게임 오브젝트(또는 프리팹)에 반드시 추가해야 가시성 제어가 가능합니다.
이 컴포넌트가 추가되면, 모든 스폰 된 네트워크 오브젝트(NetworkObjects) 및 씬에 있는 일반 GameObjects
(씬에 직접 존재하는 오브젝트)들이 검색되어, 가시성 제어 대상 리스트에 등록됩니다. 이 리스트의 오브젝트들은 NetworkRunner.SetVisibility(bool)
메서드를 통해 활성화/비활성화됩니다.
GetVisible()과 SetVisible(bool)
멀티 피어 모드에서 NetworkRunner.SetVisible(bool)
을 호출하면, 해당 NetworkRunner
에 연결된 모든 렌더링/오디오 등 가시성 컴포넌트가 활성화 또는 비활성화됩니다.
이를 통해 개발자는 코드 실행에는 영향을 주지 않고, 특정 NetworkRunner
에 연결된 오브젝트만 화면에 표시하거나 숨길 수 있습니다.
EnableOnSingleRunner 컴포넌트
이 컴포넌트는 Components
필드에 나열된 각 컴포넌트에 대해 자동으로 RunnerVisibilityLink
컴포넌트를 추가합니다.
이렇게 설정된 컴포넌트는 멀티 피어 모드에서 단 하나의 인스턴스만 활성화됩니다.
특히 AudioListeners
나 EventSystems
처럼 유니티가 싱글톤으로 의도한 컴포넌트에 중요합니다.

Preferred Runner
여러 NetworkRunner
가 활성화된 경우, 어떤 타입의 피어를 우선 표시할지 선택할 수 있습니다.
Components
여기 등록된 컴포넌트들은 싱글 인스턴스만 활성화됩니다.
(예: 오직 하나의 AudioListener
만 활성화)
Network Runner Controls 창
Tools > Fusion > Windows > Network Runner Controls
메뉴를 통해 Network Runner Controls
창을 열 수 있습니다.
이 창에서는 러너를 표시/숨기거나, 입력을 받을 러너를 제어할 수 있습니다.
또한 활성화된 러너에 대해 FusionStats
오버레이를 빠르게 생성하는 버튼도 제공됩니다.

리스트에서 NetworkRunner
이름을 클릭하면, 해당 인스턴스를 씬 뷰에서 핑(Ping)하거나 선택할 수 있습니다.
또한 NetworkRunner.PlayerRef.PlayerId
가 NetworkRunner
이름 옆에 표시됩니다.
만약 PlayerObject
가 할당되어 있다면, 이를 클릭해 해당 플레이어 GameObject를 씬에서 핑하거나 선택할 수 있습니다.
멀티 피어 통합 예시
- Hathora 와 Simple FPS 샘플에서의 통합 사례