Social Hub
개요
Fusion Social Hub
는 하나의 프로젝트에서 여러 토폴로지를 활용하는 방법과 로직을 구현하는 방법을 보여주는 기술 샘플로, 고유한 차이를 고려하면서 특정 토폴로지마다 다르게 실행됩니다. 이 샘플은 또한 세션 간 전환을 위해 여러 NetworkRunner
를 관리하는 방법을 보여줍니다.
이 샘플은 다음 조합을 사용합니다.
- 많은 플레이어가 처음에 NPC를 수집하고 상호 작용할 수 있는 소셜 허브를 위한 공유 모드
- 더 적은 수의 플레이어가 소셜 허브에서 들어갈 수 있는 던전을 위한 호스트 모드 세션. 던전에서는 플레이어가 상자를 파괴할 수 있습니다.
컨트롤
- 호스트 전용: 공격 LMB.
- 두 토폴로지: 상호작용 E.
시작하기 전에
샘플을 실행하려면 먼저 PhotonEngine 관리 화면에서 Fusion AppId를 생성하여 Real Time 설정(Fusion 메뉴에서 접근 가능)의 App Id Fusion
필드에 붙여 넣습니다. 그런 다음 Launch
씬을 로드하고 Play
를 누릅니다.
다운로드
버전 | 릴리즈 일자 | 다운로드 | ||
---|---|---|---|---|
1.1.3 | 2022년 11월 1일 | Fusion Social Hub 1.1.3 빌드 68 |
연결 관리 시스템
연결 관리자는 연결 요청을 처리할 책임이 있습니다. 두 토폴로지를 모두 처리할 NetworkRunner
가 둘 이상 있으므로 올바른 러너를 참조하고 다른 토폴로지와 충돌하지 않도록 필요한 모든 예방 조치를 취합니다.
앱
이 클래스의 주요 목적은 연결 관리자가 Monobehaviour
이기 때문에 수행할 수 없는 네트워크 작업을 수행하는 것입니다. 이 샘플에서는 RPC를 전달하는 데만 사용됩니다.
연결 컨테이너
NetworkRunner
, 현재 해당 러너에 사용되는 ConnectionData
, App
, 러너의 콜백 클래스 및 일부 헬퍼 검사에 대한 참조를 포함하는 간단한 c# 클래스입니다.
연결 데이터
ConnectionManager
에 연결 요청을 하는 데 필요한 모든 데이터를 저장하는 데 사용되는 스크립트 가능한 개체입니다. 주요 속성은 다음과 같습니다.
ConnectionID: 연결을 나타내는 ID이며, 각 고유 세션의 ID는 서로 달라야 합니다. 가입할 수 있는 세션이 없는 경우 세션 속성으로 사용되어 가입하거나 새 세션을 만듭니다.
ConnectionTarget:
ConnectionManager
에서 원하는 연결이Shared
또는Host
세션에 있는지 확인하는 데 사용됩니다.
연결 게이트
이는 ConnectionData
에 대한 참조를 포함하며 ConnectionData
에 정의된 세션에 연결하기 위해 인터페이스를 전환하는 영역 트리거로 사용됩니다.
연결 관리자
ConnectionManager.cs
의 경우, 다른 유틸리티 로그 입력 대상에서 수신을 원하는 연결 대상자에 기초하여 올바른 연결 컨테이너의 연결을 수행할 수 있습니다.
두 토폴로지에 대한 코딩
일부 로직은 서로 다른 토폴로지에서 다르게 작동한다는 점에 주목하는 것이 중요합니다. 두 가지 모두에 대한 지원을 제공하기 위한 최선의 방법은 Runner.IsServer
대신에 항상 Object.HasStateAuthority
를 확인하는 것입니다. 공유 모드의 상태 권한과 호스트/서버 모드의 호스트 또는 서버를 포함하기 때문입니다.
또한 Fusion 입력을 사용하면 공유 모드에서 실제로 유용하지 않더라도 PlayerMovement
클래스처럼 호스트/서버에서 작동합니다.
특정 토폴로지에서만 실행되어야 하는 로직의 경우 Runner.Topology
는 NetworkObject
와 관련된 NetworkRunner
에서 사용 중인 토폴로지를 반환합니다.