Webhook FAQ
ルームに再参加するには?
アクターは、クライアントSDKからOpReJoinRoom()
を呼ぶことで、無効化時刻のRoomOptions.PlayerTTL
ミリ秒前にルームに再参加できます。
無効化時刻とは、ルーム内でアクターが非有効化される時間です。
予期せずにアクターが切断した場合や、一時的にルームから(放棄することなく)退出した場合にルームはインアクティブになります。
ルームの新規作成時に、EmptyRoomTtl
をint.MaxValue
に設定するとどうなるでしょうか?
この設定は不可能で、Photon ServerはEmptyRoomTtl
をもっと低い値に修正すべき点を示すエラーを返します。
Photon ServerのEmptyRoomTtl
の閾値は60,000ミリ秒(1分)に設定されています。
この閾値を変更するには、LoadBalancing GameServerアプリケーション("deploy\Loadbalancing\GameServer\bin\Photon.LoadBalancing.dll.config")の設定ファイル内でMaxEmptyRoomTTL
を以下のように更新してください。
XML
<Photon.LoadBalancing.GameServer.GameServerSettings>
<setting name="MaxEmptyRoomTTL" serializeAs="String">
<value>60000</value>
</setting>
<!-- other settings -->
</Photon.LoadBalancing.GameServer.GameServerSettings>
リアルタイムゲームでの、EmptyRoomTtl
のベストプラクティス値は12秒(12,000ミリ秒)です。
Webhookはルームのステートを修正できますか?
簡潔に言えば、できません。
ただし、保存されたルームステートを読み込む場合には、_non binary top level_プロパティの一部を修正可能です。
ルームステートの保管や取得以外に、Webhookの使用法はありますか?
Webhookでは、多くの点を実現できます。
以下に一例を示します:
- Server側のオーソリテーティブなコード:
これは、特殊なゲームロジックをサーバー側でのみ実行する必要がある場合に役立ちます。 - ハッカーからの保護:
Webhookはチーティングの検知にも活用できます。
PathPropertiesおよびPathEvent Webhookは、サーバー側のコードからプレイヤーのアクションを管理するのに使用されます。 - サーバー側からプッシュ通知を送信:
PathEvent Webhookを使用するとプッシュ通知の送信が最適化され、サーバー側からインアクティブプレイヤーにのみプッシュ通知を送信できます。 - Photonのルームステート以外のゲームデータを保存:
Photonのルームプロパティまたはイベントキャッシュのみを、ゲームデータとして使用しなければならないわけではありません。 - 分析:
Webhookは強力かつ無償の分析サービスです。
トラッキング可能な統計は豊富で、ルーム作成、アクターの参加、ルームイベントなどがあります。
Webhookはルームイベントデータを修正したり、新たなPhotonイベントを送信することができますか?
いいえ、Webhookは受信イベントのデータを変更したり、その他のイベントを送信したりできません。
Webhookからカスタムルームプロパティにアクセスできますか?
簡単に言えば、できません。
しかし、Type=='Save'
Webhookの「PathEvent」、「PathProperties」、「PathClose」内で引数として利用可能なState
オブジェクトには、パブリックカスタムプロパティの読み込み可能な形式が含まれます(つまり、ロビーから見えます)。
アクターが退出した、またはアクターにインアクティブのフラグが立ったと認識すべきタイミングはいつでしょうか?
ゲームサーバーから切断されたすべてのPhotonアクターは、ルームを退出済みです。
問題となるのは、同一のアクターが意図的にルームを退出したのかどうかです。つまり、そのアクターが明示的にルームを「放棄」、「停止」、「退出」したのか否かが重要です。
もし意図的に退出したのならば、そのアクターはもうルームアクターの一員ではないため、ルームのActorListから削除されます。
反対に、そのアクターが一時的にルームを退出し、ルームに後で再参加することを希望している場合、そのアクターはInactive
、IsActive = false
またはIsComingBack
とマークされます。
ルームに参加し、かつ各ゲームサーバーに接続されているアクターは、常にActive
とみなされます。
アクターのステータスは、PathEvent WebhookでルームのActorListに表示されます。
詳細情報は、各セクションを参照してください。
ルームを放棄するには、OpLeave(false)
を放棄して、しばらくの間そのままにし、Disconnect() or OpLeave(true)
のみを使用する必要があります。
一部の種類のゲームに特有な「脱退」や「キレ落ち」などのシナリオの場合には、ユーザーは2つのアプローチのうち1つを選択できます。
補足情報は、PathLeave webhook セクションを参照してください。
0 <= PlayerTTL <= EmptyRoomTTL
でIsPersistent = true
と設定することは意味がありますか?
PlayerTTL
は、アクターがルーム内でインアクティブでいられる時間です。つまり、プレイヤーがどれくらいの間ルームから切断されたままでいられるか、という点です。ルームをPlayerTTL = 0
で作成する場合、プレイヤーが戻ってくることを想定する必要がありません。また、プレイヤーがルームに戻らないならば、プレイヤー向けにルームステートを保存する必要はありません。1人のインアクティブプレイヤーがいる場合に、ルームステートを保存するべきかどうかは設計上の判断となります。
補足情報は、PathLeave webhook セクションを参照してください。
Back to top- ルームに再参加するには?
- ルームの新規作成時に、Markdig.Syntax.Inlines.CodeInlineをMarkdig.Syntax.Inlines.CodeInlineに設定するとどうなるでしょうか?
- Webhookはルームのステートを修正できますか?
- ルームステートの保管や取得以外に、Webhookの使用法はありますか?
- Webhookはルームイベントデータを修正したり、新たなPhotonイベントを送信することができますか?
- Webhookからカスタムルームプロパティにアクセスできますか?
- アクターが退出した、またはアクターにインアクティブのフラグが立ったと認識すべきタイミングはいつでしょうか?
- Markdig.Syntax.Inlines.CodeInlineでMarkdig.Syntax.Inlines.CodeInlineと設定することは意味がありますか?