大部屋セッションから小部屋セッションへ移動する方法について

お世話になっております。

Listen Serverを利用して複数人が参加する大部屋セッションから、1vs1対戦を行う小部屋セッションへ移行させる仕組みを検討しているのですが、
大部屋セッションに参加したクライアントが、新たに小部屋セッションを作成することは可能でしょうか?

また、大部屋セッションを作成したホストが、新たに小部屋セッションを作成した場合のホストの移譲は可能でしょうか?

よろしくお願いいたします。

1 Like

お世話になっております。
大部屋セッションに参加したホストを維持してクライアントと共に小部屋セッションに移動することはSeamlessTravelによって実現可能ですが、大部屋セッションを作成したホストが新たに小部屋セッションを作成した際のホストの移譲機能に関しては、恐れ入りますがサポートされていない機能となります。
よろしくお願いします。

ご返答ありがとうございます。

ホストを維持してクライアントと共に小部屋セッションに移動することはSeamlessTravelによって実現可能

上記についてなのですが、大部屋セッションに8人接続しているとして、そのうちの2人だけを小部屋セッションに移動させたい場合も実現可能ということでしょうか?

ホストの移譲機能に関しては、恐れ入りますがサポートされていない機能となります

こちら、大部屋セッションに接続している残りのクライアントは自動的に解散するということで合っていますでしょうか?
また、ホストが居なくなった場合や、ホスト含め8人全員が小部屋セッションへ移動した場合、大部屋セッションを維持する方法はありますでしょうか?

以上、よろしくお願い致します。

ご返答ありがとうございます。

Dedicated Serverの方が適している(Listen Serverにおいては実現できない)と思われます。

こちらに関して、Dedicated Serverの仕組みを使用して複数人参加型の大部屋セッションを作成し、
参加したクライアントの内2人を、Listen Serverの仕組み使用して、ホストとクライアントとして1vs1の小部屋セッションを作成するといったことは可能でしょうか?

以上、よろしくお願い致します。

ご返答ありがとうございます。
頂いた情報をもとに検証を進めていこうと思います。
ご教授いただきありがとうございました。

大部屋セッションに8人接続しているとして、そのうちの2人だけを小部屋セッションに移動させたい場合も実現可能ということでしょうか?

SeamlessTravelは基本的には接続された全てのClientと共に移動するため8人接続の場合は8人が移動することになります。この時、ホストは以前と同じ状態を継続します。2人(ホスト[サーバー]とゲスト[クライアント])だけを移動する場合は、移動しないクライアントを切断する必要があります。

大部屋セッションに接続している残りのクライアントは自動的に解散するということで合っていますでしょうか?

セッションに参加しているクライアントは、サーバーから切断される、クライアントから自律的に切断する、障害が発生する以外ではセッションから解放されないため、自動的に解散するという振る舞いとはなりません。ホストはセッションを作成してからセッションを終了するまで固定となるため、SeamlessTraveとは関係無く移譲することが現在は出来ないということになります。

また、ホストが居なくなった場合や、ホスト含め8人全員が小部屋セッションへ移動した場合、大部屋セッションを維持する方法はありますでしょうか?

この動作を実現するにあたってはDedicated Serverの方が適している(Listen Serverにおいては実現できない)と思われます。Listen Serverにおけるホストが居なくなった場合はセッションを維持することが出来ないため、全てのクライアントとの接続を解放します。よって、最初の「ホストが居なくなった場合」においてはセッションは維持することができません。

もう一方の「ホスト含め8人全員が小部屋セッションへ移動した場合」についてですが、結局のところ「大部屋セッション」を維持するホストが居なくなるということになるため、維持できないという回答になります。

よろしくお願いします。

こちらに関して、Dedicated Serverの仕組みを使用して複数人参加型の大部屋セッションを作成し、 参加したクライアントの内2人を、Listen Serverの仕組み使用して、ホストとクライアントとして1vs1の小部屋セッションを作成するといったことは可能でしょうか?

基本的に1つのクライアント/サーバーは複数のセッションを同時にハンドリングすることが出来ないため、一度セッションを生成/解放しない限りは次のセッションに対するアクションを実行することができません。これはNamedSessionに基づくセッション名をベースとしたセッション管理によるものですが、大部屋と小部屋のセッションにおいて、異なるセッション名を指定すれば実現できるかもしれません。例えば、上記の例ではDedicated Server(大部屋)のセッションをGameSession1、Listen Server(小部屋)のセッションをGameSession2と仮定して、Dedicated Serverに参加したClientからListent Serverのセッションを構築するということを意味しています(これは推測によるものであるためカスタマイズが必要かもしれませんが) 。

ローカルホストとなるDedicated Serverに対してクライアントから参加し、そのクライアントがListent Serverのセッションを生成して他のクライアントが参加できることは確認しているため実現不可ではないかと思っていますが、御社の希望のシナリオと完全に一致しているか分からないので、一度これがコンテンツに即したものかご検証頂くのがよろしいかと思います。