#1. 概要
複数のOnlineSubsystemを併用・切り替えて利用することができます。例えば特定のプラットフォームサービスを使用しつつDedicated Serverで接続したいようなケースなどが1つの例として挙げられます。以下の図はもう少し分かりやすくしたものですが、例えばOSSSteamの一部のサービスとOSSNullの一部のサービスを併用したいケースでは以下のような構成になります。それぞれのOSSにはインタフェースを利用してアクセスするだけです。
#2. 準備
必要な設定は併用したいプラットフォームのOnlineSubsystemサービスを有効にするだけです。Pluginsから併用しようとするプラグインをすべて有効にしておきます。有効にするとゲームの起動直後に各OnlineSubsystemのモジュールを起動してオブジェクトを生成するようになります。
また、必要があればEngine.ini (DefaultEngine.iniまたはプラットフォームのEngine.ini)の"DefaultPlatformService"を設定したいプラットフォームサービスに変更してください。基本的にはプラットフォームで使用するサービス(AndoridであればGoogle, WindowsであればSteam)に設定されています。
[OnlineSubsystem]
DefaultPlatformService=Null
#3. 利用方法
OnlineSubSystemは
DefaultPlatformService
で登録されたものを利用するようになっており、
IOnlineSubsystem::Get();
でSubsystemへアクセスした際に利用されるものがこれに該当します。
複数のOSSを有効にしている場合は、
IOnlineSubsystem::Get(OSSName);
のようにOSSを直接指定して利用できるのでSubSystemを切り替えてアクセスすることができます。
IOnlineSubsystem::Get(NULL_SUBSYSTEM);
IOnlineSubsystem::Get(EOS_SUBSYSTEM);
のような指定でNullSubsustemとEOSSubsystemを参照できます。DefaultPlatformは.iniで指定されたDefaultPlatformServiceを参照するだけなので、起動時に設定するのみとなっています。そのため、プラットフォームを切り替えるというよりは、必要な時にプラットフォームサービスを指定するといった利用方法となります。プラットフォームの名称はOnlineSubsystemNames.hを参照してください。
例えばセッションの作成したりマッチメイキングをするにしても、まずはサブシステムを取得する必要があるので以下のようにサブシステムを取得します。
IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get();
この方法で取得できるのはデフォルトプラットフォームのサブシステムなので、明示的にOSSNameを指定して取得するだけです。
IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get(EOS_SUBSYSTEM);