수정중인 페이지 입니다.

Bolt에서 시작

소개

이 문서는 API 측면에서 Photon BoltPhoton Fusion의 주요 차이점과 Bolt로 작성된 게임의 섹션을 Fusion 프로젝트로 포팅 하는 방법에 대해 설명합니다. 볼트와 Fusion은 많은 개념을 공유하지만, 사용법, API, 그리고 주로 일반적인 동작들이 다릅니다.

메인 화면으로

차이점

다음은 Photon BoltPhoton Fusion의 주요한 차이점들입니다:

  • Bolt에서는 일반 API를 정적 클래스인 BoltNetworkBoltMatchmaking를 통해 접근할 수 있으나, Fusion에서는 NetworkRunner의 인스턴스를 사용하여 처리됩니다.
  • Fusion은 동일한 실행 파일에서 여러 피어를 실행할 수 있지만, Bolt는 하나만 실행할 수 있습니다. 이것은 게임의 동일한 인스턴스에서 여러 클라이언트를 실행하는 것이 가능하다는 것을 의미합니다. 이 기능은 테스트 및 디버깅을 할 때 매우 유용합니다.
  • 두 솔루션 모두 클라이언트-서버 아키텍처를 지원하는 반면, Fusion은 PUN의 동작 방식과 더 유사한 공유 모드도 지원합니다. 또한 Fusion은 델타 스냅샷이벤트 일관성을 모두 지원하는 반면 Bolt는 후자만 지원합니다.
  • Fusion은 내장된 NetworkRigidbodyNetworkRigidbody2D 컴포넌트를 사용하여 물리 예측 및 롤백을 완벽하게 지원하는 반면 Bolt는 개발자가 이를 처리/구현해야 합니다. 이 사항은 캐릭터 컨트롤러를 다룰때도 동일하게 적용되며, Fusion에는 플레이어의 캐릭터를 움직이기 위해 기본 구현으로 NetworkCharacterController 를 바로 사용할 수 있으나, Bolt는 사용자 지정 구현이 필요합니다.

메인 화면으로

유사점

