Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

  • Insert the CavrnusSpatialConnector actor in the level.

  • Manually implement calls to the Cavrnus API Functions.

CavrnusSpatialConnector class

The CavrnusSpatialConnector is a specialized actor class that collects all of the required configuration elements into one convenient location.

  1. Add an instance of the CavrnusSpatialConnector to your level by selecting it from the Cavrnus menu at the top of the Unreal Editor interface.

...

  1. Select the CavrnusSpatialConnector instance in the level Outliner.

...

  1. From the Details panel, configure all of your connection settings for this project:

...

CSC Configuration

...

As with any Unreal plugin, adding the Cavrnus Spatial Connector is a simple 3 step process:

Image Added

My Server:

This is the domain you registered with Cavrnus when you configured your account. Enter your company’s URL in this field. (e.g.

...

...

us)

Authentication Method:

Specify whether Guests can join a space anonymously using a hyperlink, or if a login is required by

...

an authorized team member in your domain.

AuthenticationMethod.pngImage Modified

Guests can join automatically with no authentication. This is recommended for delivering an experience to a wide audience, without the need for creating and managing a large number of temporary accounts.

  • Guests can only join spaces which have been configured to allow guests to join. (See

Creating and Managing Spaces).

...

  • Guests can only access

...

  • a Space through a hyperlink that has been provided to them.

...

  • These “guest accounts” can be used by multiple people simultaneously, but they do have a limited lifespan and will be deleted after the duration expires.

Guest Login Method: Select a method to identify the Guest user with a name while in the Space.

GuestLoginMethod.pngImage Modified

By selecting “Enter Name Below”, you can specify a name directly that will apply to all guests in the Space.

image-20240417-171440.pngImage Modified

Select “Prompt to Enter Name” to trigger a prompt when the Guest first enters the space. Note that this requires a Blueprint Widget to be selected as the prompt that will display. A default widget is provided with the Cavrnus Plugin files, but you can also create your own custom design.

image-20240417-171817.pngImage Modified
Note

Guest

...

Login is only available on the Cavrnus Dev Servers at the moment. It is coming to production shortly as described above.

Members are authorized users who have login credential on your domain. This method is recommended for controlling access to private or sensitive information.

Member accounts are persistent, and can either be given access to all Spaces, or to specific Spaces individually. When selecting “Join as Member”, there are two options for entering login credentials.

image-20240417-174056.pngImage Modified

Member Login Method: Select a method to identify the user as a Member with login credentials to verify access permissions to a Space.

Select “Prompt Member to Login” to trigger a prompt when the team member first enters the space. Note that this requires a Blueprint Widget to be selected as the prompt that will display. A default widget is provided with the Cavrnus Plugin files, but you can also create your own custom design.

image-20240417-174142.pngImage Modified

This method is useful for automated testing and for delivering bespoke applications to specific individuals. However, be mindful as this involves adding your password in plain text to your project.

image-20240417-174447.pngImage Modified

Note

...

Remember to delete login credentials from the CSC component when committing a project

...

to a public Git repo! If you accidentally push your login password to a public Git, be sure to change your password immediately.

Space Join Method:

If you have not yet created a Space for your users to join,

...

create one now.

Once a User is authenticated, you can immediately place them inside a pre-defined Space. To do this, select Automatic as your Space Join Method. You must then get the ID of the Space you wish them to join. This ID can be copied by clicking on the Join ID at the bottom of the Space thumbnail in the Spaces section of the Cavrnus Management Console.

image-20240417-175826.pngImage Modified

You can then Paste the Join ID into the given field.

image-20240417-175940.pngImage Modified

Alternatively you can simply present Users with a list of all the spaces they are currently allowed to join and let them pick one. Select “Spaces List” to trigger a prompt when the team member first enters the space. Note that this requires a Blueprint Widget to be selected as the prompt that will display. A default widget is provided with the Cavrnus Plugin files, but you can also create your own custom design.

image-20240417-180006.pngImage Modified

Info

Note: A Cavrnus Space will often be filled with Properties pointing to specific paths within your application. Therefore, allowing users to just open any Space could result in them bringing down a Journal that is meant to be for a different application.

