用語集
信頼性を高めるための(低レベルの)コマンドです。リライアブルUDP(RUDP)に使用します。
ルームに入っているプレイヤーは"Actor"とも呼ばれます。
ActorにはそれぞれActorNumberが存在し、これはactorId、player number、player id
とも呼ばれ、ルーム内で有効です。
ActorNumberの値は各ルームで1から始まり、(クライアントが退出し、他のクライアントが参加した場合に)再利用されません。
アプリケーションにはゲームロジックが含まれます。 C#で書かれていて、Photon Coreで実行されます。このために抽象クラスApplicationを拡張しています。Photon CloudはVirtual Applicationを使用しています。
Photon CloudではApplication ID (AppId)がタイトルとVirtual Applicationのメインの識別方法になります。
AppIdはダッシュボードから確認できます。ほとんどのデモで必要です。
Application Version (AppVersion)
PUNを除く全てのクライアントSDKでは、AppVersionはGameVersionを同様のものとなります。
If you use PUN and non-PUN clients at the same time or if you have clients with different PUN versions,
you need to take into consideration PUN's specific AppVersion format: {gameVersion}_{PUN_version}
.
So if you set the gameVersion
to "1.0" in PUN and use PUN version "1.80" then the resulting AppVersion is "1.0_1.80".
Vector3
but you need to check the "CustomTypes.cs" of PUN to support this in other client SDKs.
Photon Server SDKのバイナリーフォルダにはPhoton Coreのプラットフォーム特化ビルドが含まれています。bin_とdeployフォルダが用意されています。
__
デプロイ用にアプリケーションをコンパイル及びコピーする際に使うバッチファイル又はMsBuildプロジェクト。クリーンなビルドのデプロイが可能になります。
Photon Coreの上部で動作するゲームのロジックです。このレイヤーは操作とイベントを処理します。
RUDPプロトコルにおける低レベルのチャネルもしくはPhoton Chatでの「会話」チャネルのどちらかを指します。
Photon Chatはユーザ同士のコミュニケーションを可能にする軽量なサービスです。 ユーザはチャンネルに参加したり、プライベートメッセージを送ってユーザステータスをフレンドに提供することができます。Chatは個別の接続を使用していてルームとは別になります。
サーバーに接続するアプリケーションをクライアントといいます。
Photonのケースでは、クライアントがサーバーへの接続を初期化し、他のクライアントへのメッセージを可能にします。
PhotonクライアントはクライアントAPIでプログラミングされておりクライアントライブラリとしても参照されます。
クラスタはマスターサーバーと複数のゲームサーバー
から成ります。クラスタは互いに分離されています。
通常、1つのリージョンには1つのクラスタのみが存在しています。
コマンドは、データを運んだり、接続を確立またはシャットダウンするために eNetプロトコルのレイヤー上で使用されます。
コマンドを書く必要はありませんが、参考の知識として説明しています。
ゲームのConcurrent Userとは同時にサーバーに接続しているクライアントを指します。Photon Cloudアカウントの料金はCCUカウントが基準となります。
CCUはDaily Active Users (DAU/日別のアクティブなユーザ)やMonthly Active Users (MAU/月別のアクティブなユーザ)とは違います。ユーザが1日や月にプレイする時間は限られています (全てのユーザが毎日プレイするとは限らないので)。
クライアントがPhoton上で操作を呼び出す前までに接続し、接続を確立する必要があります。
クライアントAPIにない操作、またはサーバー側の(ライトアプリケーションにはない)新たな操作を指します。
PhotonではルームやプレイヤーのCustom Propertiesを設定できます。どちらの場合も、custom propertiesはHashtable(ハッシュテーブル)として提供されます。キーはtype Stringである必要がありますが、任意の値(シリアル化できる)を設定できます。
Custom Propertiesはプレイヤーがゲームを放棄すると同時に削除されます。Turnbasedのasync(非同期)ゲームの場合は維持されます。
ダッシュボードでは、各種数値をモニターするためにウェブサイト上で各種数値のグラフを生成して表示します。
Photonアプリケーションはダッシュボードから管理できます。
サーバーSDKでは、このフォルダにPhotonを実行するのに必要なもの全てが含まれています。
詳細: バイナリフォルダおよびコンパイルされたアプリケーション
モバイル端末を初めとする、クライアントアプリケーションを動作させるたのシステムを指します。
クライアントとサーバー間の接続を終えることを指します。プレイヤーがクライアントのアプリを終了したい時、またはタイムアウトの時に起こります。また、サーバーロジックがプレイヤーを切断することもできます。
Photonサーバーが空のルームを処分するまで待機するミリ秒での時間
アクティブなアクターが参加していない限り、ルームは空とみなされます。
最後のアクティブなアクターが退出するとルームの消去タイマーが稼働し始めます。アクターが空の状態のルームに参加・再参加するとカウントダウンはリセットします。
デフォルトで許可されている最大値:
- Photon Cloud上で300,000ミリ秒(5分)
- Photon Server上で60,000ミリ秒(1分)
イベントはクライアントに送信される非同期のメッセージです。イベントは操作の副作用としてトリガーされ、またはイベントコードにより操作の主目的として発動され、識別されます。識別にはActorNumberが用いられます。
イベントコードの略語です。イベントのタイプとそのイベントがどの情報(およびタイプ)を含んでいるのかを識別できます。
Fusionは、弊社最新のステート転送ネットワーキングソリューションです。対戦型ゲームでも、1セッションあたり100人以上のプレイヤーをサポートすることを目指しています。
Gameはタイトルやアプリケーションを指す場合と、プレイヤー同士の実際の対戦を指す場合があります。
このドキュメント内では前者の場合には「タイトル」を、後者の場合にはルームを使用するように努めています。
ゲームサーバーは、クライアント同士のゲーム内の実際のコミュニケーションを処理します。クライアントは マスターサーバーを通じてのみコミュニケーションするため、ゲームサーバーはフレンドリストやルームリストは提供しません。
GameVersionはどのゲームでも設定できるストリングです。
Photon Cloudでは互換性の無いバージョンのユーザを別のVirtual Applicationに別ける際に便利です。
RequestとACKの間の時間を指します。
レイテンシーはクライアントとサーバーによって異なります。ラウンドトリップ時間 (RTT)として計測されます。
Photon Server SDKでのHiveアプリケーションを指します。
開始時に使用する基本的なビジネスロジックです。
このクラスは、PhotonクライアントSDKを含む多くのSDKの素地となっています。これにはPhotonのMasterサーバーがいくつかのGameサーバーを把握しているロードバランシングワークフローをまとめるロジックが含まれています。
ルームに参加する場合は、クライアント特定のGameサーバーに切替を行います。
Lobbyはルームのリスト(又はバーチャルコンテナ)です。複数のLobbyを使うことができますし、Lobbyには複数の種類があります。例:全てのLobbyタイプがルームリストをクライアントに送りとは限りません。
デフォルトではプレイヤーはLobby内で会話することができませんし他のクライアントがLobbyにいることすら分かりません。また、クライアントはLobbyとRoomに同時にいることはありません。
Photon Serverはサービスとして実行するように設計されていて、拡張GUIはありません。
代わりに次の2つのログファイルが使用されます:アプリケーションは"deploy\log"に書き込みます。Photon Coreは"deploy\bin_*\log"に書き込みます。
ゲームはマッチを見つけるプロセスです。
マスタークライアントはルームごとの「特別な」 クライアントです。カスタムサーバーコードがないため、マスタークライアントはルームにいるひとりのクライアントによってのみ実行されるロジックの処理をつかさどるように作られています(例:全員の準備が完了したらマッチを開始する)。
マスタークライアントが退出すると新しいマスタークライアントが自動的に割り当てられます。明示的に設定されない限り、マスタークライアントはアクティブなアクターの中で一番若いアクター番号を持つアクター(プレイヤー)です。
マスターサーバーはリージョンまたはクラスターのマッチメイキングを処理します。マスターサーバーは複数のゲームサーバーに対してルームを配布します。
クライアントがネームサーバーを経由してマスターサーバーを調査する点が重要です。
Messages
Messageは他のユーザを更新したり、サーバーで行う全ての処理を指します。
- Photon内では: 全てのオペレーション、レスポンス、イベントはメッセージです。
- PUN内では: 全てのRPC, 同期の更新, インスタンス化されたコール, Custom Properties (playerNameを含む)の変更 は全てメッセージです。
他のクライアントへのイベント(又はRPC)の送信はルーム内の各プレイヤーにつき1つのメッセージとしてカウントされます。一人が送信して、他のクライアントが受信します。
PUNはOnPhotonSerializeView
でアップデートを集約させる点で特別です。
複数のオブジェクトの更新は可能であれば一つのメッセージにまとめられます。
また、Observeモードはこれに影響します:更新の間にGOが動かない場合"Unreliable On Change"が何は送らなくなります。レアなケースですが、一つのオブジェクトが原因で各プレイヤーに10メッセージ/秒が送信されてしまう事もあります。
次の理由でルームや1秒毎に送られるメッセージ(更新)に上限をつけています:
- 更新が多すぎると破損の原因となります。帯域幅やデバイスなどによって異なるので明確な上限を設定しているわけではありません。
- 共有サーバーを均等に別けられるようにしています。
ルームや秒毎のメッセージはDashboardから確認できます。
ネームサーバーは利用可能なリージョンのリストをクライアントに提供し、クライアントの認証リクエストを処理します。
クライアントがリージョンを選択すると、ネームサーバーはそのリージョンのマスターサーバーアドレスを提供します。
複数のロードバランスされたネームサーバーが存在します。
Photonのサーバー側での RPC機能と同義語です。
クライアントはサーバー上の何かを行い、イベントを他者に送信するためにも Operationを使用します。
Photon Cloudの各ドキュメント内では単に"操作"と表現します。
Operationコード、操作コードの略称です。
サーバー側で操作をトリガーするために使用されるbyte値です。
クライアントは、返り値に対するアクションのタイプを識別するために、opCodesで操作の反応を得ます。
接続の片方をさす言葉です。
クライアントはピアを持ち、サーバーはそのクライアントに対するリモートのピアとなります。
アクターがルーム内でインアクティブのままでいる削除されるまでのミリ秒での時間です。
アクターはルームを一時的に退出したり予期せず切断されたりする場合にインアクティブとなります。
値が-1となるとインアクティブなアクターがタイムアウトしないということを指します。
C++で書かれた Photonの中核です。接続とeNetプロトコルを処理します。
Photon Server SDKのPhoton管理ツール。PhotonControl.exeを起動するとタスクバーメニューが表示されてPhotonのサービスの管理ができます。
Photon Server SDKには全てのWindows機でPhoton Serverインスタンスを実行及びビルドするためのツールが含まれています。
詳細はこちら。
Photon Coreの構成ファイル。IP, アプリケーション, パフォーマンス設定の構成を行います。以前の名称はPhotonSocketServer.xmlで、一時期はPhotonSocketServer.configとも呼ばれていました。
Photon Unity NetworkingはUnity用のC#クライアントパッケージです。
Photonの低レベルな機能を使って、より高度な形でUnityのビルドインされたネットワーキングを再実装します。
Photonの低レベルな機能の多くがPUNでカバーされています。ReturnCode やCommands等の心配はほとんどありません。
たとえば、現在では長期的なサポートモードの対象になっているため、今後は主要機能のアップデートはありません。新しいプロジェクトについては、クライアントサイドでFusionまたはQuantumを使用する必要があります。
Policy Applicationはcrossdomain.xmlを送るためにPhotonで実行されます。Unity Webplayer, FlashやSilverlight等のWebplayerプラットフォームはサーバーに接続する前に認証を求めます。
Quantumは、弊社最新の予測ロールバックネットワーキングソリューションです。
リージョンという用語は、Photon Cloudがホスティングされている場所を指します。
リライアブル(信頼できる)コマンドは相手側に到達するか、タイムアウト切断のいずれかの処理をします。コマンドはチャンネル毎に順序付けられており、リライアブルコマンドが一時的にない場合は送信が滞ります。
byte値の形での各操作の第1の結果です。
操作が問題なく(RC_OK == 0)行われたか、またはどのエラーが発生したかををチェックすることができます。
プレイヤーは対戦をしたりコミュニケーションをするためにRoomで接触します。Room外でのコミュニケーションはできません。クライアントは一つのルームでしかアクティブでいられません。
PhotonのRoomには次のプロパティやメソッドがあります:
- Room名を指定してRoomの作成又は参加をする。
- RoomやプレイヤーのCustom Properties を設定する。
- 最大プレイヤー数を定義する。
- 非表示 (Lobbyでは表示されない)または表示。
- クローズ(誰も入れない)又はオープン。
Remote Procedure Call(リモートプロシージャーコール)の省略。
Operation (サーバー上のメソッドの呼び出し)を指す場合もありますが、通常はPUNゲーム内のリモートクライアントで呼び出す際の方法を指します。
送信されたコマンドをリクエストに応じて信頼性を持たせるUDP上のプロトコルです。
リライアブルなUDPです。
UDPの上にあるプロトコルで送信されたコマンドを必要に応じてリライアブルにします。
送信者はリライアブルなメッセージを肯定応答まで送り続けます。
Photon Coreの同義語です。
eNetを利用し、クライアントとサーバーは他方が Reliableコマンドを認識しているかどうかを監視します。これらのACKが長時間失われると、接続が失われたものと判断します。
ターンベースのゲームとは、プレイヤーにターンが回ってくるタイプのゲームです。
交互にプレイしたり同時にプレイしたりします。つまり、多くの変数が可能になりまs。
これらのゲームは他のゲームと同じ湯尾に早く終了することもありますが、中には長くかかるものもあり、非同期ゲームプレイ設計が合うものもあります。
Unreliableコマンドは他方によりACKされません。Unreliableコマンドはチャンネル別に順序づけられますが、送信されると、順序が入れ替わる場合があります。
Photon Cloudは全てのタイトルを一つのゲームロジック(アプリケーション)を実行します。
内部でゲームをAppIdとGameVersionで分別しています。
Back to top