Using XBox 360 Controllers with multi-engine LED Wall Configuration

Hi Team, 

We are currently experimenting with using a game controller to move objects in an unreal scene, which is to be displayed on an LED wall that is rendered by multiple engines, 2 for LED wall panels, and 1 for XR. 

I have attached a video illustrating the problem. It seems that the controller works just fine on the master engine, however, the inputs do not transfer to the LED engines. 

https://drive.google.com/file/d/1i5_LJ-BQUB8tkszMD8JSa-uEN6wLbciv/view?usp=sharing

Is there a way to forward the commands to the remote engines? 

Thanks,

Terence

   NYP-SDM-CMTSL

Comments

NYP-SDM-CMTSL
  -  

Hi, 

I have confirmed with my team that connecting the xbox controller to the different rendering engines results in the controller working for that engine only. Is there a way to broadcast the controller data to all the machines in a synchronized manner ?

https://drive.google.com/file/d/1VV2lxXIek4z81NOayWNEyazpj2Iv4mmt/view?usp=drive_link

https://drive.google.com/file/d/1Uc6RopH4gAN78-QkRUUGzRShuRN48Tko/view?usp=drive_link

https://drive.google.com/file/d/1B5DKRa2DQA897e9l8Y4sQ_cli-1Qq6S8/view?usp=drive_link


Thanks,

Terence

NYP-SDM-CMTSL
  -  

Hi Team,

After experimenting, I managed to figure out how to send the controller data as set scalar collections into JSON and into a UDP Sender, and from the UDP receiver set to ANY, to forward the controller data to the remote engines. The data is unpacked from JSON back into text, and converted back to scalars using collection scalars. I'm not certain if this is the best workflow, but it works : 

https://drive.google.com/file/d/15x9Q6ZS0bq3cl0kwG47CULfGMbB-Tuki/view?usp=sharing

Please let me know if this is the right way to approach this solution? There still is some issue with the event tick of both machines not syncing, and also the niagara effects tick not syncing. Does any one have any solution to sync the event and niagara ticks of all the remote machines?

Thanks,

Terence

Eifert@Aximmetry
  -  

Hi Terence,

I'm glad to see you managed to solve the issue. I want to add some additional context about the problem:

When using the GameController, it must be shared between machines because only one machine can receive the GameController's signal at a time. That’s why it has an Engine pin to define which machine will receive the input.
Using XBox 360 Controllers with multi-engine LED Wall Configuration

Your solution using the UDP module is actually the most robust method for sharing the controller or other data between machines.

However, there is another approach. Since all UI interactions in the Composer are synchronized across machines, when you use any of the “Set ... Pin” modules, their actions will execute in sync across all machines in a multi-machine setup. There are also two general-purpose compounds in the Common Studio library that are specifically designed to use this approach:

  • [Common_Studio]:Compounds\Tools\MultiMach_Mux_Text.xcomp
  • [Common_Studio]:Compounds\Tools\MultiMach_Mux_Vector.xcomp

If, by "event tick not being in sync," you mean that each machine executes a different number of event ticks, this occurs because they may start or load the Unreal scene at different times. This is normal; for example, a remote machine may need to start or stop at any point (for example, in the case of a crash), so it’s best not to rely on the Unreal tick (frame) count being consistent across all machines.

Instead, consider using a level sequence to trigger events in Unreal and start (trigger) the sequence itself from Aximmetry, such as via a control board button. Even better, use Aximmetry’s own Sequencer to run animations or trigger events for improved reliability.

For particle systems (such as the Niagara particle system) not being in sync:
This is generally unrelated to the event tick. Most particle systems are not deterministic by default. I have replied to your question about this in detail here: https://my.aximmetry.com/post/4917-synchronizing-niagara-effects-across-mul 

Warmest regards,