Wondering if there are standard workflows / tutorials / samples on developing projects that need to span multiple servers?
I see here already a couple of related things from goat @raganmd
Multiple Windows | TouchDesigner – Matthew Ragan (adjacent knowledge - multi window but im lookin to do a mosaic thing)
and some derivative documentation Syncing Multiple Computers | Derivative
Hardware Frame Lock | Derivative .
I dont see anything about development techniques for deploying changes to these types of systems unfortunately
I see that pro has the sync chop but does this also enable any useful deployment tools for programming to multiple computers?
If your setup allows for internet access, you can always deploy using git (or you feel like managing your own LAN git repo). There’s more than one guide from Matthew covering the basics, here’s one: TouchDesigner | Working Styles | Git – Matthew Ragan, I’m sure that searching for “touchdesigner git workflow” will net more results.
I’ve also successfully used SyncThing for media and project code deployment from a “main” node to others. In this case, you have to be careful to avoid syncing stuff that should be unique to each server (.git folder, etc…)
Aside from deployment, there are certain workflows that will ease the creation and management of roles in your system, there’s material from the 2019 TouchDesigner summit that will cover some parts and are still relevant. Matthew did a write-up on his.
Good luck.
@davispolito there are lots of ways you might approach this.
Generally speaking, it’s up to you as a developer to determine how you want to approach this kind of situation. My approach these days is a mixture of @r-ssek’s comments.
I typically like keeping my project in git on a laptop, then deploying over a local network to the stack of machines I’m working with.
So, for example.
Laptop - work, debug, test broad ideas. Commit to git to track changes and updates.
Sync to cluster of machines (this could be robo-copy, could be a powershell script, could be sync thing)
Start-up project across multiple machines and test. Generally we take the approach that 1 machine acts as controller / conductor, and other machines act as render / processing machines. You may or may not need tight sync (Sync | Derivative) for LED walls split across multiple machines you do probably want hardware sync. If you’re working with cameras (film and video production) you may want to sync to a house clock. For large projection systems you don’t typically need frame lock / sync in/out CHOPs. Instead you can send time as Touch Out / In or OSC out / in and drive all of your render / processing machines from the output of the controller.
Generally this means that you want your controller to broadcast time - you can do this by setting up your controller to use multi-cast traffic ( Network Protocols | Derivative ). Important to know is that your router may block some broadcast traffic, so make sure you check any sys admin controls that may block your traffic on your network. Tempting as it may be, do this over a wired network - you can get sync over wifi, but it won’t be reliable.
IMO, the hardest part coordinating all of your machines to start / stop TD together. It’s not a huge deal if you’re working with 2 or 3 machines, but when it’s 10 or 20 you really need some automated tooling to make this easier.