CREW EXP Template - CREW-Brussels/EXP GitHub Wiki
The EXP Template is a ready-to-use Unreal Engine 5.3 project that contains all of our submodules developed within the EXP Framework, which is designed for multiplayer, embodied XR experiences. Feel free to use and experiment with it!
This project is ideal for LBX (Large-Base Experiences). It is perfect for a performer and a Unreal/VR technician duo.
All of the assets developped here are in the Plugins folder of this template. For more details on how all of the submodules work, visit our EXP page or our wiki!
EXP_Template contains the following submodules developed by CREW:
Requirements:
- Unreal Engine 5.3
- Download
- Download the two following plugins in the Plugins folder:
- Your headsets are set up with LBE tracking maps.
This project comes with a multiplayer demo, with 1 performer and multiple immersants
A typical demo using this template involves the following situation:
- A performer wearing a motion capture suit and a headset with controllers.
- Other VR players (immersants) can participate in the experience and observe the performer.
- The performer, who is invisible at first, can modify and duplicate their avatar with different triggers and buttons on the controller using the CHORUS animation subsystem (developed later).
The server (main computer with Unreal Editor), should be in Play mode.
To make sure that multiplayer works, please make sure in Playmode settings (the three dots on the right of the viewport play buttons), that the Net Mode is set to Play As Listen Server. This will allow receiving data from the server, and so trackers and other headsets information.
You should also check that the Gamemode, by clicking on the blueprint class logo, make sure that the world override is using a gamemode with your VR Player.
Set up a multiplayer experience, with multiple clients (the players, meaning the immersants and performer in that case) and a server
The project is already set up with the CREW Network Framework plugin, but you can get to understand more how it works in the documentation. It will always work as long as all the application name in the settings and ports are the same, and that they are connected on the same network.
Method 2: Building the app and making a local shortcut of your .exe app to allow it launching to your computer and device
- Platforms➝Windows➝Package project
- Once your build is done, click right on the .exe app, and create a shortcut (right click ➝ more options)
- Add ":17777" at the end of the target of the project shortcut
- Open Vive business streaming on your headset
- Play on the Viewport button in unreal
- Open the shortcut .exe app
to use the unreal editor for something else, while a project is playing
- Platforms➝Windows➝Package project
- Once your build is done, click right on the .exe app, and create a shortcut
- Add "?listen?port="
- Open Vive business streaming on your headset
- Play on the Viewport button in unreal
- Open the shortcut .exe app
Package an app with Android ASTC:
- first install the Android SDK following Unreal's documentation on this topic: https://dev.epicgames.com/documentation/en-us/unreal-engine/how-to-set-up-android-sdk-and-ndk-for-your-unreal-engine-development-environment?application_version=5.3
- Package your app. If there any errors try the following steps: kill all of your Unreal Editors in the Task Manager, delete the Intermediate folder in your project, open the project again and try to rebuild it.
In embbed on the headsets, the app can't be too heavy.
In this template, we can't publish the Motion Capture assets as we don't own them. We used a recorded animation sequence, but you could replace it in the ABP_Rebroadcaster.
Here, since it's the ABP sending the animation data, you can replace the node with a MVN Live Link Pose with a MVN Retargeter and T-Pose (in the case you're using an Xsens suit) or an other node depending on what MOCAP technology you use.
In this example, the sent data is received in the ABP_Performer.
Once you launch the server, in the server editor mode, you able to chose which one of the player connected, in our case the person wearing a mocap suit, is the performer.
- Select the performer player in the server editor mode. The VR Player 0 is the server by default.
- search role
- click on the button is performer. There is also a button is immersant but every player is immersant by default.
In this example, we are uing an echo manager (echos are the iterations triggered by the performer with the left trigger in that case) and crowd manager (crowd is the population of recorded and replayed avatars created by the performer).
Always make sure the Bluprint of your perforer is linked to the following blueprints from Chorus like on the picture: BP_ChorusEchoManager and BP_ChorusCrowdManager. Otherwise the performer's tools won't work.
You are able to modify the settings of the crowd and echoes with BP_ChorusEchoManager and BP_ChorusCrowdManager that are in your scene. The pool size is the number of avatars that will be generated either for the echoes or the crowd.
The performer has the following buttons:
- Right Trigger: Launch and unlaunch the echoes
- A button: Posses the closest crowd avatar. If the performer is already posssessing one, it will make them unpocess it.
- B button: Record crowd. If the peformer is already possessing an avatar:
- 1 clic: Start recording
- 2nd clic: Stop recording or
- First use the Posses button to unpocess and then play recording
- X button: Spawn Crowd until the maximum capacity of the crowd pool
- Y button: Discard crowd, delete 1 by 1 the crowd avatars of the performer. If the performer was possessing an avatar, it will first make it invisible and then delete the closest crowd avatars.
- Right thumbstick up: Increase the speed of your last recording
- Right thumbstick down (or left thumbsitck for Cosmos and Focus3 controllers): Decrease speed of your last recording
- Right trigger: Change the visibility of the immersants. They will however still see each other at a minimum distance, so they don't bump into each other. The performer will always see them but the mesh will look different when the immersants are unvisible to one another.
For this, you should follow CIRCA's documentation.

EXP Template is being developed by CREW as part of EMIL, the European Media and Immersion Lab, an Innovation Action funded by the European Union and co-funded by Innovate UK.
This project has received funding from the European Union's Horizon Europe Research and Innovation Programme under Grant Agreement No 101070533 EMIL.