7.1. PiaSession の概念

PiaSession の概念について説明します。PiaSession は様々な要素から構成されており、各要素の概念を理解しておくとプログラミングが行いやすくなります。

セッションとメッシュ

PiaSession の「セッション」とは、マッチメイクサーバー上のグループであるマッチメイクセッション(またはローカル通信のローカルネットワーク)と、お互いが P2P 通信接続状態となっている P2P メッシュネットワークを合わせたものに相当します。セッションの構築/参加処理を行うことで自動的にマッチメイクセッション/ローカルネットワークと P2P メッシュネットワークの構築/参加処理が行われます。PiaSession では P2P メッシュネットワークのことを単に「メッシュ」と呼びます。

図 7-1. セッションとメッシュ(インターネットマッチメイクの場合)

 

セッションを管理する場合は Session クラスを通して呼び出すセッション API を使用します。

警告:

メッシュを直接操作するメッシュ API が過去のコードとして残っていますがサポートされていません。セッション API  を使用してください。

参考:

セッション API は内部で NEX マッチメイク API を呼び出します。各機能の適切な使用方法を理解するために、NEX プログラミングマニュアルのマッチメイクの章も参照してください。

ジョイントセッション

PiaSession ではセッション同士をマッチメイクさせて複数のセッションを合流させる(足し合わせる)ことができます。合流させる場合、ジョイントセッションを使います。

ジョイントセッションでは、複数のセッションに参加している全てのステーションを、新規に作成するジョイントセッションに自動的に参加させることができます。元のセッションは存続しており、ジョイントセッションを破棄すると自動的に元のセッションに戻ります。ジョイントセッション機能により、例えば、チーム毎にセッションを作ってからチーム 1 とチーム 2 で一つのジョイントセッションを作って対戦する、といった遊びが可能となります。3つ以上のセッションを合流できますが、ジョイントセッションを他のセッションやジョイントセッションと合流することはできません。

 

ネットワークトポロジー

PiaSession で使用可能な各ネットワークトポロジーについて、接続イメージや特徴を説明します。説明中の「リレー送受信」「リレー接続」などの詳細は 7.10. 応用機能 - リレー通信機能 のページを参照してください。

フルメッシュ型ネットワークトポロジー

フルメッシュ型(完全接続型)ネットワークトポロジー、列挙子名 NetworkTopology_FullMesh です。このトポロジーの接続イメージを 図 7-2. NetworkTopology_FullMesh 接続イメージ に示します。

図 7-2. NetworkTopology_FullMesh 接続イメージ

フルメッシュ型のセッションへ参加中の各ステーションは、自分以外のステーション全てに対して直通の通信経路が確立していることが保証されます。

以下のような特徴があります。

  • 通信遅延が小さくなりやすい
  • あるステーションで障害が発生してもセッション参加中の他ステーションの通信への影響は小さい
  • セッション参加済ステーション数が増えるにつれ、セッション参加処理の成功確率が下がる
    (既にセッション参加中の他のステーション全員との接続が確立できなければ参加失敗となるため)

推奨通信仕様

以下のような通信仕様のアプリケーションでは、フルメッシュ型ネットワークトポロジーを推奨します。(あくまでも推奨であり、「これ以外の通信仕様では使用禁止」というわけではありません)

  • 少人数通信ゲーム(セッション参加ステーション数 4 以下)
  • 同期通信型ゲーム
  • 即応性が高いゲーム(格闘ゲームなど)

リレーメッシュ型ネットワークトポロジー

注意:

リレーメッシュ型ネットワークトポロジーは PiaInet 使用時のみ利用可能です。

 

リレーメッシュ型ネットワークトポロジー、列挙子名 NetworkTopology_RelayMesh です。このトポロジーの接続イメージを 図 7-3. NetworkTopology_RelayMesh 接続イメージ に示します。

図 7-3. NetworkTopology_RelayMesh 接続イメージ

リレーメッシュ型のセッションでは、基本的に各ステーション間で直通の通信経路を確立させますが、一部の相手とはリレー送受信(転送)によって通信を行います。
通信経路がリレー接続となる相手は、セッション参加処理時に直通の通信経路が確立できなかった相手になります。(上記 図 7-3. NetworkTopology_RelayMesh 接続イメージ を例にとると、Client1-Client4, Client1-Client5, Client2-Client4, Client2-Client5 の組み合わせが、直通の通信経路が無いのでリレー接続となります)

セッション参加処理時に全てのセッション参加済ステーションと直通の通信経路が確立できた場合はフルメッシュ型と同等の接続状態になりますが、リレー接続およびリレー送受信用処理が動作している分、フルメッシュ型よりも若干システム用通信量が増えます。

以下のような特徴があります。

  • セッション参加済ステーション数が増えても、セッション参加成功率が下がりにくい
  • ホスト以外のステーションも転送依頼を受ける場合があるので一部クライアントの通信処理負荷は上がる可能性がある
    (リレー接続時の経路選択が通信遅延が小さくなりやすい通信経路を優先する仕様となっているため)
  • あるステーションに障害が発生した場合にそのステーションを転送依頼先としていた通信にも障害が発生することがある
    (一時的に通信断絶となっても別の転送依頼先を選定して復旧する可能性はある)

推奨通信仕様

以下のような通信仕様のアプリケーションでは、リレーメッシュ型ネットワークトポロジーを推奨します。(あくまでも推奨であり、「これ以外の通信仕様では使用禁止」というわけではありません)

  • 多人数通信ゲーム
  • 状態同期型ゲーム
  • 即応性がそれほど高くないゲーム(FPS、レースゲームなど)