Multiplayer

There are 2 ways to do multiplayer in the plugin. Both are server authoritative: the edits happen on the server & are then synced to the clients.

Manual Multiplayer

Available in both free and pro.

Uses RPCs to synchronize a list of edit "actions" (eg, add sphere at X Y Z).

Does not currently support join-in-progress and save sync, but should be possible with a careful splitting of the binary data to fit into RPCs.

Will work on anything that supports Unreal networking (Steam...)

Setup

Check the example

TCP Multiplayer

Available only in pro.

Uses a custom TCP socket to replicate the edits made on the server to the client at the voxel level.

The client sends RPCs to the server to make the edits (eg, add sphere here), but the edit themselves do not need to be deterministic since they only happen on the server.

Supports join-in-progress and save synchronization.

Since the voxels are synchronized and not the edits, the bandwidth usage will be higher: this is however not a real issue as TCP sockets perform much better than Unreal RPCs at sending large amount of data.

Requires the server ports to be open, so won't work on Steam.

Setup

You will need to tick Enable Multiplayer and do the following setup in your voxel world BP:

Additionally, make sure to not edit the client voxel worlds but to send RPCs to the server instead.

See /Voxel/Examples/Multiplayer/Tcp/VoxelWorldExample_Multiplayer_Tcp for an examples.

Examples

Examples for both of these are located under Voxel/Examples/Maps/Multiplayer/

Tool Determinism

For manual multiplayer, tools need to be deterministic.

For Trim and Flatten, additional rays are emitted when editing, making them not deterministic.

Any other tool should be deterministic as long as you use Apply Tool to make the actual edit, like in the example.

Last updated