Run 13: the full world - four towns, resources, bonds, spatial grid
World scaled 3x (768x768) with all four towns at compass points, each running its own soul culture: North generational, South nature, West materialist (new profile), East selfish. Two new resources: Ore (metal tier) and Herb (medicine - mends health, reason to forage, trade good). Spatial hash grid replaces O(n^2) proximity scans (soul pressure, neighbor, teacher) - 3.6x headless speedup at ~80 NPCs. First social verb beyond work: pair-bonds - settled adults who keep warm company pair up; warmth now accrues from proximity not only gifts; bonds break at death. Reproduction deferred (bonds-first per plan). The four-town thesis fully realized on one engine (240-day run): North know 1.27 clean, South nourish 0.85 clean, West prosperous but debris 0.23, East hungriest 0.60 and lowest knowledge 1.08. Positive cultures stay soul-clean, negative ones carry real debris, all from behavior weights - nothing scripted. 99 bonds, 80 deaths, four living societies. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+10
-7
@@ -4,7 +4,7 @@ using Godot;
|
||||
|
||||
namespace WorldSim;
|
||||
|
||||
public enum MaterialKind { Wood, Stone, Clay, Water, Food }
|
||||
public enum MaterialKind { Wood, Stone, Clay, Water, Food, Ore, Herb }
|
||||
|
||||
/// <summary>
|
||||
/// A harvestable resource node on the grid (SPEC §6).
|
||||
@@ -28,7 +28,7 @@ public class ResourceNode
|
||||
/// </summary>
|
||||
public class World
|
||||
{
|
||||
public const int GridSize = 256;
|
||||
public const int GridSize = 768;
|
||||
|
||||
public List<ResourceNode> Nodes { get; } = new();
|
||||
|
||||
@@ -49,11 +49,14 @@ public class World
|
||||
/// </summary>
|
||||
public void Generate()
|
||||
{
|
||||
PlaceMany(MaterialKind.Water, count: 6, amount: float.PositiveInfinity, regen: 0f);
|
||||
PlaceMany(MaterialKind.Clay, count: 10, amount: 40f, regen: 0.5f); // TODO: constrain near water
|
||||
PlaceMany(MaterialKind.Wood, count: 60, amount: 30f, regen: 2f);
|
||||
PlaceMany(MaterialKind.Stone, count: 12, amount: 80f, regen: 0f);
|
||||
PlaceMany(MaterialKind.Food, count: 40, amount: 20f, regen: 4f); // South: flora most abundant
|
||||
// Resource counts scale ~9× with the 3× larger world so density holds.
|
||||
PlaceMany(MaterialKind.Water, count: 40, amount: float.PositiveInfinity, regen: 0f);
|
||||
PlaceMany(MaterialKind.Clay, count: 80, amount: 40f, regen: 0.5f);
|
||||
PlaceMany(MaterialKind.Wood, count: 480, amount: 30f, regen: 2f);
|
||||
PlaceMany(MaterialKind.Stone, count: 140, amount: 80f, regen: 0f); // more deposits — housing was stone-capped
|
||||
PlaceMany(MaterialKind.Food, count: 360, amount: 20f, regen: 4f);
|
||||
PlaceMany(MaterialKind.Ore, count: 40, amount: 60f, regen: 0f); // metal source (post-MVP tier)
|
||||
PlaceMany(MaterialKind.Herb, count: 120, amount: 15f, regen: 3f); // medicine / trade good
|
||||
}
|
||||
|
||||
private void PlaceMany(MaterialKind kind, int count, float amount, float regen)
|
||||
|
||||
Reference in New Issue
Block a user