Please note: development of Photon TrueSync & Thunder is ceased and we will not publish any further updates. While existings apps are not affected, we recommend to migrate apps that are still in development. Please read here for more details.

Photon TrueSync イントロ

TrueSync APIリファレンスはこのリンクから入手できます。 link.

はじめに

Photon TrueSyncは、Photon Unity Networking上に構築されたUnityのマルチプレイヤーロックステップシステムです。

TrueSyncでは、クライアントマシンはそれぞれのプレーヤーによって生成された入力のみを交換し、シミュレーションはゲームクライアント間でロックステップし、帯域幅要件を大幅に削減し、完璧な同期を可能にします。

開発者がマシン間でシミュレーションを確定的に保てるよう、カスタム物理エンジンと、その他のクラスが含まれています。

TrueSyncは、Unityが対応しているほぼすべてのプラットフォームにエクスポートできます。

必要なコード

TrueSyncを最大限に活用するには、いくつかのスクリプトを書く必要があります。 このページでは、始めるための最も重要なスクリプトを紹介します。

TrueSyncの確定的セクションの開始

TrueSyncのセクションは、PUN(Photon Unity Network)ルームに接続されたゲームクライアント間で行われるため、ルームの設定と作成/参加方法のドキュメントを参照してください。

実際のTrueSync管理されたゲームプレイセクションは、ゲームオブジェクトに添付されたTrueSyncManagerコンポーネントを含むシーンがPUNを介して同期ロードされると、マスタークライアントによって開始されます。

TrueSyncManagerは、ゲームクライアントがルームに接続されているかどうかを確認します。これは、マルチプレーヤーのロックステップセクションを開始することを意味します。 PUNルームに接続せずに使用することもできます。この場合、システムはオフラインモードで動作します。これは、ゲームのシングルプレーヤー部分に同じコードとコンポーネントを使用するのに最適です。

入力のキューイング

ロックステップシステムでは、ローカルプレイヤーからの入力をゲームプレイコードで使用する前にキューに入れなければなりません。 そうすることにより、システムは、リモートプレイヤーからの入力を待ち、キューに入れられたローカルの入力と同期させることができます。

ローカルクライアントとリモートクライアントの両方で使用するTrueSyncの入力キューにプレーヤーの入力を登録するために必要なのは上記のコードのみです。

最初のパラメータはキーなので、必要に応じて複数の入力値を登録できます。

floatからFixedPoint(FP)に変換する必要があります。 float(浮動)小数点数は、異なるアーキテクチャーでまったく同じように計算されるわけではありません。したがって、すべてのクライアントでシミュレーションを同期させる必要があります。

入力を使用してgamestateを更新

次に、Unity上の他のゲームと同じように、入力値を使用してゲームオブジェクトを更新します。 違いは、Unityから直接ではなく、TrueSyncのキューシステムから入力値を取得することです。

上記のコードは、TSVectorクラスも示しています。これは、Unity Vector3とまったく同じ方法で動作しますが、x、y、zのfloatではなくFPを使用します。 Unityの代わりにTrueSyncのデルタタイムを使用していることにもご注目ください。

物理

TrueSyncには、2Dゲーム用と3D用の2つのカスタム物理エンジンが搭載されています。 どちらも、Unityの元の物理エンジンのものと非常によく似たコンポーネントアーキテクチャとAPIを使用しています。

TrueSync physics
TrueSyncのカスタム3D物理エンジン。Sphere Collider, Rigidbody, Transformコンポーネント及び、プロパティードロワーとギズモが表示されています。

TrueSyncには、組み込まれた物理エンジンの使い方を説明するいくつかのゲームサンプルが含まれています。 下のコードは、物理剛体のTrueSyncの決定論的なバージョンであるTSRigidbodyに力を加える方法を示しています。

コリジョンとトリガはUnityの物理的な対応と同じように機能しますが、すべてのコールバックメソッドは "OnSynced"で始まります。つまり、TrueSyncの確定的物理エンジンから呼び出されます。

 ドキュメントのトップへ戻る