Technical overview

Note that the remote viewers system is currently in beta. If you would like to use it an event please get in touch with us first so that we can help you get set up

How does it work?

The remote viewers system consists of a few parts:

1) A remote viewer client running in your world

This client is what enables web users to be visible in an M2 world, even though they are not running an Unreal Engine client instance themselves. This single client is responsible for spawning avatars and carrying out actions on behalf of them when requested, such as emoting. Note that this client is a single instance running in the cloud, and handles the messages for everyone interacting with the event from the web page

2) Web Integration

When the system is enabled, the M2 web portal periodically sends "presence" messages, via one of our services, to the remote viewer client for the world. These are sent as long as a user is watching a stream.

When the remote viewers system is enabled, Millicast streams on an event's M2 web portal include additional UI for triggering actions, such as emotes.

If you would like to customise the actions that can be triggered from the web, please get in touch for additional help and documentation!

Unreal implementation

There are a few key actors and components in Unreal which are core to the system

  • M2M_RemoteViewerSpawnerComponent

    • A component which is attached to the spawner singleton object for your project and is responsible for spawning master and visualizer actors.

    • Contains configurable properties for controlling which classes are spawned

  • M2M_RemoteViewerMasterActor

    • This is the parent class for the "master actor" which is the main coordinator of the system. A single instance of this class is spawned automatically by the remote viewer client when it starts up (configured in spawner class, shown above)

    • It is responsible for the spawning and despawning of "visualizer actors" (configured in spawner class, shown above) in response to messages that are received from the web platform when a user is watching a stream.

      • Spawn logic is triggered whenever a message is received with a UserId which does not already exist in the world

      • Despawn logic is triggered when a message relating to a given user has not been received for a configurable period of time

This works roughly as follows:

  1. Remote viewer client is started

Master actor is spawned in the world

Last updated