Language:
The translation of this page is out of date. Please see the English version for the latest version of the page.

オンライン サブシステムの概要

バージョン:4.9

オンライン サブシステムとそのインターフェースは、ある特定の環境で利用可能なプラットフォーム一式にわたって共通のオンライン機能に明確な抽象化を提供するために存在します。 この文脈における プラットフォーム とは、Steam、Xbox、Facebook などを指します。 移植性は主要目的の 1 つです。

OnlineSubsystem モジュール

基本デザイン

基本モジュールの OnlineSubsystem は、プラットフォーム特有のモジュールの定義やエンジンへの登録方法の管理をします。 プラットフォーム サービスへの全てのアクセスはこのモジュールを通じて行われます。 このモジュールがロードされると、次にこのモジュールがエンジンの .ini ファイルで指定されたプラットフォーム サービス モジュールを読み込もうとします。

[OnlineSubsystem]
DefaultPlatformService=<Default Platform Identifier>
読み込みが成功すると、パラメータが指定されていない限り、デフォルトのオンライン インターフェースが静的アクセス制御機構を通じて利用可能となります。
static IOnlineSubsystem* Get(const FName& SubsystemName = NAME_None)
適切な識別子と一緒にこの関数から呼ばれた時に、追加サービスがオンデマンドで読み込まれます。   モジュールを読み込みに無効な識別子または失敗は、 NULL を返します。  

Delegate の使用

アンリアル・エンジン 3 (UE3) 同様に、オンライン サブシステムは非同期的な副作用を伴う関数の呼び出し時にデリゲートを大いに利用します。 さらなる関数を呼び出す前に、適切なデリゲートの呼び出しを待機し、デリゲートを尊重することは重要です。非同期タスクを待機しなかった場合、クラッシュ、予想外および非定義されている動作の原因となります。 ケーブルを引っ張ったり、他の切断イベントとなる接続エラー発生時は特にデリゲートの待機が重要となります。 タスクの終了に必要な時間は理想的には瞬時ですが、タイムアウトのケースでは約 1 分間ほどかかる場合もあります。

デリゲート インターフェースは、各デリゲートがそれぞれのインターフェース ヘッダ上部にて明確に定義されているため、比較的理解しやすいです。 すべてのデリゲートは、 Add 、 Clear そして Trigger 関数を持ちます (デリゲートを手動でトリガーすることは推奨されていません)。 一般的な方法は、適切な関数を呼ぶ直前にデリゲートの Add() を実行して、そこからデリゲートを Clear() します。

インターフェース

すべてのプラットフォームが全てのインターフェースを実装しているとは限らず、ゲームコードも結果に基づいて計画してください。

プロファイル

オンラインサービスのプロファイルサービスのインターフェース定義です。プロファイルサービスは、ユーザーのプロファイルおよびメタデータに関連付けにより定義されます (オンラインプレゼンス、アクセス許可など)。

フレンド

オンラインサービスのフレンドサービスのインターフェース定義です。フレンドサービスとは、フレンドのメンテナンスやフレンドリストに関連するものすべてのことです。

セッション

オンラインサービスのセッションサービスのインターフェース定義です。セッションサービスは、セッションとそのステートの管理に関連するものとして定義されます。

詳細は セッションとマッチメイク ページで参照してください。

共有クラウド

既にクラウドに存在するファイルを共有するためのインターフェースです (他のユーザーとの共有は ユーザークラウド 参照)。

ユーザークラウド

ユーザーごとのクラウドファイル保存スペースのインターフェースです。

成績表

オンライン成績表へアクセスするインターフェースです。

ボイス

ゲーム中にネットワーク上のボイス コミュニケーションを提供するインターフェースです。

実績

読み込み/書き込み/実績のアンロックを提供するインターフェースです。

外部 UI

任意のプラットフォームの外部インターフェース (利用可能な場合) へアクセスするインターフェースです。