James Liu

Local-first Unreal graphics assistant

RenderMasterBot

An Unreal Editor assistant that turns natural-language intent into reviewable scene actions and trace-backed graphics analysis—without giving a model unrestricted engine access.

RenderMasterBot conversation with a completed profiling audit and Unreal Insights GPU review inside Unreal Editor
Focus

AI systems, editor tools & GPU profiling

Tools & methods

Python · Unreal Engine 5.7 · C++ · Ollama

Project

Local-first Unreal graphics assistant

A local assistant that works from the Unreal scene in front of you.

A local Unreal assistant connects scene context, reviewable proposals, and verified results in one conversation.

Conversation loopIntent → a result you can inspect
  1. ContextObserve the sceneProject · level · selected Actors
  2. AssistantAnswer or proposeClarify when context is missing
  3. UserReview & approveInspect the proposed change
  4. UnrealExecute & verifyRecord the result for follow-up

Transform supports the complete editing conversation. Other tools have their own integration boundaries.

Implementation details

RenderMasterBot brings a conversational graphics assistant into the Unreal Editor. It observes bounded project, level, and Actor-selection context, then chooses whether to answer, ask for missing information, or route one registered workflow.

The workspace keeps the request, proposed action, progress, evidence, and result in one place. Transform is the first complete conversational result loop: proposal, approval or rejection, execution, verification, and follow-up are recorded as distinct states rather than collapsed into one ambiguous AI response.

  • Live project, level, and ordered Actor-selection context
  • Answer, clarify, or route—never invent missing context
  • Bounded local sessions with persistent, traceable results

A request in the editor becomes a measured performance report.

A completed Editor PIE audit on an RTX 5080: 120 measured frames after warmup, plus a separate GPU trace. The scene remained unchanged.

8.33 msFrame time · P95
5.52 msGPU time · P95
0 / 120Frames over the 16.67 ms budget
RenderMasterBot displays completed GPU scope and runtime reviews, including frame-time and GPU measurements
Completed runtime and GPU reviews inside the editor. The report distinguishes measured scope timing from causal attribution to individual Actors.View full size ↗
Unreal Insights timing view showing graphics and compute GPU queues, CPU threads, and nested rendering scopes
The captured trace opened in Unreal Insights. Nested inclusive scopes overlap; raw trace totals and the report’s bounded analysis cover different windows. The driver overlay reflects screenshot-time activity.View full size ↗
Implementation details

This completed run began with a conversational request to audit the current level. RenderMasterBot collected runtime samples, captured GPU scopes, and returned the findings to the editor. The captured trace was then opened in Unreal Insights for independent inspection.

The workload ran in Unreal Engine Play In Editor (PIE) mode on an NVIDIA GeForce RTX 5080 at a 2038 × 782 viewport. After 30 warmup frames, 120 measured frames had a frame-time P95 of 8.33 ms and GPU P95 of 5.52 ms. None of those samples exceeded the 16.67 ms frame budget.

A separate 5.002-second trace supplied the GPU scope review. The audit captured 55 static-mesh Actors and performed zero Actor intervention studies. The production scene was unchanged. These results demonstrate a completed measurement workflow; they do not establish an optimization speedup or packaged-build performance.

The model proposes intent. Deterministic host code owns the edit.

Versioned contracts and live-state checks keep model suggestions inside the editor’s approved operations.

Execution boundaryA proposal crosses four checkpoints
  1. 01 · ValidateTyped contractPydantic schema + semantic checks
  2. 02 · ReviewUser approvalBefore / After values
  3. 03 · RecheckStill current?Reject changed targets or properties
  4. 04 · ApplyHost-owned editUndo-backed · never auto-saved

The model proposes bounded intent; deterministic host code performs the operation.

Technical details & source excerpt

Model output never becomes arbitrary Unreal Python, Blueprint, console, or C++ execution. Every proposal crosses a versioned Pydantic contract, strict unknown-field rejection, semantic checks, observed capability limits, and verified asset catalogs before the engine can act.

For editable workflows, Unreal owns target identity and Before evidence while host code computes the final After values. Approval triggers one more live-state check; a changed Actor, component, asset, lens, or property rejects the operation as stale. Successful changes remain unsaved and Undo-backed.

