VirtualPlates is a scalable, distributed render farm system designed for automating complex rendering tasks in Unreal Engine 5.6. It enables efficient batch rendering across multiple machines, providing a web-based management interface and robust agent-based job execution.
VirtualPlates is built on a three-tier architecture:
- Director: Central Flask web application for job creation, queue management, and real-time monitoring of render nodes.
- Agent: Lightweight Python client running on each render node, responsible for job execution and status reporting.
- Executor: In-engine Python script for Unreal Engine, directly controlling the Movie Render Graph and scene configuration.
- The Director assigns jobs to available Agents via TCP sockets.
- Agents launch Unreal Engine in headless mode, passing job definitions and progress file paths.
- The Executor script in Unreal Engine configures the scene, executes the render, and writes progress updates to a file.
- Agents monitor progress and report status back to the Director, which updates the UI in real time.
- Web-based UI for job creation, queue management, and agent monitoring
- Real-time status updates via Flask-SocketIO
- Automatic job dispatching to idle agents
- Multi-agent support with persistent reconnection
- Robust error handling and automatic requeueing of failed frames
- Scalable architecture for large render farms
- Unreal Engine 5.6 (must be installed)
- Python 3.11+
- Agent code (see
Agent/directory)
- Python 3.11+
- Flask
- Flask-SocketIO
- Director code (see
Director/directory)
Install UE5.6 on each render node and ensure the Python plugin is enabled.
On each render node:
- Clone this repository.
- Edit
Agent/agent_config.jsonto set the agent ID, listening port, and path to the Unreal Engine executable. - Install Python 3.11+.
On the machine running the Director UI:
- Clone this repository.
- Install Python 3.11+.
- Install dependencies:
pip install flask flask_socketio
- (Optional) Configure network settings in
Director/as needed.
From the Director/ directory, run:
python director_ui.pyAccess the web UI from any browser on the network at the displayed address (default: http://localhost:5000).
On each render node, from the Agent/ directory, run:
python agent.pyAgents will automatically connect to the Director and await job assignments.
- Use the Director web UI to create and queue render jobs.
- Jobs are dispatched to idle agents.
- Agents launch Unreal Engine with the provided job definition.
- Progress and completion status are reported back to the Director UI.
- Ensure all machines are on the same network and firewall rules allow TCP communication.
- Check
agent_config.jsonfor correct paths and settings. - Review logs in the
Saved/Logs/directory for error details.
This project is intended for closed-system use. See LICENSE for details.