어플리케이션 루프
개요
Fusion 애플리케이션 루프는 기본적인 매치메이킹 기능을 제공할 뿐만 아니라 씬 로드 및 연결 설정 및 연결 해제 시 Fusion과 올바르게 작동하도록 게임의 외부 루프를 구성하는 방법을 보여줍니다.
좀 더 구체적으로 말하면, 이 예제에서는 게임 모드나 맵 이름과 같은 몇 가지 모의 속성을 가진 세션을 만들거나 참여할 수 있습니다. 참여한 사용자에게 세션 목록을 제공하고 게임 씬을 로드하기 전에 아바타를 구성할 수 있습니다. 또한 이 예제에서는 클라이언트와 호스트가 세션을 종료하고 인트로로 돌아가는 것도 처리합니다.
시작하기 전에
샘플을 실행하려면 먼저 PhotonEngine 관리 화면에서 Fusion AppId를 생성한 후 실시간 설정(Fusion 메뉴에서 연결 가능)의 App Id Fusion
필드에 붙여 넣으십시오. 그런 다음 Launch
씬을 로드하고 Play
를 누릅니다.
다운로드
버전 | 릴리즈 일자 | 다운로드 | ||
---|---|---|---|---|
1.1.6 | Apr 17, 2023 | Fusion Application Loop 1.1.6 Build 184 |
프리팹
- App.prefab: 메인 앱 런처입니다. 싱글톤이며 모든 씬에 드롭하여 해당 씬에서 애플리케이션을 시작할 수 있습니다(편집기에서 실행할 때 유용). 편집기에서 실행할 때 전체 일치 프로세스를 건너뛰기 위해 일부 사전 설정된 값으로 세션을 자동으로 생성할 수 있습니다.
- Character.prefab: 플레이어 아바타 - 이 프리팹의 인스턴스는 각 플레이어가 맵에 들어갈 때 생성됩니다. 캐릭터는 맵이 언로드될 때까지만 존재합니다.
- Player.prefab: 플레이어 세션 속성 - 세션이 시작될 때 플레이어별로 이 프리팹의 인스턴스 하나가 생성됩니다. 플레이어 인스턴스는 씬 로딩에서 살아남아 세션 연결이 끊어질 때까지 유지됩니다.
- Session.prefab:공유 세션 속성 - 세션이 시작될 때 이 Prefab의 인스턴스에 생성됩니다.
씬
0.Launch
- 시작 씬은 빌드에서만 사용되며App
싱글톤의 인스턴스만 포함합니다. 앱의 디버그(자동 연결) 구성으로 실수로 빌드하지 않도록 빌드에 대해 이 인스턴스를 구성하십시오.1.Intro
- 도입 장면에는 연결이 설정되기 전의 사전 게임 UI가 포함되어 있습니다. 여기서 토폴로지/클라이언트 모드와 게임 유형이 선택됩니다. 또한 가입할 세션을 선택하고 새 세션을 만들기 위한 UI도 포함되어 있습니다. 연결이 끊기거나 종료되면 앱이 되돌아가는 위치입니다.2.Staging
- 스테이징 씬은 네트워크 세션이 설정되면 로드되며 플레이어는 아바타를 구성하고 플레이할 준비가 되었음을 호스트에게 알릴 수 있습니다. 플레이어가 아바타를 구성해야 하고 플레이할 준비가 되었음을 표시해야 할 때마다 앱이 여기로 돌아올 수 있습니다.X.MapY
씬은 실제 게임 맵입니다. 각 게임 맵은 스테이징 영역의 플레이어 구성에 따라 플레이어 아바타를 인스턴스화하고 로딩이 완료되면 호스트에게 알려주므로 로딩 속도가 느리더라도 모든 클라이언트에서 동시에 게임을 시작할 수 있습니다. 호스트가 다음 게임 씬으로 이동할 수 있으며, 모든 클라이언트는 자유롭게 연결을 끊을 수 있습니다.GameOver
- GameOver 씬은 기본적으로 플레이어가 아바타를 얻지 못하는 맵에 불과합니다. 경기 결과를 보여주는 데 사용할 수 있고 플레이어를 스테이징 구역으로 데려다 줍니다.
Behaviours
GameUI
, UIComponents
및 Utility
폴더내의 코드는 이 예제에 해당하는 것이 아니므로 다루지 않습니다.
App
예제의 기본 진입점입니다. 게임 세션을 생성 및 파괴하고 활성 플레이어를 추적할 수 있는 방법이 있습니다. 주 Fusion 콜백을 구현합니다.Character
게임 내 아바타 - 플레이어 캐릭터의 기본 동작을 제어합니다.Map
실제 게임 씬에 존재하는 네트워크 객체일 뿐 아바타를 스폰하는 역할을 합니다.MapLoader
Fusion을 위한 개체 제공자 구현이며 로드 씬 표시에서 로드된 네트워크 개체 목록 수집까지 씬 로드 시퀀스를 제어합니다.Session
첫 번째 플레이어가 연결되면 하나의 Session 개체가 생성되어App
에 부모로 지정되므로 로드 시 Session 개체도 파괴되지 않습니다. 이 세션은 맵 로드 로직을 제어하며App
(App.Instance.Session
)을 통해 액세스할 수 있습니다.Player
각 플레이어는 세션에 참여할 때 플레이어 객체를 얻으며, 또한 세션 게임 객체를 부모로 하여 씬 로드에서 플레이어를 살려줍니다. 플레이어 개체는 게임 내 시각적 표현이 없으며 모든 클라이언트와 공유되는 플레이어 정보의 캡슐화일 뿐입니다.