Files
UnrealPrototyping/Docs/Worklog.md
T
Rainer LeitandClaude Fable 5.1 1945ef033b L_World: a 200 km2 world-partitioned landscape from a seeded heightmap
Off the ladder at the user's request. Scripts/Authoring/generate_heightmap.py (numpy, installed locally by
bootstrap-pylib.sh) writes a 16-bit height PNG and three 8-bit weight PNGs to Content/World/Heightmaps;
create_world.py rebuilds /Game/Maps/L_World from them through ULandscapeAuthoringLibrary in the new SaltyEditor
module, which wraps ALandscape::Import because the engine exposes no landscape creation to Python. Uses
Elite_RockyMeadows' landscape material and layer infos (the pack itself is still uncommitted). 4033 vertices
a side at 350 cm a quad; swap the PNGs and rerun to change the terrain.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 20:51:37 +03:00

49 lines
3.3 KiB
Markdown

# 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 `Content/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.