Storm Sync - New feature!

Hey there!

So I just stumbled upon this new Storm Sync feature from 5.4. As I understand it, it’s quite amazing to export packages in between project. However, I’m super curious about the Push/Pull feature. Could it be a simple Source control solution?

If anyone have more info on that, I’d be very interested! Thanks!

I imagine it would be difficult to use as a way to collaborate on projects with others. I’d recommend using something like Git, or preferably Perforce for that. Storm Sync is probably more-so tailored for distributing out assets/projects to other people without the intention of sharing them back and forth very frequently.

As an example, I develop an asset library of Star Wars content in UE5.3 and share the assets to other people who want them for their own projects. When they make changes to the assets, they don’t commit them back to my project. They simply download those assets and from that point on, there’s not really any back and forth. I actually ended up creating my own Editor Utility Widget tools just like Storm Sync before it came out which allows me to package dependencies of assets into .upack files. It lets me separate each top-level asset such as a map/character blueprint in the library into a package super easily. That way people can download whatever assets they need and the dependencies of said assets are contained within the .upack. I imagine that’s the same idea behind Storm Sync but I haven’t used it yet.

For direct back and forth collaboration with other people (e.g my brother), I have the project and all the individual .uassets on a Perforce server. This lets us Check Out/In / GetLatest on a per-file basis rather than checking out a whole pak file. Then I use my tools to generate pak file builds and I upload those paks to a Google Drive for others to download. “Technically” you could use Storm Sync to sync assets between two people but you will always risk accidentally working on the same files and overwriting your work when you go to sync a pak file.

Yes, that’s exactly the same idea. It’s worth noting though that the binary format Storm Sync uses is a bit different from standard .pak files.

On top of the ability to export and import packages between projects via a local .spak file, it has networking capabilities that are relevant to the initial question about Push/Pull.

It can detect other editor instances running on the local network (whether on the same machine or other machines on the LAN) that have Storm Sync enabled. It uses the same buffer format to transfer assets over a TCP connection. This format is identical to .spak files but is used for network transmission.

Storm Sync was developed to address a very specific workflow and needs used in the broadcasting space. In this context, it’s often necessary to ensure that a remote machine used for rendering has up-to-date assets. Traditional source control systems like Perforce, Git, or others may not always be suitable or possible for this scenario.

1 Like

Hey @mklabs I saw your comment about the Push/Pull features using local connection running Unreal instances. This sounds really interesting, and would come in really handy for a project I am working on currently, but I couldn’t find any tutorials or documentation on how to set this up. Could you point me towards any resources that explain the setup process? Any help would be great!!

Hello! I’m not aware of any specific tutorials or documentation that cover this part in detail, but I’d recommend starting with two projects on the same machine with Storm Sync enabled. This is the most straightforward way to explore the Push/Pull functionality and other features of Storm Sync before attempting to connect across multiple machines on a local network.

Setting Up on the Same Machine

The only required setting to modify is the TCP port in the second editor, so it uses a different port. When you launch the second editor with Storm Sync enabled, you’ll see a notification error:

Alternatively, you might notice an error in the output log:

In one of the two projects, adjust the TCP Server Port setting (e.g., set it to 41000 for the second editor instance):

Once you’ve updated the port, you can either restart the editor or manually start the TCP server using the console command:StormSync.Server.Start

If another project with Storm Sync is running, the output log should display additional messages, indicating it received a ping back.

When both projects are running, you should see options under Storm Sync > Push (or Pull) when you right-click a file or folder in the Content Browser. This menu will list all connected instances.

Debugging Connection Issues

If needed, you can use the console command:

StormSync.Client.Ping

This will log a “pong” message in the output for each connected instance.

Setting Up Across Multiple Machines

Once you have everything working locally, you can set up a second project on a different machine connected to the same local network. Assuming no connectivity issues (e.g., firewalls or different subnet), you should see other instances on remote machines and be able to push an asset:

Troubleshooting Connectivity

If you can’t see a pong response from the Editor you’d like to connect to, this might indicate a UDP Messaging setting issue.

If Unreal Editors on the same LAN cannot discover each other, it may be because one or both editors are not broadcasting or listening for multicast traffic on the correct network interface. To address this, you can try to adjust the unicast endpoint setting in: Project Settings > Plugins > UDP Messaging

The default value is 0.0.0.0:0 (port must be always 0), and will asks the host OS to use the default network interface it has. An issue related to that 0.0.0.0:0 default value often happens on hosts with multiple network interfaces (wired vs wifi, etc.).

One example of such network is as follow:

In this scenario, the Laptop host needs to use 192.168.1.84:0 to enforce this network interface, because it was connected to multiple networks. This is the process I had to go through when troubleshooting connectivity issues in that network test.

If connectivity issues persist, I recommend verifying that there are no firewall or network restrictions. Ensure you can ping the remote machine from a terminal to rule out external network problems that are outside of Unreal.

I hope this helps!