シーン読み込み
はじめに
Quantumの文脈におけるシーンのロードは、以下の2つの部分で構成されます:
- シーンビュー(Unity)
- シミュレーションのためのシーンデータ(Quantum)
このドキュメントでは、シーンのロードを実装するための3つの有効なアプローチを提示します。どのアプローチでも、Unityのシーンとマップデータを自分でロードする必要があります(後者についてはOnMapChanged
コールバックを通じて)。
注: Simulation Config
アセットにはマップからシーンを自動読み込みオプションがあります。これはプロトタイピングには問題ありませんが、プロダクションの場合は、自分自身のゲーム特有のローダーを作成することを強くお勧めします。
オフラインでのロード
Unityシーンは、プレイヤーがマッチメイキングに入る前やゲームを開始する前に、オフラインまたはローカルでロードすることができます。これは、直接マッチメイキングを行うカジュアルゲームにとって良い選択肢です。
手順:
- オフラインの状態でもバックグラウンドでゲームプレイシーンをロードする(Unity)
- マッチメイキングに入り、ルームを見つける(Photon Realtime)
- すでにゲームプレイシーンがプリロードされた状態でシミュレーションを開始する(Quantum)
Photonルーム内でのロード
プレイヤーにプレマッチ情報を通知するためのロビーが必要な場合、Photon Realtime APIを通じてロードを調整し、すべてのプレイヤーがゲームプレイシーンをロードしたらすぐにQuantumシミュレーションを開始できます。
手順:
プレイヤーがPhoton ROOMに参加する
ルームに参加したすべてのクライアントのシーンロードをRealtimeを通じて調整する:
- (カスタムPhotonメッセージまたはルームプロパティを使用して)期待されるロード時間を通知する
- すべてのクライアントがシーンをロードしたことを確認するのを待つ(プレイヤープロパティ)、__または__マスタークライアントがタイムアウトを通知
- Quantumシミュレーションの開始を通知する(ルームプロパティ)
ゲームが開始されると、シミュレーションとゲームプレイが直ちに開始され、追加のロードは不要になります。これにより、関与するすべてのプレイヤーに公正さが保たれます。
Quantumスタート後のロード
このオプションは前のものと似ていますが、1つの重要な違いがあります:ロビーのルールはQuantumシミュレーションによって制御され、強制されます。このルートを選ぶことで、すぐに決定論性の恩恵を受けることができ、特にプレマッチのルールを強制する必要がある場合に便利です。たとえば、MOBAのキャラクター選択ルールなどです。
手順:
- ルームに参加する(Realtime)
- シミュレーションを開始する(Quantum)
- ゲームプレイシーンをロードする(Unity)
- ゲームプレイシーンにはシミュレーションロジックによって制御されるロビーがあります
- プレイヤーは自分の選択を
SendPlayerData
で送信できます - クライアントが失敗した場合でも決定論性を維持するために、ロビーシステム(Quantum)によってタイムアウトが強制されます
- Quantumのロビーシステムを無効にし、ゲームプレイ関連のシステムを有効にします