1.1. 各モジュールの概要

Pia の主要モジュール(ライブラリ)の階層図です。

以下に各モジュールの概要を示します。

PiaCommon

PiaCommon は全モジュールに共通の機能(メモリ管理など)を提供するモジュールです。それぞれのモジュールで共通機能を共有するためのモジュールであり、アプリケーションから直接使用する機能は一部のみとなります。

以下の機能が含まれています。

  • メモリ管理
  • ディスパッチ(定期的)処理を行うスケジューラ
  • エラー処理
  • デバッグ用ログ出力機能

各機能についての詳細は「2. PiaCommon 編」を参照してください。

PiaLocal

PiaLocal はローカル P2P 通信機能を提供するネットワーク管理モジュールです。SDK の UDS ライブラリを拡張し、より高度な機能を使用することが可能になります。

以下の機能が含まれています。

  • PiaSession を使用してローカル通信を行うための UdsNetworkFactory
  • ローカルネットワークホストが切断してもネットワークを継続できるホストマイグレーション

  • 通信中に周辺のネットワークを検索できるアラウンドネットワークサーチ

PiaLocal は内部で CTR-SDK の UDS ライブラリを使用しています。UDS ライブラリを直接使用しなくても、PiaLocal を使用するだけで同等のパフォーマンスを実現することができます。ただし、UDS ライブラリの受信専用子機(Spectator)には対応していません。

各機能についての詳細は「3. PiaLocal 編」を参照してください。

採用タイトルの例:[Switch] スプラトゥーン2、[Switch] ARMS、[Switch] マリオカート8デラックス、[3DS] ゼルダの伝説 トライフォース3銃士、[3DS] とびだせ どうぶつの森、[3DS] New スーパーマリオブラザーズ 2、[3DS] 大乱闘スマッシュブラザーズ

PiaInet

PiaInet はインターネット P2P 通信機能を提供するネットワーク管理モジュールです。NEX サーバーサービス、PiaSession を組み合わせて使用します。

以下の機能が含まれています。

  • PiaSession を使用してインターネット通信を行うための NexNetworkFactory
  • NEX サーバーサービスと連携した NAT トラバーサル機能
  • NEX マッチメイクと連携したホストマイグレーション

各機能についての詳細は「4. PiaInet 編」を参照してください。

採用タイトルの例:[Switch] スプラトゥーン2、[Switch] ARMS、[Switch] マリオカート8デラックス、[Wii U] スプラトゥーン、[Wii U] マリオカート8、[3DS] とびだせ どうぶつの森、[Wii U/3DS] 大乱闘スマッシュブラザーズ

PiaLan

PiaLan は LAN P2P 通信機能を提供するネットワーク管理モジュールです。ゲームサーバーを使用せず同じルータ下に存在する端末間でセッションを構築することができます。PiaSession と組み合わせて使用します。

以下の機能が含まれています。

  • PiaSession を使用して LAN マッチメイクを行うための LanNetworkFactory
  • ブロードキャスト転送を使用したマッチメイクセッションの管理

各機能についての詳細は「5. PiaLan 編」を参照してください。

採用タイトルの例:開発効率のために多くのタイトルで開発中に使用されています。

PiaTransport

PiaTransport は様々な送受信機能を提供するトランスポート管理モジュールです。PiaSession と組み合わせて使用します。

以下の機能が含まれています。

  • 到達保証を行わない UnreliableProtocol
  • 到達保証を行う ReliableProtocol
  • ホストから複数のクライアントに効率よくデータ転送を行う ReliableBroadcastProtocol
  • パケットバンドリング、キープアライブ、RTT 測定
  • 署名、暗号化機能
  • ゲーム通信を分析するための TransportAnalyzer

各機能についての詳細は「6. PiaTransport 編」を参照してください。

PiaSession

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

