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>
49 lines
3.3 KiB
Markdown
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 `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.
|