Approval encoded in the contractcontracts.py · Python
class AssistantTransformBatchProposal(StrictModel):
    """Approval-gated Transform change for one ordered Actor selection."""

    schema_version: Literal["0.1"] = "0.1"
    proposal_id: Identifier
    status: Literal["proposed", "unresolved"]
    request: LongText
    selection: UnrealTransformSelectionContext
    proposed_by: ModelIdentity
    coordinate_space: Literal["world", "local"] = "world"
    actions: list[TransformActorAction] = Field(
        default_factory=list,
        max_length=32,
    )
    modifies_editor_scene: Literal[True] = True
    auto_save: Literal[False] = False
    undo_supported: Literal[True] = True

The contract makes selection order, action limits, no-auto-save behavior, and Undo support machine-checkable instead of relying on prompt wording.

Focused tools cover the graphics tasks where bounded automation is useful.

Specialized tools share a bounded editing approach. Transform is connected to conversational follow-up; the other tools remain advanced workflows.

Implemented editor workflowsA focused toolbox inside Unreal

Transform

Selection
Up to 32 ActorsOrdered targets
Operation
World / local editsBefore / After review
Integration
ConversationVerified follow-up

Materials

Source
Catalog or CC0Verified assets
Operation
Slots / PBR importHash-checked imports
Integration
Advanced workflow

Lights

Targets
Compatible lights
Operation
Group / rig editsKey · Fill · Rim
Integration
Advanced workflow

Cameras

Targets
One or more cameras
Operation
Bounded controls
Integration
Advanced workflow
Implementation details

Implemented workflows include project-catalog material recommendations, verified external CC0 PBR import, world- and local-space Transform edits for up to 32 selected Actors, compatible group light editing, Key/Fill/Rim rig coordination and review, and bounded single- or multi-camera controls.

Each tool exposes a narrow operation instead of a universal command surface. Transform is the first specialist fully connected to conversational follow-up; the other specialists remain available as advanced workflows while their shared result adapters are being integrated.

  • Catalog-backed material slots and hash-verified external imports
  • Complete Before/After review with all-or-nothing stale-state rejection
  • No automatic level save and one-step or grouped Ctrl+Z Undo

Optimization starts with profiler evidence, not a screenshot or a guess.

Runtime samples and GPU traces ground the analysis. Controlled experiments and post-apply checks are conditional steps in the optimization workflow.

Profiling workflowMeasure before recommending a change
MeasureCapture workloadPIE / SIE samples + GPU trace
AnalyzeCompute evidencePercentiles · budgets · noise
If eligibleControlled trialRestore state after each test
If a winApprove & retestRetain or roll back the edit

The September 17 run completed measurement and review with zero Actor intervention studies. No optimization speedup is claimed.

Implementation details

The performance path combines a whole-level StaticMeshActor audit with PIE/SIE frame samples, Unreal Insights GPU queue and scope traces, and repeatable visible-versus-hidden Actor experiments. Host code recomputes percentiles, frame-budget misses, deltas, and noise; the model can cite only validated evidence identifiers.

When profiling finds a stable shadow candidate, RenderMasterBot runs controlled Cast Shadow experiments and restores runtime state after every trial. Only a measured win can produce an approval-gated formal edit. A post-apply pass repeats the workload and offers an evidence-based retain or stale-checked rollback decision.

  • Static priority is used for triage, never presented as measured runtime cost
  • Raw Unreal Insights traces are preserved for independent inspection
  • Actor studies report measured association—not invented draw or shader causation

Implemented, connected, and proven are tracked as different claims.

The September 17 audit verifies one Editor PIE workload. Packaged-build comparison, direct per-draw GPU attribution, and broader geometry tools remain future work.

Implementation details

A capability ledger separates unit or fixture evidence, live-model interpretation, live-engine components, and complete user tasks. A frozen development suite covers bilingual questions, missing-context clarification, scene previews, bounded edits, profiling, and unsupported requests against an identifiable source and runtime baseline.

Transform is the first complete conversational vertical slice; the September 17 audit also documents a completed conversation-to-profiling-report workflow for one Editor PIE workload. General geometry arrangement beyond the bounded three-point rig, direct per-draw or per-shader GPU attribution, packaged-build comparison, asset-level optimization, larger curated datasets, and model fine-tuning remain future work.

  • Unsupported requests become explicit capability gaps
  • Source, models, assets, datasets, and evidence are hash-bound for comparison
  • Private project data and render evidence remain local by default
Next projectPast Path