This document is about: FUSION 1
SWITCH TO

수정중인 페이지 입니다.

실행 순서

개요

Fusion의 실행 루프는 3개의 주요 루프로 세분화될 수 있습니다:

  1. 리시뮬레이션 루프
  2. 포워드 루프 및
  3. 렌더 루프

다음 섹션에서는 이러한 세 가지 루프와 이러한 루프에서 스크립트 및 콜백을 호출하는 순서를 설명합니다.

  • INT: INT로 표시된 콜백은 Fusion에서 내부적으로 사용하며 다음 경우에만 포함됩니다.
  • CB: CB로 표시된 콜백은 사용자가 사용할 수 있으며 NetworkBehaviourSimulationBehaviour에서 상속되는 스크립트에 관련 인터페이스를 구현하여 연결할 수 있습니다.

전체 그래픽 다운로드

전체 실행 순서 그래픽은 여기에서 다운로드할 수 있습니다.

Fusion 초기화

Fusion이 처음 시작되면 NetworkRunner는 다음을 구현하는 모든 컴포넌트를 찾습니다. INetworkRunnerCallbacks은 Runner로서 동일한 객체에 있습니다. Awake()에서 아무것도 탐지되지 않으면 Fusion Update 루프 중 또는 드물게는 셧다운 처리 중에 다른 시도가 수행되어 정상적으로 종료됩니다.

INetworkRunnerCallbacks을 구현하는 스크립트와 NetworkRunner와 동일한 객체 또는 계층 수준에 있지 않으므로 Runner가 성공적으로 초기화된 이후 NetworkRunner.AddCallbacks()를 호출하여 NetworkRunner로 등록해야 합니다.

networkrunner initialization
NetworkRunner 초기화

Fusion 업데이트 루프

Fusion 시뮬레이션의 핵심은 리시뮬레이션 및 포워드 루프에 의해 처리됩니다. 실행 전에 다음을 수행합니다:

  1. 유니티 자체 FixedUpdate() 메소드가 실행됩니다.
  2. PhysicsMode.None이 선택된 경우 로컬 물리 시뮬레이션이 실행됩니다.
before fusion update loop
Fusion 업데이트 루프 전

이러한 단계가 이후 Fusion 업데이트 루프가 시작됩니다. Fusion 업데이트 루프는 다음 실행 단계들로 구성됩니다:

  1. NetworkRunner에 등록된 콜백이 실행됩니다.
  2. NetworkObject 스폰 대기열이 처리됩니다. 이 작업은 SceneManager가 사용 중 그리고SceneLoadSpawnMode.QueuedNetworkProjectConfig > Object Settings에서 선택된 경우에만 발생합니다.
  3. 리시뮬레이션 루프가 실행됩니다.
  4. 포워드 루프가 실행됩니다.
  5. OnChanged 콜백은 두 루프 모두 실행이 완료된 후 호출됩니다.
  6. 관심 관리가 업데이트됩니다.
  7. 리시뮬레이션 또는 포워드 루프에서 FixedUpdateNetwork() 내에서 NetworkRunner.Shutdown()이 호출되면 셧다운 처리가 트리거 됩니다.
networkprojectconfig
씬 로드 스폰 모드 설정

업데이트 루프 시작

fusion update loop start
Fusion 업데이트 루프 시작

리시뮬레이션 루프

리시뮬레이션 루프는 ServerMode 그리고 HostMode 모드에서만 실행됩니다.

리시뮬레이션 루프는 로컬 상태를 서버 또는 호스트로부터 받은 최신 상태로 조정합니다. 네트워크 상태를 가장 최근에 수신한 상태로 재설정하고 유효한 상태에 포함된 가장 최근의 서버_ 틱부터 현재 예측된 로컬 틱까지 모든 틱을 다시 시뮬레이션하여 이 작업을 수행합니다.

fusion resimulation
Fusion 리시뮬레이션 루프

포워드 루프

포워드 루프는 모든 모드에서 실행됩니다 - SharedMode 포함

** 호스트 모드 & 서버 모드**

포워드 루프는 리시뮬레이션 루프가 알려진 현재 [Networked] 상태를 조정한 후 다음 예측된 틱을 시뮬레이션합니다.

공유 모드에서

포워드 루프는 시뮬레이션을 실행하는 유일한 루프입니다. 이 루프는 로컬 시뮬레이션에 상태 권한이 있는 객체의 시뮬레이션과 프록시 객체에 수신된 상태를 적용합니다.

fusion forward
Fusion 포워드 루프

업데이트 루프 종료

fusion update loop end
Fusion 업데이트 루프 종료

렌더 루프

렌더 루프는 게임 플레이 또는 게임 상태와 무관한 모든 것에 사용됩니다. 주요 목적은 보간 및 VFX 및 애니메이션과 같은 시각적 피드백 로직을 위한 항목을 제공하는 것입니다.

  • 이전 Render(), 유니티의 모든 Update() 메소드가 실행됩니다.
  • 이후 Render(), 유니티의 모든 LateUpdate 메소드가 실행됩니다.

셧다운 처리는 렌더 루프에서 NetworkRunner.Shutdown()이 호출되면 트리거됩니다.

fusion render
Fusion 렌더 루프
Back to top