씬 로딩
소개
Quantum 컨텍스트에서 씬을 로드하려면 두 부분이 필요합니다:
- 씬 뷰(유니티) 그리고,
- 시뮬레이션용 씬 데이터 (Quantum).
이 문서에서는 씬 로드 구현 방법에 대해 3가지 유효한 접근 방식을 설명합니다. 이 모든 기능에서 나중에 OnMapChanged
콜백을 통해 유니티 씬 및 MapData를 직접 로드해야 합니다.
주의: Simulation Config
에셋은 맵에서 씬 자동 로드 옵션을 제공합니다. 이는 production 의 경우 protyping 의 경우 괜찮습니다. 게임별 로더를 직접 작성하시기 바랍니다.
오프라인인 경우의 로드
유니티 씬은 플레이어가 매치메이킹에 들어가거나 게임을 시작하기 전에 오프라인/로컬로 로드할 수 있습니다. 이것은 직접 매치메이킹으로 하는 캐주얼 게임에 좋은 옵션입니다.
순서:
- 오프라인 상태에서도 게임 씬을 백그라운드에서 로드합니다(유니티).
- 매치메이킹에 들어가 방을 찾습니다(Photon Realtime).
- 이미 사전 로드된 게임 씬으로 시뮬레이션(Quantum)을 시작합니다.
Photon 룸에 있는 동안 로드
플레이어에게 경기 전 정보를 알리기 위해 로비가 필요한 경우, 모든 사람이 게임 씬을 로드하는 즉시 Photon Realtime API를 통해 로드를 조정하고 Quantum 시뮬레이션을 시작할 수 있습니다.
순서:
플레이어가 Photon 룸에 참여합니다.
Realtime을 통해 룸에 참여한 모든 클라이언트의 씬 로드를 조정합니다:
- (사용자 정의 Photon 메시지 또는 룸 속성)을 사용하여 예상 로드 시간을 지정합니다.
- 모든 클라이언트가 씬(플레이어 속성), 또는 마스터 클라이언트 신호가 시간 초과되었음을 확인할 때까지 기다립니다.
- Quantum 시뮬레이션 시작 신호를 보냅니다(루 속성).
게임이 시작되면 추가 로딩 없이 시뮬레이션과 게임 플레이가 즉시 시작됩니다. 따라서 관련된 모든 플레이어에게 공정합니다.
Quantum 시작 후 로드
이 옵션은 이전 옵션과 유사하지만 한 가지 중요한 차이점이 있습니다. 로비 규칙은 Quantum 시뮬레이션에 의해 제어되고 적용됩니다. 이 경로를 통해 결정론의 이점을 바로 얻을 수 있습니다. 이는 MOBA의 캐릭터 선택 규칙과 같이 사전 매치 규칙을 적용해야 할 때 특히 유용합니다.
순서:
- 룸에 참여합니다(Realtime).
- 시뮬레이션을 시작합니다(Quantum).
- 게임 씬을 로드합니다(유니티).
- 게임 씬에는 시뮬레이션 논리에 의해 제어되는 로비가 있습니다.
- 플레이어는 선택적으로
SendPlayerData
를 사용할 수 있습니다. - 로비 시스템(Quantum)에 의해 타임아웃을 시행하여 클라이언트 실패 시 결정론을 유지합니다.
- Quantum에서 로비 시스템을 비활성화하고 게임 관련 시스템을 활성화합니다.