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>
3.3 KiB
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, inScripts/Authoring/.pylibviabootstrap-pylib.sh) writes 16-bit height and 8-bit weight PNGs toRawContent/World/Heightmaps/;create_world.pyrebuilds the level from them throughULandscapeAuthoringLibraryin the newSaltyEditormodule, 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:
ITelemetrySinkwith null, log and JSON Lines sinks;FTelemetryEvent, the envelope andTelemetry::ToJsonLine;TelemetryEventswith the four session names;UTelemetrySubsystem;ASaltyGameModeminting the session id intoASaltyGameState;bs.TelemetryTest; the git hash in the build string (D-42); four Core tests. Proved standalone, and with a headless-serverplus-gameclient sharing one session id. - 2026-09-16 — The editor's MCP: the engine's experimental plugin only listens when
bAutoStartServeris set, so.mcp.jsonrefused untilDefaultEditorPerProjectUserSettings.iniset it (D-43). Enabled the Editor, AutomationTest, GameplayTags, ConfigSettings and LiveCoding toolsets; before that the only toolset was skills. Reconnect with/mcpafter 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 fromProjectSomethingwith class redirects;SaltyCoreandSaltymodules;SaltyServer.Target.cs(unbuildable on the launcher, OD-04);USaltyAssetManagercallingInitGlobalData;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 inContent/, 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 carryFStatBlockDefaults; 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 underSpec/. 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.