Realtimeイントロ

はじめに

Photon Realtimeは世界中のリージョンで稼動しているPhotonオンプレミスサーバー向けの完全に管理されたサービス(SaaS)です。低レイテンシーで複数のプレイヤーがいつでも世界中からプレイすることが可能です。

ロードバランシングAPIを使用すると、共有のゲームセッション(「ルーム」と呼ばれます)で複数のプレイヤーをマッチングさせたり、別のプラットフォーム上のプレイヤー間でメッセージの転送を同期的にリアルタイムで行うことができます。 すべてのクライアントSDKは互いに通信が可能です。たとえば、 iOS、Android、ウェブ、コンソール、スタンドアロンのいずれを使用していても通信が可能です。

Back To Top

接続

Photon Realtimeアプリケーションは接続にAppIDが必要です。

無料サインアップをして、RealtimeダッシュボードからAppIDを取得してください。

AppIDを設定して、接続先のリージョンを選択してください。 利用可能なリージョンについては、こちらをクリックしてください

Back To Top

Serviceの呼び出し

LoadBalancing APIはゲームロジックと最適に統合するよう構築されています。

受信メッセージの処理のタイミングや、送信頻度を任意で設定できます。 内部的には、ゲームがLoadBalancingClient.Service()を呼ぶまで、送受信ともにバッファされます。

多くの場合、ゲームはアップデートを計算して画面をリフレッシュするゲームループを使用しています。 1秒ごとにService()を10~20回呼んでください。

Service()を呼ばないかぎり、"ネットワークプログレス"はまったく処理されません。

Back To Top

切断

アプリケーションが終了する際や、ユーザーがログアウトする際には、忘れずに切断するようにしてください。

Back To Top

マッチメイキング

ゲームの作成

新しいルームやゲームを作成するには、接続されたロードバランシングクライアントで"ルームの作成"操作をおこなってください

これによって、ルームの名前とルームで許可されるプレイヤーの人数が設定されます。 クライアントは、自動的に新しいルームに入室します。 "ルームの作成"操作をすると、まだそのルームが存在していない場合には、参加者がいなくてもルームが作成されます。 最後のプレイヤーが退室するまで、ルームは存在します。

ルーム作成時に、"カスタムルームプロパティ"を定義して共通の値を設定することができます。 カスタムルームプロパティを使用すると、マップ名、レベル、ラウンドの時間などを保存できます。 カスタムプロパティのキーは文字列でなければなりません。 もちろん、これらの値はルーム内での設定や変更も可能です。 任意の配列を"ロビー用のカスタムルームプロパティ"として設定し、その配列にそれらのカスタムプロパティの名前をつけて設定することで、カスタムプロパティをロビーに表示するよう選択できます。 ロビーに表示するプロパティは、マッチメイキングやランダムマッチのフィルタとして使用することが可能です。

マッチメイキングの詳細については、こちらを参照してください 。

Back To Top

ゲームの検索

クライアントは名前を指定するか、またはPhotonにマッチングのリクエストをしてゲームに参加します。

ルームの検索方法

  • Random: ランダムにプレイヤーをマッチングします。ルームを満員にするか、またはプレイヤーを均等に配分するかを選択できます。
  • Filters ランダムマッチメイキングで、より最適なマッチングをおこなうために使用します。
  • Listing: 選択可能なルームをロビーに表示し、プレイヤーが手動で選択したり、参加できるようにします。
  • Private: 名前を把握している、非表示のルームに参加します。
  • Parameterized: 期待されるプロパティを定義して、ランダムマッチングをカスタマイズします。

Back To Top

ゲームの持続

Photon Realtimeでは、ルームのデータを簡単に保管およびローディングできます。外部のWebサーバーとPhoton Cloudを接続するには、 Webhooks をセットアップする必要があります。

セットアップが完了すると、ルームステートは自動的に保存されるようになります。ルームに再参加するには:

この機能によって、非同期マッチメイキングとゲームプレイが可能になります。

詳細な手順は、ルーム持続性ガイドを参照してください。

Back To Top

ゲームプレイ

イベントの送信

1つのクライアント上で起こることは、すべて同じルームにいる全員を更新するイベントとして送信することができます。

統計、位置または現在のターンでプレイヤーを更新します。 Photonはその更新を、出来る限り速く送信します(信頼性は任意で設定可能です)。

  • Send messages/events: 他のプレイヤーにすべてのタイプのデータを送信
  • Player/Room properties: Photonは、後から参加したプレイヤーも含めて、これらのデータを更新および同期します。

イベントコードは200以下にしてください。また、各コードでイベントの型と内容を定義する必要があります。

上記例のイベントデータはHashtableです。byte[]や、Photonのシリアル化(stringfloat[]など)で対応しているすべてのデータ型を使用できます。 詳細情報はPhotonでシリアル化を参照してください。

Back To Top

イベントの受信

イベントが送信されると、ハンドラーが呼ばれます。以下に例を示します。

各イベントは、クライアントが送信したのと同様の方法でコードとデータを送信します。 アプリケーションは、渡されたコードによってどのコンテンツを期待すべきかを把握します(上記参照)。

デフォルトのイベントコードの最新のリストは、SDK内のイベントコード定数を確認してください。たとえば、C#の場合はExitGames.Client.Photon.LoadBalancing.EventCode内にあります。

Back To Top

カスタムサーバーまたはオーソリテーティブサーバーのロジック

オーソリテーティブロジックを加えなくても、Photon Cloud製品は幅広いタイプのゲームに対応しています。

  • ファーストパーソンシューター 
  • レーシングゲーム
  • マインクラフトタイプのゲーム
  • カジュアルなリアルタイムゲーム 
  • 非同期および同期ゲーム
  • ...

独自のカスタムロジックを実装するには、Photon Serverまたは プラグイン を使用してください。

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