Language:
Page Info
Engine Version:

Online Subsystem Overview

Choose your OS:

The Online subsystem and its interfaces exist to provide a clear abstraction to common online functionality across the available set of platforms in a given environment. Platforms in this context would refer to Steam, Xbox Live, Facebook, etc. Portability is one of the main goals.

OnlineSubsystem module

Basic design

The base module OnlineSubsystem is responsible for regulating how platform specific modules are defined and registered with the engine. All access to a platform service will go through this module. When loaded, this module will in turn try to load the default platform service module specified in the engine.ini file.

[OnlineSubsystem]
DefaultPlatformService=<Default Platform Identifier>

If successful, this default online interface will be available via the static accessor when no parameter is specified.

static IOnlineSubsystem* Get(const FName& SubsystemName = NAME_None)

Additional services are loaded on demand when called from this function with the proper identifier. Invalid identifiers or failures to load the module will gracefully return NULL.

Use of Delegates

Much like Unreal Engine 3 (UE3), the online subsystem will make heavy use of delegates when calling functions with asynchronous side effects. It is important to respect the delegates and wait for the proper delegate to be called before calling functions further down a chain. Failure to wait for an asynchronous task can cause crashes and unexpected, undefined behavior. Waiting for delegates is especially important during connectivity failures such as a cable pull or other disconnect events. The amount of time a task may take to finish may seem instantaneous in the ideal case, but can be upwards of almost a minute in the timeout case.

The delegate interface is fairly straightforward, with each delegate clearly defined at the top of each interface header. Every delegate has an Add<DelegateName>, Clear<DelegateName>, and Trigger<DelegateName> function (although Triggering delegates manually is discouraged). Common practice is to Add() the delegate right before calling the appropriate function, and then Clear() the delegate from within itself.

Interfaces

Not all platforms will implement all interfaces and game code should plan accordingly.

Profile

Interface definition for the online services profile services. Profile services are defined as anything related to a given user profile and its associated metadata (online presence, access permissions, etc).

Friends

Interface definition for the online services friends services. Friends services are anything related to the maintenance of friends and friends lists.

Sessions

Interface definition for the online services session services. Session services are defined as anything related managing a session and its state.

Details can be found on the Sessions and Matchmaking page.

Shared Cloud

Provides the interface for sharing files already on the cloud (see User Cloud with other users).

User Cloud

Provides the interface for per user cloud file storage.

Leaderboards

Provides the interface for accessing online leaderboards.

Voice

Provides the interface for voice communication over network while in the game.

Achievements

Provides the interface for reading/writing/unlocking achievements.

External UI

Provides the interface for accessing a given platform's external interfaces if available.