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
Using XBox 360 Controllers with multi-engine LED Wall Configuration
Comments
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
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.
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,
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