Batch Re-Render for Unreal Cinematics
The Unreal cinematics kept improving while the After Effects edit was already underway. I built a Blueprint that re-renders the whole shot list to the same output paths at one click, so an overnight pass silently upgrades the edit by morning. Ten minutes of manual setup per clip went to zero, at any clip count.

The whole tool. Left: the three variables that are its entire interface. Middle: it starts at CE_StartRenders, clears the queue, then loops the shot list building one render job per sequence. Right: the Details panel, where the shot list is actually edited, plus the completion binding. The SQ_UE4_ prefix on the sequence names refers to the UE4 character skeleton in use, not the engine version.
Cinematic work is iterative. A lighting pass lands, a camera gets re-blocked, an animation fix goes in, and every shot downstream of that change is stale. On the Rift Fighters vision video at Slip Theory Studios, the art was improving continuously and the edit could not wait for it to be final.
Rendering was never the expensive part. Rebuilding the render was. Every revision pass meant opening Movie Render Queue and constructing the jobs by hand: point each at its sequence, point each at its map, apply the config preset to each, and type an output directory for each that had to match exactly what the After Effects project was already reading from. About ten minutes a clip. A full batch of six was an hour standing between the end of the workday and going home.
That hour cost more than an hour. It is exactly enough friction to turn "re-render tonight" into "the current version is fine, I'll do it next week," and every skipped pass means the edit is being built on art that has already been superseded. And any one of those six paths typed slightly differently means the edit quietly keeps using an old render, with no error and no warning.
I built an Editor Utility Actor called RENDER_FARM. It holds three instance-editable variables and one custom event, and that is the entire interface: an Editor Utility Actor renders its variables in the Details panel for free, so the variable list is the UI and the custom event is the button. No Slate, no widget, no UI code.
The three inputs are an array of Level Sequences (the shot list), an array of output directories paired to it by index, and the map path every sequence renders on. Render settings live outside the graph entirely, in a Movie Render Queue preset asset, so changing resolution or codec is an asset edit rather than a Blueprint recompile.
On the button press it clears the queue, then loops the shot list. Each pass allocates a job, sets its sequence, sets its map, applies the preset, then reaches into that job's config to set the output directory from the paired array entry. After the loop it hands the queue to the executor and binds a completion delegate.
The decision that mattered is not a rendering decision. The output paths are fixed and the renders overwrite in place. Nothing timestamps, nothing increments. That is what lets an After Effects project sit downstream and relink to the same filenames automatically: the edit and the source stay in sync with nobody maintaining the sync. Kick off a batch at the end of the day, open the same edit project in the morning, and it is now built on the latest Unreal quality with zero relinking, zero re-importing, zero bookkeeping.
Clearing the queue first is the other decision worth naming. Without it, pressing the button a second time adds a duplicate set of render jobs to the queue.
RENDER_FARM Blueprint: design, build, and the pipeline decision to overwrite in place. Sole author.Miles GermerThe renders this tool produced fed the Rift Fighters vision video, which was a team effort. Full video credits are on the Slip Theory case study.
I used AI to learn how to build this. I was deep in cinematics and new to Blueprint, so the model covered the API surface: how the Movie Render Queue subsystem is reached from Blueprint, which nodes exist, how the finished delegate binds. A fair amount I still had to work out myself, and four hours is the honest build number because it is a learning cost as much as a build cost.
What the model did not supply is visible in the graph. You clear the queue before the loop because you have shipped batch processes before and know what happens when you don't: the render jobs from the previous press are still in the queue, and every shot renders twice. Driving config from a preset asset instead of wiring settings into the graph is a maintenance instinct. And the fixed overwriting output paths, the load-bearing decision in the whole tool, come from knowing how After Effects resolves footage. Ask a model to "batch render some sequences" and you get timestamped or incrementing folders, which is the sane default and would have broken the entire workflow.
The model knew the Movie Render Queue API. Twenty years of production experience determined what the tool had to do.
Ten minutes of manual setup per clip became zero, at any clip count, for the rest of the project. Batches ran from two shots to six. Manual setup scales linearly with the shot list; one click does not, so every shot added widened the gap.
The renders became the After Effects edit of the Rift Fighters UE5 vision video, which premiered at a Seattle Indies Founders Club session hosted by Harebrained Schemes co-founder Mitch Gitelman. You can watch it on the Slip Theory case study. On that video's credits, agreed across the team, my contribution includes Renders, Editing, and Compositing. This tool is what connected the rendering to the editing.
What it is not. It renders in-process, on one machine, through the Movie Render Queue runtime subsystem executor. I named the asset RENDER_FARM, which oversells it: there is no distribution of any kind. The honest scaling path is a separate-process or command-line executor, which survives an editor crash and is the actual on-ramp to multiple machines.
The structural weak point is the parallel arrays. Sequence i pairs with output path i by index and nothing enforces it, so inserting one row into the wrong array sends every shot after it to the wrong folder, silently, while After Effects keeps showing stale frames. One struct array holding sequence, path, map, and an optional preset override per row would make that desync impossible and let each shot live on its own level. That is v2.
The tool did not really save an hour. It removed a decision. An hour of setup is a thing you can talk yourself out of, and every time you do, the edit drifts further behind the art. Drop the cost to one click and "should we re-render?" stops being a question anyone asks.
The other lesson is about where the value sits. Nothing in this Blueprint makes rendering faster. All of it is about making the next render free, and the single highest-leverage line in it is a decision about filenames made on behalf of a different application.