Design documents · Engineering

Decisions to make, and the risks

Open decisions and risks of the Unreal port.

Decisions (defaults are what the plan assumes)

#DecisionDefault in the plan
1Unreal version5.6 (5.5 or newer; the C++ is plain UE5 API). Pick one and keep it for the whole port.
2C++ or BlueprintC++ for all logic (a text-only model can write it); Blueprints only for data tweaks, widget layout and animation graphs.
3Faithful or improvedFaithful: same rules, numbers, ids and strings as the Unity build. Improvements after parity.
4UI technologyUMG with CommonUI base classes; layouts built in the editor from the Unity window spec.
5LocalisationKeep the CSV files and a small UEmbersLoc loader (the Unity design); String Tables later if translation work starts.
6SavesKeep the JSON save format (same keys) so Unity saves load in Unreal; FJsonObjectConverter and a slot folder in Saved/.
7CharactersSynty Sidekick bodies (check the pack's licence covers Unreal; Synty sells an Unreal version) and the Meshy models; Kevin Iglesias animations retargeted with IK Retargeter.
8RenderingLumen and Nanite on for world meshes; keep the dark moody look by hand-tuning exposure and fog per zone.
9Where the Unity project lives meanwhileUnity stays the source of truth until Milestone D; do not change both. New design work goes into Unity and the export is refreshed.

Risks

  • A 14B local model writes C++ that does not compile on the first try. Expect 3 to 6 fix rounds per phase and a few files a person (or Claude) has to fix. The plan is built around this: small cards, deterministic names, headers of already-ported types in every prompt, a compile-and-fix loop (fix_build.py), ported tests as the proof.
  • API hallucination. The model sometimes invents engine functions. The ground rules ask for // TODO(port): verify API; grep for it after each phase and fix those first.
  • Large files (BossBrain 746 lines, HudView 590, InventoryWindow 522) are split into parts; the seams are the most likely place for errors.
  • The UI is 5,670 lines and Unity-Toolkit specific: it is ported as logic and widget classes, not as visuals. Expect real editor work (layout, style) per window.
  • Art licences: Poly Haven (CC0) and Meshy outputs are fine; Synty and asset-store packs need a check for Unreal use; the Hunyuan3D model must NOT be used (EU licence), as in Unity.
  • Animation: Unity's Animator controllers do not convert. Locomotion, attack, cast, hit and death states are rebuilt in an Animation Blueprint; this is manual.
  • Procedural builders are not ported. 120 C# editor files build the zones; Unreal gets the result (the exported layout), so later layout changes are made in Unreal by hand or by re-exporting from Unity until the cut-over.
  • Time: a realistic estimate is 2 to 4 weeks of part-time work to Milestone C (all systems), another 2 to 4 to Milestone D (playable parity), mostly editor work and fixing, not model time.

What would make it much faster

Using a stronger model for the compile-and-fix loop (Claude Code can read the build log and the project directly and fix files in place), and keeping the local model for the first-pass generation of the many small, mechanical cards (P01 to P03, P08, P12). The plan files and the runner work the same either way.

All design documents