Node graphs and game engines
Two ways of building show content that do not look like code, and that a lot of people use for years without being told what kind of thing they are working in. One is a patch bay. The other is a machine that draws a picture sixty times a second from a description of a world.
The first one
Dataflow: why a patch is not a script
Open Max, Pure Data, TouchDesigner, vvvv, Notch or Unreal's Blueprints and you get boxes joined by wires. The instinct is to read it as a flowchart — do this, then this. That is the wrong model and it makes everything harder.
It is a patch bay. Each box is a device that is permanently powered on. Each wire is a cable. Nothing is "called" and there is no beginning: the whole graph is live, and data moves through it continuously. You are not writing a sequence of instructions, you are building an instrument and then playing it.
That is exactly why this style caught on in this industry rather than in general software. Anybody who has patched a rack already holds the mental model. The signal-flow intuition transfers directly, and so does the debugging habit: when it is wrong, you probe along the chain until you find where the signal stopped looking right.
The families
What each dataflow tool is actually for
Max/MSP (Cycling '74) is three layers with one look. Max is the message layer — control-rate events, the things that happen when something changes. MSP is the audio layer, where objects whose names end in a tilde process a continuous signal at sample rate. Jitter is the matrix layer, for video and data grids. Being able to move between an event and a sample-rate signal in one patch is what Max is for, and it is why it stayed the standard in music technology and interactive installation. Max for Live puts the same environment inside Ableton Live.
Pure Data is the open-source ancestor of the same idea, by the same author, and it is the pragmatic choice when a piece has to keep running for years without a licence server in the way.
TouchDesigner is the same model built on the GPU, and it organises everything into operator families you connect together: TOPs are textures, CHOPs are channels of numbers over time, SOPs are geometry, DATs are text and tables, MATs are materials, COMPs are containers. Python is embedded throughout, so the awkward parts do not have to be patched. It has become a default for interactive and generative content, and for wiring a protocol into a picture.
Notch is a real-time VFX tool whose output is a block that runs live inside a media server — disguise, Hippotizer, PIXERA — with its parameters exposed to the operator. That is its whole point: effects that stay adjustable on site instead of being baked into a file at the last render.
vvvv and Blueprints complete the picture — vvvv as a long-standing patching environment for installation work, Blueprints as Unreal's visual layer over the same engine its C++ reaches.
TouchDesigner's operator families. Every other patching tool has an equivalent split; this one just names it clearly.
- A patch is easy to write and hard to review. There is no useful diff of two versions of a graph, which means the normal safety net of "what changed?" is missing. Save numbered versions and write down what each one did.
- Spaghetti is a real cost, not a joke. The person opening it in eighteen months is you. Use containers, name things, and lay it out left to right.
- Frame rate is the deadline. A patch that runs at 45 fps is not slightly worse than one at 60, it is dropping content. Watch the cook time, not the appearance.
- Check the licence before the tour, not after. These tools have very different rules about what a show machine may run unattended, and a dongle or an activation that expires mid-run is a genuine show-stopper.
The second one
What a game engine actually is
Unreal, Unity and Godot are usually described as tools for making games. That is a market, not a definition. What they actually are is real-time renderers with everything attached: a scene graph that holds a world, a physics simulation, an asset pipeline, an animation system, a scripting layer, and a renderer whose job is to produce a complete new frame in the time before the display needs one.
The consequence is the whole reason they arrived in this industry. A video file is a sequence of frames someone computed in the past. It is beautiful, it is exactly as intended, and it cannot answer a question. A real-time engine holds the scene — geometry, materials, lights, cameras — and draws it now. So it can be asked something: where is the camera, where is the performer, what did the operator just change, what is the tracking system reporting this millisecond.
That is what makes an LED volume possible, what makes previsualisation useful rather than decorative, and what lets an AR graphic sit convincingly on a pitch. Not the rendering quality — the timing of the rendering.
At 60 fps the whole budget is 16.7 ms — geometry, lighting, effects, post and output. Everything you add spends part of the same bar.
Spend the budget and watch it run out
The three
Unreal, Unity and Godot
Unreal Engine
Epic Games · source-available · royalty model
The default for virtual production and large-scale live visuals. It ships the specific things this industry needs rather than requiring them to be built: nDisplay for driving many synchronised outputs across an LED volume, Live Link for taking camera and performer tracking in live, the Sequencer for timeline-based animation, and integration with media servers through vendor bridges.
It is also the heaviest of the three — a serious machine, a serious project structure, and a real learning curve before anything looks good.
C++ · Blueprints (visual) · Python for tooling
Unity
Unity Technologies · proprietary · tiered licence
Lighter to get started with and dominant in XR. If a project involves headsets, handheld AR or an interactive exhibit, the device SDK you need almost certainly exists for Unity first. Strong for installations, museum work and anything that must run on modest hardware or on a phone.
Less turnkey than Unreal for camera-tracked broadcast and volume work, though it is done.
C# · a visual scripting layer
Godot
Godot Foundation · MIT · genuinely free
Small, fast to open, and open source under a permissive licence with no royalty and no company able to change the terms later. That last part is not an ideological point on a project that has to still run in ten years, or on a bespoke tool a venue owns.
Smaller ecosystem, fewer industry integrations, and you will build more of the show-specific plumbing yourself. The right pick for learning, for tools, and for work that must remain yours.
GDScript · C# · C++
The practical part
How a scene actually becomes something an audience sees
The workflow is the same in all three, and it is worth knowing the shape even if someone else does it.
Build the world. Geometry comes in from a modelling tool — Blender, Cinema 4D, Rhino — or from a scan. Materials describe how each surface responds to light. Lights and cameras are placed. At this point you have a place, not a picture.
Animate it. Keyframes on a timeline for anything choreographed; simulation for anything that should behave rather than be posed; and, on a show, live input for anything that has to follow reality.
Then choose when it is drawn. This is the decision that matters. Render it offline — Unreal's Movie Render Queue, or the equivalent — and you get a file: maximum quality, fully deterministic, and completely fixed. Or run it live, and you get responsiveness at the cost of a hard per-frame budget. Plenty of shows do both: pre-rendered content for the sections that are locked, a live engine for the sections that must follow a camera or a performer.
Where it joins the show
The engine is just another device on the network
A render engine on a show is not an island. It takes the same signals as everything else, which is the entire subject of this site.
In: Art-Net or sACN so an operator can drive virtual fixtures — or drive the real rig from the same cue that moves the content; FreeD for camera position and lens; PSN or RTTrPM for performer tracking; LTC or PTP so it agrees with everyone else about time; OSC for everything else.
Out: video over NDI or ST 2110, or a vendor stream into a media server, or straight to an LED processor with genlock holding the frames together.
This is also how previsualisation works. Capture, WYSIWYG, Depence, Vision and Realizzer are real-time engines with a lighting-specific asset library: the console sends real DMX, the engine renders what those fixtures would do, and a designer programs a show in a room that does not exist yet. Same machinery, aimed at a different question.
- Previz is a model of the rig, not of the venue. It is exact about what a fixture does and hopeful about surfaces, haze and eyes. Use it to program, not to promise.
- A pre-rendered file cannot be nudged on site. If a section may need to change during tech, it needs to be live — decide that in pre-production, not at 1am.
- Real-time quality is a budget, not a setting. Every effect you add takes milliseconds from the same frame. "Turn it up" is a request to drop frames.
- Version and back up the project, not just the output. A rendered file is not recoverable content; the scene that made it is.
Where to start
If you want to learn one of these
For content and interaction, start with TouchDesigner. It is the shortest distance between a protocol arriving on a network port and something moving on a screen, and the free non-commercial licence is genuinely usable for learning.
For sound and event logic, start with Max, or Pure Data if you want it free and permanent. The tilde/no-tilde split is the concept to get straight on day one.
For 3D worlds, start with Godot if you want to understand engines, or Unreal if you want to work in virtual production, because that is where the industry tooling is.
And in every case the transferable part is not the software. It is knowing what signal you are taking in, what promise you are making about the next frame, and which clock you are reading — which is the rest of this section.
The software index lists what each tool speaks, and that is the field most often wrong or missing. If your version of one of these has an integration the entry does not mention, open an issue — that is the single most useful correction anyone sends.
- How do I read a patch?
- Pre-rendered or real-time?
- Unreal, Unity or Godot?
Where to go next
These pages are a chain rather than a library — the next one along usually answers the question this one raised.
Everything on this page, in the index
Each of these has its own entry with sources, ports, gotchas and an open gap where a field is missing.