以下の機能が含まれています。

  • インターネット通信マッチメイクセッションと P2P メッシュネットワークを一括して管理できるセッション機能
  • ローカルネットワークと P2P メッシュネットワークを一括して管理できる機能
  • セッションホストが切断してもセッションを継続できるホストマイグレーション
  • NAT トラバーサルに失敗してもセッションに参加できるリレー通信機能(インターネット通信のみ対応)
  • NEX マッチメイクのオートマッチメイク機能と同等のランダムマッチメイク機能(インターネット通信、及び LAN 通信時のみ対応)
  • セッション同士をマッチメイクすることでチーム同士のマッチメイクを可能にするジョイントセッション機能(インターネット通信のみ対応)

インターネット通信時には内部で NEX マッチメイク API が呼び出され、ローカル通信時には内部で SDK のローカル通信ライブラリの API が呼び出されます。各機能についての詳細は「7. PiaSession 編」を参照してください。

PiaSync

PiaSync は入力同期通信(ステーション間でキー入力を共有する方式のゲーム通信)のための機能を提供するモジュールです。

以下の機能が含まれています。

  • PiaSession を使用して入力同期通信(キー入力だけでなく任意のデータを使用可能)を行うための SyncProtocol
  • 通信帯域の増加を必要最小限に抑えながらパケットロス耐性を向上させる冗長パケット補間機能
  • 遅延バッファの動的変更機能

各機能についての詳細は「8. PiaSync 編」を参照してください。

採用タイトルの例:[Wii U] Wii Sports Club、[3DS] ゼルダの伝説 トライフォース3銃士、[3DS] New スーパーマリオブラザーズ 2

PiaClone

PiaClone は状態同期通信(ステーション間でゲームオブジェクトの状態を共有する方式のゲーム通信)のための機能を提供するモジュールです。

以下の機能が含まれています。

  • 状態同期の全体を管理するための CloneProtocol
  • 状態を共有するための UnreliableCloneElement、ReliableCloneElement
  • イベントを通知するための EventCloneElement
  • 状態の送受信を行うための SendClone、ReceiveClone
  • ステーション間で状態の変更権を排他処理(ロック)するための AtomicSharingClone
  • 状態の変更権に制限のない送受信を行うための SequentialSharingClone
  • ステーション間の時刻同期機能

各機能についての詳細は「9. PiaClone 編」を参照してください。

採用タイトルの例:[Switch] スプラトゥーン2、[Switch] ARMS、[Wii U] スプラトゥーン

PiaReckoning

PiaReckoning は PiaClone 上で推測航法によって状態(位置情報など)を補間するための機能を提供するモジュールです。

以下の機能が含まれています。

  • 推測航法によって状態を補間することでゲーム通信量を削減するための ReckoningCloneElement
  • 3次元位置情報を推測するための Simple3dReckoningStrategy

各機能についての詳細は「10. PiaReckoning 編」を参照してください。

PiaChat

PiaChat  はボイスチャット機能を提供するモジュールです。

以下の機能が含まれています。

  • セッション参加者全員が同時に会話できるカンファレンス機能
  • 無音状態を検知し、通信量を削減するための VAD (Voice Activity Detection) 機能
  • エコーキャンセル機能

各機能についての詳細は「」を参照してください。

採用タイトルの例:[Wii U] マリオカート8

PiaFramework

PiaFramework は他のモジュールの機能を統合するモジュールです。PiaSession のセッション管理、PiaTransport の通信機能、SDK や NEX の初期化など必須となる機能を統合した API を備えており、処理の自動化によってゲーム開発期間を短縮することができます。

別途用意している PiaUnity では PiaFramework API を使用しています。

以下の機能が含まれています。

  • ネットワークインターフェイスの初期化、ゲームサーバーへのログイン、PiaSession によるセッション参加などを自動的に行う機能(Framework::ChangeStateAsync)
  • ネットワークインターフェイスの接続状態、ゲームサーバーとの接続状態、セッションの接続状態のチェックを 1 つの API で行う機能(Framework::Update)
  • PiaTransport のアンリライアブル、リライアブル通信機能(Framework::SendUnreliable、Framework::SendReliable)
  • PiaSync による入力同期機能(Framework::SyncStep)
  • PiaClone による状態同期機能(Framework::GetCloneProtocol)

各機能についての詳細は「11. PiaFramework 編」を参照してください。