Example: One of your users has access to a Car Configurator Application which connects to the “Car Config” Space. They also have access to a Conference Room Application. Allowing them to join the “Car Config” Space from the Conference Room Application would give them a bunch of car-related Properties which their Application wouldn’t know what to do with.

Avatars and Co-Presence:

...

Avatar properties are synchronized the same way in a Cavrnus Space as any other asset. Therefor a pawn or character must, at a minimum, have a SyncTransform

...

component on it

...

to synchronize the User’s movement. The Unique Container Name can be left blank

...

because it will be automatically filled in by

...

the Cavrnus system for each individual user when spawned.

...

In addition to position, avatars can also send & receive

...

other custom properties

...

:

  • User Color

...

  • Left Elbow Transform

...

To use a customized Avatar, simply assign it in the Cavrnus Spatial Connector.

...

To send your Co-Presence to other users, select the Local User’s rig and hit Cavrnus->Set Selected Object As Local User.

...

This will automatically add a CavrnusLocalUserFlag to your character and a SyncTransform component to send your position across the wire. As with remote avatars you can send and receive as many custom properties as you would like. However, ensure that the Property Names match between the Local Rig and the Remote Avatar. If you are sending a property named “position” and their Remote User Avatar is listening for one named “transform”, you’re gonna have a bad time.

Space UI

...

  • Right hand socket

  • Laser state/color

  • and more …

Default Pawn Class

Just as any Unreal Engine project, you can define different pawns for the local and remote users. The local avatar is defined in the standard location in Unreal Editor, the Default Pawn Class in the GameMode.

To synchronize a user’s local position to display in other team member’s views, the local player pawn must have a SyncTransform_Character component to post it’s transform matrix to the Journal.

image-20240417-204117.pngImage Added

In the image above, the default BP_CavrnusPawn blueprint has been derived to create a custom character pawn. The SyncTransform_Character component is inherited from the parent and can be uniquely configured. Other Cavrnus components include the SyncLaserComponent, SyncPawnColor, and the NameTagWidget components, which appears above the character in the viewport. Each of these are necessary for synchronizing specific properties in the character, and are available in the Cavrnus Spatial Connector plugin folder.

Remote Avatar Class

The Remote Avatar Class is assigned in the CavrnusSpatialConnector instance placed in the level. This can use the same Character blueprint as the local user, or use a custom pawn.

image-20240417-180508.pngImage Added

Space UI

The Cavrnus Spatial Connector gives you complete control to customize the UI, both while the Space is Loading and once it is ready.

...

The CSC plugin files include several default widgets to get you started, either to use directly or as a template to create your own:

  • Loading Screen graphic

  • Users Menu

  • Voice/Video Controls Menu

Info

Spawned menus, such as Loading Screens, will spawn at startup and will then be destroyed once the Space is connected.

...

image-20240417-205912.pngImage Added

Spawnable Objects

...

Blueprints can be spawned into the Scene at runtime

...

to further customize the Cavrnus experience. These can be added to the Spawnable Objects list at the bottom of the

...

CavrnusSpatialConnector instance.

image-20240208-235757.pngImage Modified

The Unique Id is what is stored in the Journal as the thing being spawned.

...

Next Steps

At this point, hitting Play in Unity should Authenticate the user and place them in a Space, with all of the relevant UI being spawned in with them!

Now you can start synchronizing the various things inside your project!

...

The use-case is that objects placed in the scene with this unique identifier can be swapped out with new, modified blueprints. The properties stored in the Journal would then be applied to this new blueprint as though it were the original.

image-20240417-210308.pngImage Added

ON THIS PAGE

Table of Contents
minLevel1
maxLevel2
outlinefalse
stylenone
typelist
printabletrue

Tip

Next Steps

Your level is now connected to a Cavrnus Space. If you run Play-In-Editor, the level will load into that space and you will be able to see the connection in the Session Analyzer. You’ll have Voice & Video capability, and see a user list with all of the other users in the Space. However, in the Session Analyzer you will only see the user logged in. You won’t see any property updates associated with your level.

Next, we will add No-Code Collaboration Components to automatically synchronize an object's Properties. That way they can be synchronized across multiple connections.

Alternatively, you can read up on more advanced techniques in our Developer Guide, or make calls directly using our API Reference.