プロフェッショナルXMPPの全484ページを読んで、ロスト+ XMPPに関する数え切れないほどのフォーラムスレッドを読んだことがあります。この疑問はまだ解くのに苦労しています。私はベストプラクティスの洞察を探しているので、少なくともどの方向に入るかを知っています。XMPPマルチプレイヤーゲーム:相手を名簿の連絡先として保存する必要がありますか?
私はクロスプラットフォーム(ウェブ、iOS & Xbox)のターンベースのボードゲームを構築しています。各プレイヤーは、最大100種類のマッチを任意の時点でアクティブにすることができます。そのため、1つのゲームからスキップすることができます。
ゲームには、アクティブなゲームのリストが表示され、そのゲームの相手の名前とオンラインステータスが表示されます(対戦相手は3人まで、ゲームあたり合計4人までです)。
さらに、各プレイヤーは、オンライン状態を示す別の領域からアクセスできるフレンドリストを持ちます。
私はプレイヤーには完全に透過的なXMPPを使用していますが、誰もJabberクライアントなどでサインインすることはありません。私は情報がどのように表示され利用されているかを完全に制御しています。
XMPPを使用して解決する主な側面は、対戦相手が移動したときの通知、友だちのオンラインステータスの表示、相手のオンラインステータスの表示、ゲーム内のテキストチャットです。
ここで私は問題が発生します:友人のリストはあなたの名簿の連絡先になるはずですので、オンライン状態を見ることができます。しかし、相手はどうですか?これらは通常ランダムな対戦相手であり、あなたは一度だけ試合を行い、もう一度試合を繰り返すことはありません。しかし、あなたとの試合は2週間まで続くことがあります。
すべてが舞台裏であることに注意してください(例:自動定期購読確認など) - ゲームの進行中に各対戦相手をあなたの名簿の別のグループに追加してから削除することをおすすめしますゲームが完了した後にそれらは?そうすれば、そのプレイヤーがオンラインのときにプレゼンス通知を受け取ることができます。あるいは、これはPubSubを利用できるケースですか?
マルチユーザチャットの使用も検討されていますので、いつでもサブスクリプションなしですべてのユーザーのオンラインステータスにアクセスできますが、オンラインで最大20k人のプレイヤーがオンラインになる可能性は非常に低いようです。間違いなく、携帯電話のバッテリー豚のようにも聞こえます。
私の他の解決策は、株価リストを使用することです。各ゲームの名簿リストを作成し、そのリストを各プレイヤーに割り当てます。その後、ゲームが完了したら共有名簿リストを削除します。
使用しているXMPPサーバーはどれですか? – Alam
現時点でのejabberd2の最新安定版です。昨晩ダウンロードしてインストールしましたが、私は何かに切り替えるために開いています。 –