T99_Translation_UE5_Build.md

world/translation/T99_Translation_UE5_Build.md

T99_Translation_UE5_Build

Translation Doc — UE5 Pipeline. Realizes T1_Build_Pipeline_Contracts §1's fourteen-subsystem

UE5 roster as concrete Unreal Engine 5.8 build mechanics — the platform-specific runtime layer

T1_Build_Pipeline_Contracts §0 always deferred. Status: ACTIVE v1.0 (flipped 2026-07-15 — the three-critic fresh-context pass PASSED, the fix-forward and the contracts-corrections pass both landed: the §0 flip condition). First authored pass —

derived from the adjudicated research chain ahead of any real region build. Several dependent

engineering spikes are still open (§4); nothing below is licensed to be read as settled where a

spike names it. Repo-native home: docs/translation/T99_Translation_UE5_Build.md — the first of

the six initial Translation Docs the Pipeline Contract names (UE5, Meshy, AIVA, ElevenLabs,

Cinematic, SFX).

Cited short-form below: UE_BUILD_AUTOMATION = docs/pipeline_review/tech_research/UE_BUILD_AUTOMATION.md

· RESEARCHED_STACK = docs/pipeline_review/RESEARCHED_STACK.md · ALTERNATIVES_MATRIX =

docs/pipeline_review/ALTERNATIVES_MATRIX.md · NEOSTACK_AI = docs/pipeline_review/tech_research/NEOSTACK_AI.md

· T1_Region_Page_Template = _source/01_Tier_1_Foundation/T1_Region_Page_Template [ACTIVE v2.0].md

· T1_Build_Pipeline_Contracts = _source/01_Tier_1_Foundation/T1_Build_Pipeline_Contracts [ACTIVE v1.0].md

· SPINE_SCHEMA_v3 = docs/SPINE_SCHEMA_v3.md.

---

1. Scope + authority

This doc is the runtime realization layer under T1_Build_Pipeline_Contracts §1 (the UE5 Pipeline

Contract) — it turns the fourteen-subsystem canon-to-engine roster (§1.2) into concrete APIs,

commandlets, seams, and per-step artifacts. It does not carry canonical authority of its own.

Authority hierarchy, per Contracts §0: subordinate to the CVD on world canon; subordinate to

T1_Build_Pipeline_Contracts on foreign-key mapping, required columns, and state-machine behavior

— this doc never contradicts those, it only supplies mechanism; subordinate to

T1_Region_Page_Template on the page-side input contract this doc consumes (the Machine Blocks,

Section 17). Where the Contract is silent on platform-specific runtime-parameter inference, this

doc owns the inference layer [SRC: T1_Build_Pipeline_Contracts §0].

Versioning discipline it inherits: Translation Docs version per platform update; a UE version

revision produces a new Translation Doc version, while the Pipeline Contract surface stays stable.

This is v0.1 against a stack that itself still carries open spikes (§4) — "iterate as build

experience accumulates" is the governing posture, not a one-shot lock [SRC:

T1_Build_Pipeline_Contracts §0].

The reconciliation this doc performs: Contracts §1.2 was authored against UE 5.7 and named

Cesium for Unreal, Gaea2Unreal, and SRTM Heightmap Import as three separate terrain-import

pipelines. The since-ADJUDICATED research (RESEARCHED_STACK, ALTERNATIVES_MATRIX Slot 1) supersedes

