Online Subsystem とそのインターフェースは、Steam、Xbox Live、Facebook などのオンライン サービスの機能にアクセスする共通の方法を提供します。複数のプラットフォームで提供したり複数のオンライン サービスをサポートしたりするゲームを手がける場合は、Online Subsystem を使用すると、デベロッパーは各サービスのコンフィギュレーションの調整を行うだけで良くなります。
設計理念
Online Subsystem は、基本的にさまざまなオンライン サービスとの非同期通信を処理するように設計されています。ローカル マシンでは、ネットワーク通信速度、サーバー遅延、バックエンド サービスの実行時間がわからないことから、こうしたシステムとのやり取りにかかる時間を予測することはできません。この問題に対処するため、Online Subsystem はすべてのリモート操作に Delegates (デリゲート) を使用し、サポートする非同期機能を使用する度にこれらのデリゲートが確実に呼び出されるようにします。リクエストの最後に応答し、実行中のリクエストをクエリする機能を提供するだけでなく、デリゲートは従うべきコード パスを 1 つ提供します。これにより、デベロッパーが成功や失敗のさまざまな条件をキャッチするカスタム コードを記述する必要がなくなります。
モジュール式のサービス固有のインターフェースでは、サポートされている機能をまとめてグループ化します。たとえば、Friends Interface (フレンド インターフェース) はフレンド リストに関連するすべてを処理し、Achievements Interface (アチーブメント インターフェース) はアチーブメントのリスト、確認、得点などを処理します。それをサポートする各オンライン サービスの機能グループにはそれぞれインターフェースが存在します。しかし、サービスがサポートしていない特定の機能は単に false
を返します。この設計により、デベロッパーはすべてのオンライン サービスに対して同じコードを記述できます。
より高いレベルでは、 Online Asynchronous Task Manager (オンライン非同期タスク マネージャー) を用いたさらに複雑な操作を、シーケンス タスクや異なるスレッドで実行するタスクをサポートしています。非同期タスクは依存関係を記述できるため、関連性のないタスクは個別に並列で実行し、シーケンス タスクは連続して実行できます。Online Subsystem のインターフェースは、すべてこの方法でタスクをスケジュールして操作の一貫性を維持しています。
基本構造と使用方法
基本モジュールである OnlineSubsystem
は、サービス固有のモジュールを定義してエンジンに登録します。初期化中に、Online Subsystem は「Engine.ini」ファイルで指定されたデフォルトのオンライン サービス モジュールをロードします。オンライン サービスにはすべてこのモジュールを経由してアクセスします。
[OnlineSubsystem]
DefaultPlatformService=<Default Platform Identifier>
成功した場合、パラメータを指定しないときは静的アクセサーを介してデフォルトの Online Subsystem を使用できます。
static IOnlineSubsystem* Get(const FName& SubsystemName = NAME_None)
この関数呼び出しが要求すると、追加サービスをオンデマンドでロードします。識別子が無効な場合や、モジュールのロードに失敗すると、ただ null
を返します。
インターフェース
Online Subsystem には次のインターフェースが含まれています。
一部のインターフェースは、それぞれのサービスがサポートする機能に応じて特定のオンライン サービス専用となっています。
インターフェース | 機能グループの説明 |
---|---|
Achievements | ゲームのアチーブメントをすべて一覧にして、アチーブメントのロックを解除し、自分や他のユーザーのロック解除済みアチーブメントを確認します。 |
External UI | 特定のハードウェア プラットフォームやオンライン サービスの、ビルトイン ユーザー インターフェースを開きます。場合により、サービスはこのインターフェースを介して特定のコア機能へのアクセスを排他的に許可します。 |
Friends | フレンド リストへのユーザーの追加、ユーザーのブロックとブロック解除、最近出会ったオンライン プレーヤーのリストなど、フレンドやフレンド リストに関連するものすべてです。 |
Leaderboard | 独自のスコア (または時間) の登録などのオンライン リーダーボードへのアクセスや、リーダーボードで世界中のフレンド リストやプレイヤー スコアの確認を行います。 |
Online User | ユーザーに関するメタデータを収集します。 |
Presence | 「オンライン」、「退席中」、「ゲームをプレイ中」など、ユーザーのオンライン ステータスを他のユーザーに表示する方法の設定を行います。 |
Purchase | ゲーム内購入の実行と、過去の購入履歴の確認を行います。 |
Session | オンライン ゲーム セッションの作成、破棄、管理を行います。セッションとマッチメイク システムの検索も含みます。 |
Store | ゲーム内購入が可能なカテゴリと個別のオファーを取得します |
User Cloud | クラウド ファイル ストレージのインターフェースをユーザーごとに提供します。 |
Voice Chat (EOS) | Epic Online Services をボイス チャット プロバイダーとして使用します。 |