Unreal Multi-User Editing Plugin
What is this?
The Multi-User Editing plugin is a plugin for Unreal Engine 4 developed by Epic Games. It uses a client-server model to synchronize states between multiple instances of the project, whether that project is running in the Unreal Editor or in a packaged export. A single server can host any number of clients. This plugin can be used to collaborate on development of the same project, or it can be used to make a basic multi-user app.
This plugin is particularly useful for visualization apps, since you want the state of the environment to sync between all members in the session, even when a user edits the environment in some way. This plugin focuses on "magically" discovering and connecting to a server on the same LAN via multicast/unicast.
For more information, read the overview on the official docs.
Warning
The Multi-User Editing plugin is designed to be used between multiple workstations on a LAN that are collaborating on building an Unreal project, though it can be used for multiplayer apps in games in shipping mode (not recommended with my experience).
My experiences with using the Multi-User Editing plugin were not spectacular, so while I wouldn't say that it has no use, I would urge you to look elsewhere if you want to make a multi-user VR app that operates over WAN. I never ended up getting my configuration to work beyond a local LAN network. I included details of my failed attempts below.
Configuration Explanation
In Unreal Editor, open the project settings by clicking "Edit > Project Settings". Scroll to the "Plugins" category and select the "UDP Messaging" tab.
Ensure that "Enable Transport" box is checked.
The Unicast Endpoint defaults to "0.0.0.0:0". Note that this is not a server IP address nor a client IP address! Specifying an IPv4 address here will instruct Unreal to use a particular network adapter on your computer to send/receive packets from (in case your computer has multiple active connections at the same time). This should be unnecessary to set, since the default option will discover your PC's default networking adapter. If you set your networking adapter manually, it will use only that networking adapter. You can also specify the port the communication should take place on (strangely this can vary from the server port). The port should only be between the range 50000-60000.
Note: In my attempts I was never able to manually set a Unicast Endpoint.
The Multicast Endpoint determines what address multicast packets are sent to.
Note: In my attempts I never modified this from the default.
You may click the down arrow to expand the category to show advanced options. Described below are items that are advanced options.
You may optionally specify specific static endpoints. You can specify the IP address and port of the server as a static endpoint. This is necessary if your clients are on a different subnet from the server (they still need to be on the same LAN!)
Click the plus and enter the IPv4 address in the format 1.2.3.4:port
ALTERNATIVELY, you can modify the same configuration settings (with some additional granularity) in the ini file.
In Visual Studio, open the file called "DefaultEngine.ini". Alternative you can open the "*Engine.ini" file specific to the platform you are targeting (i.e., Windows).
Fill in the settings in the configuration file (the same explanations from above apply here).
Experiments / Failed Attempts
This plugin requires all devices operate on the same LAN. I attempted to port forward and change firewall settings, then manually specify the server IP address on all the clients, but this proved to be ineffective.
Hypothetically, multiple devices connecting to the same VPN should make them appear on the same LAN. In practice, this seemed to not function, either due to some limitation with the Paperspace virtual machines, with some configuration in the OpenVPN server, or some other limitation with the plugin.