ITelemetrySink with the null, log and JSON Lines sinks, FTelemetryEvent and the envelope, TelemetryEvents, UTelemetrySubsystem on the game instance, ASaltyGameMode minting the session id into the replicated ASaltyGameState, bs.TelemetryTest, the git hash in the build string (D-42) and four Salty.Core.Telemetry tests replacing the placeholder. Proved standalone and with a headless server plus client sharing one session id. Also enables the engine's Editor, AutomationTest, GameplayTags, ConfigSettings and LiveCoding MCP toolsets (D-43) so the editor's MCP server exposes more than the skills toolset. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2.7 KiB
2.7 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 — 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.