that specific tool split on the terrain leg with a single DEM-GDAL-Landscape backbone (Gaea narrowed

to its erosion-detail role; classic heightfield Landscape held over 5.8's Experimental Mesh Terrain)

and pins UE 5.8 throughout. This is exactly the "platform volatility absorption" Contracts §0

anticipates: the fourteen subsystems (the WHAT) are unchanged; §3 below supplies the HOW at the

currently-ruled tool selection. T0_Region_Index.terrain_pipeline_type's `cesium/gaea/srtm/hybrid/

custom enum stays schema-valid — this doc defaults new regions to the gaea/hybrid` path per the

ruling, which is a Translation Doc call, not a Contract amendment [SRC: T1_Build_Pipeline_Contracts

§1.2, §1.6; RESEARCHED_STACK Chain 3 + ADJUDICATED v2; ALTERNATIVES_MATRIX Slot 1].

Scope boundary: covers the fourteen §1.2 subsystems as they resolve into the region-build chain

(§3). Does not cover the other nine Pipeline Contracts except where UE5 consumes their output as an

opaque foreign key (mesh_id_ref, voice_signature_ref) — those get their own Translation Docs.

Does not invent canon or schema: every field, column, and enum this doc names is one already

defined by T1_Build_Pipeline_Contracts, T1_Region_Page_Template, or SPINE_SCHEMA_v3 — this doc

supplies mechanism, never a new FK, column, or numerical fact.

---

2. THE RULED CONSTRAINTS

2.1 Engine version — UE 5.8 pinned

UE 5.8 is confirmed current and the last planned major UE5 release (shipped 2026-06-17; UE6 Early

Access targeted late 2027, full release 12-18 months after). Do not target 5.9 (maintenance-only if

it ships at all) and do not design against pre-EA UE6. Several APIs moved across the 5.x line

specifically relevant here — EditorLevelLibrary deprecation (split across

EditorActorSubsystem/LevelEditorSubsystem/UnrealEditorSubsystem), MetaHuman's cloud-to-in-editor

migration (5.6+), PCG's Experimental-to-Production-Ready climb (5.7) — re-check every API name

against 5.8-era documentation specifically, not older tutorial-era assumptions [SRC:

UE_BUILD_AUTOMATION §0; RESEARCHED_STACK Chain 3].

2.2 Claude Code drives NeoStack, schema-bound

Ruled principle, verbatim-faithful: Claude Code drives NeoStack with every action — code,

Blueprints, PCG, LLM-placed generation — matched to OUR SCHEMA. The v3 spine graph

(SPINE_SCHEMA_v3 §3) plus region pages (T1_Region_Page_Template) plus registries are the input

contract; NeoStack never generates freehand against an unstructured prompt. Every step in §3 traces

its input artifact to a named schema field for exactly this reason [SRC: RESEARCHED_STACK ADJUDICATED

v2; ALTERNATIVES_MATRIX "Fixed constraints"].

2.3 The three-seam routing rule

Not a single tool — three seams, routed by step CLASS, never by preference:

SeamHandlesExamples in this chain (§3)
NeoStack (owned; INTERPRETATION/judgment)canon intent to first-draft asset graph, authored ONCE per pattern/template, then reused at scale by a bulk seamquest Blueprint/State-Tree logic from a beat's objective + a fork's options (Step 8); a Behavior Tree first draft from a boss's verb-set (Step 6's marker-to-fight-logic handoff); Sequencer shot TEMPLATES from scene_type descriptions (Step 9); the landscape auto-material design (Step 5); the MetaHuman coefficient-sampling script design (Step 7); a Niagara effect matched to a vril signature (Contracts §1.2)
Native Python + Remote Control + commandlets (BULK/STRUCTURED/already-specified, zero judgment, same op times 69 regions)registry/spine-row to DataTable ingestion; World Partition scaffolding; Data Layer tagging; per-zone PCG instantiate + headless bake; MetaHuman batch execution once the sampling script exists; Sequencer per-row population from templates; DataValidation; cook/package/CISteps 2, 3, 6 (execution half), 7 (execution half), 9 (population half), 10 (DataTable half), 11
Epic first-party MCP (Experimental, free, engine-bundled)PCG-graph AUTHORING specifically — its one strong, sanctioned toolset, gated behind the mandatory "PCG graph generation skill" (Epic: without it the LLM "misunderstands PCG concepts, overcomplicates, misuses nodes")Step 6's template-graph authoring; as it matures past Experimental, the narrow Scene/Actor/Material tier

Fallback: chongdashu/unreal-mcp (OSS, 2,034 stars, actively maintained) is the pinned fallback

for the NeoStack interpretive seam if the pre-flight install verify fails. **Two pre-flight gates

bind before any region build** (§4): gate 1, NeoStack-on-5.8, is SATISFIED (verified 2026-07-19) —

NeoStack is installed as source in the project Plugins/, rebuilt against the engine BuildId

(55116800), and its MCP channel (http://127.0.0.1:9315/mcp, server unreal-editor) was

smoke-tested end-to-end (actor spawn + viewport screenshot); the chongdashu/unreal-mcp fallback is

now dormant, not the active branch. Gate 2 still binds — impose a human-in-the-loop checkpoint policy

in the orchestrator, since NeoStack's only built-in safety is undo, not pre-approval. The checkpoint policy must define

its own mandatory-pause triggers explicitly — at minimum, any operation touching hard-line/§17

content and any bulk/destructive operation — since the tool itself does not enforce that boundary

[SRC: ALTERNATIVES_MATRIX Slot 4; UE_BUILD_AUTOMATION §3.6; NEOSTACK_AI "What the Translation Doc

needs to specify"].

2.4 Localization-ready strings, from the first asset

Every player-facing string lands in a string table (FText, never a hard-coded FString/literal),

starting with the FIRST asset built, not retrofitted later — the ship-everywhere ruling makes this

non-negotiable [SRC: T1_Region_Page_Template §17]. Mechanically this is already partially

load-bearing in Step 2's codegen convention: every player-facing column in a generated USTRUCT

(FBossRow.DisplayName, dialogue text, quest objective text) types as FText, never FString — a

DataTable-imported FText field participates in UE's text-gather/localization pipeline by

construction. The exact String Table (UStringTable/LOCTABLE) authoring and gather-commandlet

automation surface was not covered by any source read for this doc and is not confirmed here

treat the FText-column convention as the binding rule and the specific String Table mechanism as

an open item (§4) before the first asset ships text [SRC: T1_Region_Page_Template §17;

UE_BUILD_AUTOMATION §4.2; RESEARCHED_STACK "Missing lanes opened"].

---

3. THE CHAIN, STEP BY STEP

Contracts §1.2 subsystem to chain-step index (what this doc realizes, and where):

Contracts §1.2 subsystemRealized at
BlueprintsStep 8 (quest logic), Step 6 (PCG-marker hookups)
Procedural Content GenerationStep 6
World Partition and StreamingStep 3
Niagara VFXNeoStack interpretive seam (§2.3) — no dedicated step; effects follow the same author-once/apply-many pattern as Steps 5 and 9
Cesium for Unreal / Gaea2Unreal / SRTM Heightmap ImportSuperseded by Steps 4-5 (the adjudicated DEM-GDAL-Gaea-Landscape backbone; §1 reconciliation)
MetaHuman PipelineStep 7
Animation Asset AuthoringNeoStack interpretive seam per Contracts §1.2's own routing ("via NeoStack tool surface"); generation content (mocap/keyframe/generative) stays at the deferred Animation Pipeline Contract, out of scope here
Cinematic SequencerStep 9
Save State SystemStep 10
Quest SystemStep 8
Combat SystemStep 6's boss-marker placement + Step 8's flagged fight-AI gap (§4)
Performance BudgetStep 3 (WP cell sizing) + Step 11 (cook/validation budgets); region page §17 perf fields

A pre-step precedes Step 1 on every build: site/beat/fork/scene/SQ rows live embedded in typed

markdown inside docs/spine/CH_NN.md, not as standalone tables. A markdown-table-extraction step

(our own tooling, not an Epic API) pulls them into the same CSV/JSON shape as the registries before

Step 2 can run [SRC: UE_BUILD_AUTOMATION §9 Pre-step].

Step 1 — Project + plugin baseline (one-time)

Step 2 — Registries to USTRUCTs to DataTables

Step 3 — World Partition setup

Step 4 — Landscape import (the C++ shim, honestly scoped)

Step 5 — Landscape materials from WorldCover weightmaps

Step 6 — PCG graphs from the Zone Catalog + DataTables

Step 7 — NPC placement (MetaHuman batch, the cloud round-trip budget)

Step 8 — Quest wiring from the spine graph

Step 9 — Scene rows to Sequencer

Step 10 — Save/worldstate wiring (the ws.* subsystem — ORIGINAL ENGINEERING)

Step 11 — Cook/package (RunUAT)

---

4. THE SPIKES + UNKNOWNS

Every row is a genuine open question — none of these outcomes are settled by this doc, and none

should be treated as settled by anyone reading it. Trigger = what gates the spike; Owner = who

resolves it.

#SpikeTriggerOwnerNot yet settled because
1NeoStack-on-5.8 install verifyBefore Step 1 gates any region buildJosh (direct install)RESOLVED — VERIFIED 2026-07-19. NeoStack is installed as source in the project Plugins/, rebuilt against the engine BuildId (55116800), and its MCP channel (http://127.0.0.1:9315/mcp, server unreal-editor, single execute_script Lua meta-tool) was smoke-tested end-to-end (actor spawn + viewport screenshot). The chongdashu/unreal-mcp fallback stays pinned but dormant [ALTERNATIVES_MATRIX Slot 4; engine pin verified 2026-07-19].
2Landscape-import C++ shimBefore any region's Step 4Engineering (one-time build, reused x69)Not yet written; reference implementations are named but this project's own shim doesn't exist — the single highest-priority engineering dependency in the chain [UE_BUILD_AUTOMATION §2.3, §10 item 6].
3ws.* WorldStateSubsystem validation spikeBefore committing the full ~39-key architecture (Step 10)EngineeringEntire architecture is SYNTHESIZED — no Epic reference exists, Lyra ships none; wire 3-4 real keys end to end first; mark_write's richer shape is unresolved [UE_BUILD_AUTOMATION §7.6-7.7, §10 item 17].
4MetaHuman batch cloud-throughput testBefore committing to MetaHuman-per-NPC at full roster scale (Step 7)Production/engineeringThroughput/latency/rate-limits at "hundreds of characters" is undocumented by Epic — the real risk, not a gap that resolves itself [UE_BUILD_AUTOMATION §5.6, §10 items 11-13].
5Epic-MCP PCG-toolset verifyBefore Step 6's template-authoring seam is trustedWhoever stands up the first template graphSTILL PENDING (2026-07-19): the ModelContextProtocol plugin is enabled (server unreal-mcp, http://127.0.0.1:8000/mcp) but NOT auto-started and no toolset (EditorToolset/PCGToolset/AllToolsets) is enabled yet. Experimental ("use caution when shipping"); large-graph analysis is resource-expensive; no direct attribute inspection without a Dataview workflow [UE_BUILD_AUTOMATION §3.6].
6PCGWorldPartitionBuilder edge-case testBefore the headless whole-region bake (Step 6) runs in CIWhoever wires the bakeCommunity-reported iterative-cell-loading + Grid Size node executor error, untested against our template graphs [UE_BUILD_AUTOMATION §3.3, §10 item 8].
7PCG Biome Core experimental-status verifyBefore Step 5's flora/biome spawn is load-bearingWhoever wires terrain populationVersioned v0.2, Experimental as of this research — verify runtime performance before shipping this specific sub-feature [UE_BUILD_AUTOMATION §3.1].
8Gaea CLI-automation tier confirmBefore Step 4's heightmap input is generated headlesslyWhoever scripts terrain generation (install-now, no hardware dependency)Indie ($99) tier may not include headless CLI; Pro ($199) may be required; Gaea 3.0 shipped-status is also unconfirmed [RESEARCHED_STACK; ALTERNATIVES_MATRIX Slot 1].
9Boss phase-to-beat fight-AI frameworkBefore Step 6's encounter marker means anything playableGameplay engineering (bespoke, State-Tree-plausible)Not a documentation question at all — no UE-doc answer exists; comparable in scope to the Step 4 shim, but for gameplay code [UE_BUILD_AUTOMATION §7.4, §9 Step 8, §10 item 20].
10Localization / String Table mechanismBefore the first asset ships a player-facing string (§2.4)Whoever finalizes Step 2's codegen FText conventionNo String Table Python/gather-commandlet API was confirmed in any source read for this doc — the FText-column rule is binding, the automation surface is not yet verified [T1_Region_Page_Template §17; RESEARCHED_STACK].
11Remote Control /remote/batch crash bugBefore any automation script depends on batched Remote Control callsWhoever builds the CI/automation harnessA forum-reported crash bug under some conditions, untested against our usage pattern [UE_BUILD_AUTOMATION §1.2, §10 item 2].
12EULA generative-AI clause legal readBefore the pipeline architecture is treated as lockedJosh (legal review — explicitly not resolvable by research)The "prompt-based input" scope is genuinely ambiguous per Epic's own community; exact section numbers are unconfirmed (EULA pages returned 403 to automated fetch). Safe working design meanwhile: AI authors/drives, Epic content never becomes training data [UE_BUILD_AUTOMATION §8.4-8.5, §10 items 18-19].

---

5. Per-region build checklist

The repeatable loop a Build Ready region page drives. Precondition: the page's status field reads

Build Ready, harness/check_region_page.py is green, and every chapter in chapter_set passes

harness/check_spine_graph.py. Scope mirrors T1_Region_Page_Template's own Consumer Loading

Pattern for UE5 Build: the Machine Blocks + Sections 1, 2, 3, 4, 6, 7, 9, 12, 17, 18 [SRC:

T1_Region_Page_Template "Consumer Loading Patterns"].

1. Extract — pull this region's site/beat/fork/scene/SQ rows from every docs/spine/CH_NN.md in chapter_set into CSV/JSON; pull the region page's Zone Catalog + Derived Indexes (Step 2 pre-step).

2. Ingest — refresh/create this region's DataTable rows (Step 2); verify RowName stability against the last build.

3. Scaffold — convert/create the region's .umap, set CellSize, tag protected zones into the SafeZone Data Layer (Step 3).

4. Terrain — synthesize the region's heightmap (DEM → GDAL → Gaea) at a valid vertex size; run the Landscape-import shim with WorldCover-derived initial weightmaps (Step 4).

5. Materials — confirm the pre-authored auto-material self-assigns correctly for this region's WorldCover mix; spot-check for terracing/mismatched layers (Step 5).

6. Populate — instantiate + parameterize the biome-matched PCG template(s) per zone; run the headless per-region PCGWorldPartitionBuilder bake (Step 6).

7. NPCs — batch-generate this region's named/principal MetaHuman roster from Section 12 persona data; assign Crowd/modular actors for background factions; budget the cloud round-trip (Step 7).

8. Quests — wire this region's beat/fork/SQ rows into Blueprint/State-Tree quest logic; confirm every ws_writes/mark_write calls the WorldStateSubsystem (Steps 8, 10).

9. Cinematics — duplicate scene_type templates for this region's scene rows (spine-bound plus the page's own ambient-cinematic additions); resolve participant_refs to the Step 7 NPC assets (Step 9).

10. Validate — run -run=DataValidation against this region's new/changed assets plus custom validators (RowName integrity, reveal-ladder compliance, hard-line checks) (Step 11).

11. Iterate or cook — fold into the next full-project BuildCookRun, or cook this region alone for fast iteration (Step 11).

12. Record — note this region's build state against §4: a region can reach Build Ready on the page and still be blocked by an unresolved spike (no landscape shim yet means no region clears Step 4, regardless of page status).

This doc updates as spikes resolve and as the first real region build surfaces edge cases the

adjudicated research couldn't anticipate — per the versioning discipline in §1, that is a Translation

Doc refinement, not a Pipeline Contract amendment, unless a region build surfaces an actual canonical

schema gap.

Generated by harness/site/structure_site.py — the URL path is the repo path. review root