2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[UE4] 複数のOnlineSubsystemを併用する

Last updated at Posted at 2021-07-08

#1. 概要
 複数のOnlineSubsystemを併用・切り替えて利用することができます。例えば特定のプラットフォームサービスを使用しつつDedicated Serverで接続したいようなケースなどが1つの例として挙げられます。以下の図はもう少し分かりやすくしたものですが、例えばOSSSteamの一部のサービスとOSSNullの一部のサービスを併用したいケースでは以下のような構成になります。それぞれのOSSにはインタフェースを利用してアクセスするだけです。

2021-07-07_11h35_25.png

#2. 準備
 必要な設定は併用したいプラットフォームのOnlineSubsystemサービスを有効にするだけです。Pluginsから併用しようとするプラグインをすべて有効にしておきます。有効にするとゲームの起動直後に各OnlineSubsystemのモジュールを起動してオブジェクトを生成するようになります。
2021-07-07_14h26_59.png
 また、必要があればEngine.ini (DefaultEngine.iniまたはプラットフォームのEngine.ini)の"DefaultPlatformService"を設定したいプラットフォームサービスに変更してください。基本的にはプラットフォームで使用するサービス(AndoridであればGoogle, WindowsであればSteam)に設定されています。

DefaultEngine.ini
[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);
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?