다음은 Photon BoltPhoton Fusion의 주요 유사점들입니다:

  • Fusion은 피어 간에 데이터를 동기화하는 데 사용되는 네트워크 속성을 가진 유니티 Game Object를 나타내는 NetworkObject 개념을 가지고 있으며, Bolt에는 BoltEntity라는 이름으로 동일한 개념을 가지고 있습니다. NetworkObject의 상태는 Networked 속성을 사용하여 모든 NetworkBehaviour에서 형성할 수 있습니다. Bolt에서 이를 수행하려면 Bolt 에셋 윈도우를 사용하여 상태 에셋을 생성/편집하는 속성을 만들고 구성해야 합니다. 추가 정보
  • 모든 주요 SDK 이벤트들( 시작, 셧다운, 연결 해제 등)은 Bolt에서 GlobalEventListener의 인스턴스를 사용하여 처리되며, Fusion에서는 NetworkRunner와 연결된 INetworkRunnerCallbacks의 구현을 통해 이러한 종류의 이벤트를 나타냅니다.
  • Bolt에서는 OwnershipControl로 부르고 있으나, 두 SDK 모두 State AuthorityInput Authority 개념이 있으며 동일한 의미입니다. 추가 정보
  • Fusion 또한 Bolt와 유사한 예측 롤백 시스템입니다. Bolt에는 BoltEntityController가 전송하는 Command가 있으며, Fusion에서는 Input Authority가 있는 피어에서 NetworkObject를 통해 NetworkInput을 전송하며, Bolt에서는 롤백(상태 재설정)이 수동(resetState = true로 하는 ExecuteCommand내)으로 수행되는 반면, Fusion에서는 FixedUpdateNetwork 메소드의 호출 전에 새로운 프레임이 시작되는 시점에 자동으로 수행됩니다.
  • 제어된 모든 BoltEntity에 대해 Bolt는 엔티티와 연결된 각 EntityEventListener에서 SimulateController 메소드를 호출합니다. 네트워크 입력(BoltCommand)의 여러 소스가 없고 모든 NetworkObject에 대해 하나의 네트워크 입력만 특정 프레임과 연결할 수 있으므로 Fusion에서는 다르게 수행됩니다. 이는 INetworkRunnerCallbacks.OnInput의 구현을 통해 수행됩니다. 추가 정보
  • Fusion에서 잘 알려진 원격 프로시저 호출(RPC)은 Bolt에서는 이벤트라고 합니다. 두개 모두 유사한 제어(전송할 수 있는 주체, 수신 받을 수 있는 주체 및 신뢰성)를 갖고 있으나, Bolt에서는 Bolt 에셋 창에서 설정이 필요하나 Fusion에서는 코드를 통해 직접 정의할 수 있습니다. 추가 정보
  • Fusion에는 일반 데이터 타입의 동기화를 도와주는 매우 많은 내장 컴포넌트를 가지고 있는데, 이 예중의 하나는 NetworkTransform이며, 이것은 Bolt에서 트랜스폼 속성에 매핑될 수 있습니다. 둘 다 게임 객체의 위치와 회전을 동기화하는 동시에 스냅샷 간에 부드러운 전환을 제공하여 데이터 포인트 사이를 보간할 수 있습니다추가 정보.
  • Fusion은 또한 Area of Interest API를 사용하여 NetworkObject의 원하는 집합만을 동기화할 수 있습니다추가 정보.
  • 두 SDK 모두 씬 객체라는 개념이 있는데, 이는 Scene과 연관된 사전 생성된 NetworkObject입니다. 특정 씬이 로드되면 이러한 객체가 시뮬레이션에 자동으로 연결됩니다.
  • 두 SDK에 모두 구현된 또 다른 솔루션은 슈터와 목표물 간의 지연을 고려하여 레이 캐스트와의 충돌을 감지하는 데 주로 사용되는 지연 보상 물리 검사입니다추가 정보.

메인 화면으로

참조 표

Bolt Fusion 설명
BoltNetwork, BoltMatchmaking NetworkRunner 주요 API 진입점
BoltEntity NetworkObject 네트워크 게임 객체를 나타냄
BoltEntity 상태 속성 Networked 속성 동기화된 속성의 집합
GlobalEventListener INetworkRunnerCallbacks 일반적인 이벤트 처리
EntityEventListener NetworkBehaviour, SimulationBehaviour 네트워크된 게임 객체 이벤트 처리
BoltNetwork.Instantiate() NetworkRunner.Spawn() 네트워크 된 게임 객체 생성
BoltNetwork.Destroy() NetworkRunner.Despawn() 시뮬레이션으로부터 네트워크된 게임 객체 제거
BoltEntity.IsOwner NetworkObject.HasStateAuthority 피어가 네트워크 게임 객체의 상태를 수정할 수 있는지 여부
BoltEntity.HasControl NetworkObject.HasInputAuthority 입력을 네트워크 게임 객체에 푸시할 수 있는 피어가 있으면 신호를 보냅니다.
Commands NetworkInput 클라이언트에서 예측하고 서버의 상태를 변경하는 데 사용되는 제어 구조체
Objects NetworkStructs 네트워크 속성을 포함하고 둘 이상의 상태에서 사용할 수 있는 재사용 가능한 데이터 구조체
Events RPC 시뮬레이션에 포함될 필요가 없는 정보를 전송하는 데 사용되는 통신 메소드
Transform 속성 NetworkTransform 네트워크 게임 객체의 변환(위치 및 회전)을 동기화하는 기능이 내장
BoltNetwork.LoadScene NetworkSceneManager 동기화된 방식으로 씬을 스위치/로딩용 API


기술문서 TOP으로 돌아가기