Files
UnrealPrototyping/Docs/Worklog.md
T
Rainer LeitandClaude Fable 5.1 4025b04941 Move the heightmap PNGs out of Content into RawContent/World
The editor offered to import them as textures on every start; source files for authoring scripts do not belong
under Content. create_world.py and generate_heightmap.py read them from RawContent/World/Heightmaps.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 21:19:30 +03:00

3.3 KiB

Worklog

One line per item, newest at the top of each section. What was done, what worked, what did not. Keep it terse; the reasoning lives in the specs, this is the memory.

Done

  • 2026-09-16 — Off the ladder, at the user's request: L_World, a world-partitioned ~200 km² landscape from a seeded heightmap. Scripts/Authoring/generate_heightmap.py (numpy, in Scripts/Authoring/.pylib via bootstrap-pylib.sh) writes 16-bit height and 8-bit weight PNGs to RawContent/World/Heightmaps/; create_world.py rebuilds the level from them through ULandscapeAuthoringLibrary in the new SaltyEditor module, because the engine exposes no landscape creation to Python. Elite_RockyMeadows' landscape material and three layer infos. Swap the terrain by replacing the PNGs and rerunning. Nothing in gameplay references it.
  • 2026-09-16 — Step 2: ITelemetrySink with null, log and JSON Lines sinks; FTelemetryEvent, the envelope and Telemetry::ToJsonLine; TelemetryEvents with the four session names; UTelemetrySubsystem; ASaltyGameMode minting the session id into ASaltyGameState; bs.TelemetryTest; the git hash in the build string (D-42); four Core tests. Proved standalone, and with a headless -server plus -game client sharing one session id.
  • 2026-09-16 — The editor's MCP: the engine's experimental plugin only listens when bAutoStartServer is set, so .mcp.json refused until DefaultEditorPerProjectUserSettings.ini set it (D-43). Enabled the Editor, AutomationTest, GameplayTags, ConfigSettings and LiveCoding toolsets; before that the only toolset was skills. Reconnect with /mcp after the editor is up. Live Coding must be closed before a shell build.
  • 2026-09-16 — Step 1: Salty.uproject (UE 5.8) at the root from the Third Person template, renamed from ProjectSomething with class redirects; SaltyCore and Salty modules; SaltyServer.Target.cs (unbuildable on the launcher, OD-04); USaltyAssetManager calling InitGlobalData; Config/Tags/ with 23 root namespaces; Gameplay Abilities, CommonUI and Python enabled; Scripts/run-tests.sh, build.sh, Authoring/create_gym.py; Git LFS attributes; the placeholder test. Template variants kept as reference (D-41). Four Fab packs in Content/, none used yet (D-39).
  • 2026-09-15 — Spec/Stats.md: one stat block on every body, every outside influence an effect, counters on the receiver (D-37, D-38). Replaced the movement component's own speed-multiplier map, which was the first strand of the spaghetti this exists to prevent; enemies and kits now carry FStatBlockDefaults; step 5 builds it.
  • 2026-09-15 — The documentation set written for Unreal from the two earlier projects' docs: Design.md, Steps.md (fifteen rungs, the first six in full), Ideas.md, Decisions.md (D-01 to D-36, OD-01 to OD-08), and the eight specs under Spec/. No code, no project yet; step 1 is next and waits on OD-01 and OD-02.

Worked

  • (nothing built yet)

Did not work

  • (nothing built yet)

Open

  • Step 1's last proof is a person's: Play In Editor in L_Gym, two players, "Run Dedicated Server" on, two pawns in the gym. Until it is ticked the step is ◐.
  • The default camera mode (OD-03) is deliberately undecided until step 8.
  • The numbers in every spec are the earlier projects' guesses in centimetres and seconds. None has been played.