Fusion 어플리케이션 루프

개요

Fusion 애플리케이션 루프는 기본적인 매치메이킹 기능을 제공할 뿐만 아니라 씬 로드 및 연결 설정 및 연결 해제 시 Fusion과 올바르게 작동하도록 게임의 외부 루프를 구성하는 방법을 보여줍니다.

좀 더 구체적으로 말하면, 이 예제에서는 게임 모드나 맵 이름과 같은 몇 가지 모의 속성을 가진 세션을 만들거나 참여할 수 있습니다. 참여한 사용자에게 세션 목록을 제공하고 게임 씬을 로드하기 전에 아바타를 구성할 수 있습니다. 또한 이 예제에서는 클라이언트와 호스트가 세션을 종료하고 인트로로 돌아가는 것도 처리합니다.

메인 화면으로

시작하기 전에

샘플을 실행하려면 먼저 PhotonEngine 관리 화면에서 Fusion AppId를 생성한 후 실시간 설정(Fusion 메뉴에서 연결 가능)의 App Id Fusion 필드에 붙여 넣으십시오. 그런 다음 Launch 씬을 로드하고 Play를 누릅니다.

메인 화면으로

다운로드

버전 릴리즈 일자 다운로드
1.1.3 Nov 18, 2022 Fusion Application Loop 1.1.3 Build 77

메인 화면으로

프리팹

  • App.prefab: 메인 앱 런처입니다. 싱글톤이며 모든 씬에 드롭하여 해당 씬에서 애플리케이션을 시작할 수 있습니다(편집기에서 실행할 때 유용). 편집기에서 실행할 때 전체 일치 프로세스를 건너뛰기 위해 일부 사전 설정된 값으로 세션을 자동으로 생성할 수 있습니다.
  • Character.prefab: 플레이어 아바타 - 이 프리팹의 인스턴스는 각 플레이어가 맵에 들어갈 때 생성됩니다. 캐릭터는 맵이 언로드될 때까지만 존재합니다.
  • Player.prefab: 플레이어 세션 속성 - 세션이 시작될 때 플레이어별로 이 프리팹의 인스턴스 하나가 생성됩니다. 플레이어 인스턴스는 씬 로딩에서 살아남아 세션 연결이 끊어질 때까지 유지됩니다.
  • Session.prefab:공유 세션 속성 - 세션이 시작될 때 이 Prefab의 인스턴스에 생성됩니다.

메인 화면으로

  • 0.Launch - 시작 씬은 빌드에서만 사용되며 App 싱글톤의 인스턴스만 포함합니다. 앱의 디버그(자동 연결) 구성으로 실수로 빌드하지 않도록 빌드에 대해 이 인스턴스를 구성하십시오.
  • 1.Intro - 도입 장면에는 연결이 설정되기 전의 사전 게임 UI가 포함되어 있습니다. 여기서 토폴로지/클라이언트 모드와 게임 유형이 선택됩니다. 또한 가입할 세션을 선택하고 새 세션을 만들기 위한 UI도 포함되어 있습니다. 연결이 끊기거나 종료되면 앱이 되돌아가는 위치입니다.
  • 2.Staging - 스테이징 씬은 네트워크 세션이 설정되면 로드되며 플레이어는 아바타를 구성하고 플레이할 준비가 되었음을 호스트에게 알릴 수 있습니다. 플레이어가 아바타를 구성해야 하고 플레이할 준비가 되었음을 표시해야 할 때마다 앱이 여기로 돌아올 수 있습니다.
  • X.MapY 씬은 실제 게임 맵입니다. 각 게임 맵은 스테이징 영역의 플레이어 구성에 따라 플레이어 아바타를 인스턴스화하고 로딩이 완료되면 호스트에게 알려주므로 로딩 속도가 느리더라도 모든 클라이언트에서 동시에 게임을 시작할 수 있습니다. 호스트가 다음 게임 씬으로 이동할 수 있으며, 모든 클라이언트는 자유롭게 연결을 끊을 수 있습니다.
  • GameOver - GameOver 씬은 기본적으로 플레이어가 아바타를 얻지 못하는 맵에 불과합니다. 경기 결과를 보여주는 데 사용할 수 있고 플레이어를 스테이징 구역으로 데려다 줍니다.

메인 화면으로

Behaviours

GameUI, UIComponentsUtility 폴더내의 코드는 이 예제에 해당하는 것이 아니므로 다루지 않습니다.

  • App 예제의 기본 진입점입니다. 게임 세션을 생성 및 파괴하고 활성 플레이어를 추적할 수 있는 방법이 있습니다. 주 Fusion 콜백을 구현합니다.
  • Character 게임 내 아바타 - 플레이어 캐릭터의 기본 동작을 제어합니다.
  • Map 실제 게임 씬에 존재하는 네트워크 객체일 뿐 아바타를 스폰하는 역할을 합니다.
  • MapLoader Fusion을 위한 개체 제공자 구현이며 로드 씬 표시에서 로드된 네트워크 개체 목록 수집까지 씬 로드 시퀀스를 제어합니다.
  • Session 첫 번째 플레이어가 연결되면 하나의 Session 개체가 생성되어 App에 부모로 지정되므로 로드 시 Session 개체도 파괴되지 않습니다. 이 세션은 맵 로드 로직을 제어하며 App(App.Instance.Session)을 통해 액세스할 수 있습니다.
  • Player 각 플레이어는 세션에 참여할 때 플레이어 객체를 얻으며, 또한 세션 게임 객체를 부모로 하여 씬 로드에서 플레이어를 살려줍니다. 플레이어 개체는 게임 내 시각적 표현이 없으며 모든 클라이언트와 공유되는 플레이어 정보의 캡슐화일 뿐입니다.


기술문서 TOP으로 돌아가기