South town MVP: world sim, seasons, granary, contrast test + findings

Godot 4.7 C# world simulation per SPEC.md (with 2026-07-21 amendments).
15 NPCs, 5-state machine, demand-driven work, soul-imprint triad data
model, seasons with winter frost, granary, need-based gift economy,
selfish-soul contrast wiring, daily/per-villager/gift CSV logging.

FINDINGS.md documents the four soak experiments: the dead paradise,
the buffers winning, the emergent hungry gap, and the contrast test
proving the four-town thesis (and that selfishness wins until the
soul-consequence layer exists).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 12:55:30 -04:00
commit 721acbd1aa
31 changed files with 5661 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
using Godot;
namespace WorldSim;
/// <summary>
/// World-state serialization (SPEC §9 amendment).
/// "The world is the save file" — persistence is a first-class MVP system,
/// not a Phase 4 afterthought. Baseline test: save → load → the simulation
/// continues identically (round-trip).
///
/// TODO(Week 4): serialize World.Nodes, Npcs (position, state, inventory,
/// fatigue, health, imprint triad), Buildings, and TotalTicks to JSON at
/// user://worldsim_save.json; load must rebuild identical state.
/// Design note carried from DESIGN.md: when object imprint histories arrive
/// (Phase 3), old imprints compress into net values + a few significant
/// preserved entries — "what the world remembers in detail vs. aggregate"
/// is a design decision expressed as a data policy.
/// </summary>
public static class SaveSystem
{
public static string SavePath => "user://worldsim_save.json";
public static void Save(GameManager gm)
{
// TODO(Week 4): implement JSON round-trip.
GD.Print("[SaveSystem] Save not yet implemented.");
}
public static bool TryLoad(GameManager gm)
{
// TODO(Week 4): implement JSON round-trip.
return false;
}
}