This document is about: FUSION 2
SWITCH TO

네트워크 러너

개요

NetworkRunner는 Fusion의 중앙 유니티 컴포넌트로, 하나의 네트워크 피어를 나타냅니다. 모든 메시징, 매치메이킹, 연결, 스폰, 시뮬레이션 및 상태 복제는 이 컴포넌트에 의해 조정됩니다.

하나의 유니티 인스턴스에서 여러 개의 NetworkRunner 인스턴스를 실행할 수 있으며, 각 인스턴스는 개별 피어를 나타냅니다. 멀티 피어 모드를 참조하세요.

사용법

생성

Network Runner 게임 객체는 다음 세 가지 방법으로 생성할 수 있습니다:

  • 런타임에 프리팹에서 인스턴스화
  • 씬 객체로 로드
  • 게임 객체에 NetworkRunner 컴포넌트를 추가하여 런타임에 동적으로 생성

시작 및 연결

한 번 생성되면, NetworkRunner 인스턴스는 매치메이킹에 연결하거나 방을 생성/참여할 수 있습니다.

룸 생성 또는 참여

NetworkRunner 인스턴스에서 StartGame()을 호출하면 피어가 생성되며, StartGameArgs 인자에 지정된 대로 방에 참여하거나 방을 생성합니다.
그러나 싱글 플레이어 모드에서는 Photon 서버에 연결되지 않으며 방이 생성되지 않습니다.

멀티 피어 모드에서는 모든 씬 객체와 스폰 된 객체가 전용 게임 객체의 자식이 되어 해당 NetworkRunner와 연결된 PhysicsScene/PhysicsScene2D에 추가됩니다.

중요: NetworkRunner는 한 번만 사용할 수 있습니다. 한 번 게임 세션에서 연결이 끊어지거나 연결에 실패하면, 해당 NetworkRunner는 파괴되고, 새로 NetworkRunner 인스턴스를 생성하여 새 게임 세션을 시작해야 합니다.

러너 지원 컴포넌트

시작 시, NetworkRunner 컴포넌트는 모든 자식 SimulationBehaviour 컴포넌트를 찾아 등록합니다.
이 컴포넌트들은 FixedUpdateNetwork()Render() 콜백을 받습니다.

NetworkRunner는 또한 INetworkRunnerCallbacks 인터페이스를 구현한 모든 자식 컴포넌트를 찾아 콜백을 등록합니다.

내장 Fusion 러너 컴포넌트

다음은 NetworkRunner 게임 객체에 추가할 수 있는 Fusion 컴포넌트로, 러너의 기능을 확장합니다.

  • RunnerAOIGizmos - 관심 지역 기즈모를 활성화하려면 이 컴포넌트를 추가하세요.

  • HitboxManager - 런타임에 자동으로 추가되며, 히트 박스와 히트 박스 기록을 관리합니다. 지연 보상을 참조하세요.

  • RunnerLagCompensationGizmos - 지연 보상 기즈모를 활성화하려면 이 컴포넌트를 추가하세요.

  • RunnerEnableVisibility - 이 컴포넌트를 추가하면 멀티 피어 모드에서 러너 가시성이 활성화되고, 모든 씬 및 스폰 된 게임 객체는 가시성 처리를 위해 등록됩니다. 러너 가시성 제어 창이 작동하려면 필요합니다. 멀티 피어 모드FusionRunnerVisibilityControlWindow를 참조하세요.

사용자 정의 SimulationBehaviours 러너 컴포넌트 (Custom SimulationBehaviours Runner Components)

SimulationBehaviour를 상속하거나 INetworkRunnerCallbacks를 구현한(또는 둘 다) 컴포넌트를 네트워크 러너 게임 객체에 추가하여 자신만의 러너 지원 컴포넌트를 만들 수 있습니다.

이 컴포넌트들은 NetworkRunner.StartGame()이 호출될 때 자동으로 NetworkRunner 인스턴스에 의해 발견되며, 관련된 콜백이 해당 상황에서 호출됩니다.

사용자 정의 INetworkRunnerCallbacks

시작 시, NetworkRunner 컴포넌트는 INetworkRunnerCallbacks를 구현한 모든 자식 컴포넌트를 찾아 등록합니다. INetworkRunnerCallbacks API 참조.

참고: 일부 콜백은 실행 순서로 인해 적용되지 않을 수 있으며 호출되지 않을 수 있습니다. 예를 들어, OnPlayerJoined()는 이미 참여한 플레이어에 대해서는 호출되지 않습니다.

NetworkRunner in the Hierarchy of Core Objects
NetworkRunner는 모든 연결, 매치메이킹, 메시징, 이벤트 콜백, 스냅샷 메모리 및 네트워크 객체 동기화를 관리합니다.

플레이어 / PlayerRef 구조체 (Player / PlayerRef Struct)

전용 서버 또는 공유 서버 게임 서버의 경우를 제외하고, 모든 피어는 입력을 제공하는 인간 플레이어를 나타낸다고 가정합니다. 따라서 각 NetworkRunner는 연관된 PlayerRef 구조체 값을 가집니다.

로컬 PlayerRef 값은 Runner.LocalPlayer를 통해 반환됩니다. 플레이어가 없는 경우(전용 서버 또는 공유 서버 게임 서버), 값은 PlayerRef.None입니다.

PlayerRef는 어떤 피어가 네트워크 객체에 대한 입력 및 상태 권한을 가지고 있는지 나타내며, 원격 프로시저 호출에서 피어를 대상으로 지정하는 데 사용됩니다.

네트워크 연결

피어의 연결 및 전송 처리는 NetworkRunner에 의해 래핑 됩니다.
NetworkRunner는 매치메이킹 서버, 방 서버 및 게임 서버와의 연결을 처리합니다.

틱 관리

NetworkRunner는 언제 틱을 시뮬레이션해야 하는지 결정하는 책임이 있습니다.
매 Unity Update에서, NetworkRunner는 이전 틱 시뮬레이션 이후 경과된 시간에 따라 몇 개의 틱을 시뮬레이션해야 할지 결정합니다.

또한, 방에 있는 클라이언트는 서버로부터 텔레메트리를 계속 수신하여 서버보다 얼마나 앞서서 틱을 진행해야 하는지를 조절합니다. 클라이언트는 시간이 지나면서 틱 속도를 조절하여 보낸 틱 업데이트가 서버가 필요로 하기 전에 서버에 도달하도록 합니다.

틱이 시뮬레이션되면, Fusion은 모든 FixedUpdateNetwork() 콜백을 호출합니다. 그 외에도 시뮬레이션 관련된 여러 이벤트 콜백이 호출됩니다.

Back to top