Fix the southward migration: explore direction had a hardcoded +Y bias
Root cause of towns (East worst) drifting south: when an exploring soul was at its anchor with no outward vector, the fallback direction was Vector2(PersonalityModifier, 1 - Abs(PersonalityModifier)) - and with PersonalityModifier tiny (+-0.2) that Y-component was always ~+0.9. +Y is south, so every town's explorers got shoved into the southern corner. East showed it worst (selfish souls strip resources fastest, so they explore most). Now the at-anchor direction comes from the soul's identity hash, spread around the full compass. Supporting fixes: exploration is bounded to a ~140-unit home range (forage out and back, don't march to the horizon); private homesteads clamp to within 120 units of the town anchor (selfish souls sprawl on their OWN land, not into a neighbor's). Result: every East home now founds near the east anchor (x~870 vs the anchor's 962), none in South's territory, and East is the healthiest town. Also widened the map view (880 -> 1060px) to use more of the window - the world grew to 1152 but the render was a fixed square, so it looked no bigger. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -14,10 +14,10 @@ public partial class Visualization : Node2D
|
||||
|
||||
// Layout: 1600×900 window — map fills the left square, panel the right.
|
||||
private const float MapOffset = 10f;
|
||||
private const float MapPixels = 880f;
|
||||
private const float CellPixels = MapPixels / World.GridSize; // ~3.44
|
||||
private const float PanelX = 910f;
|
||||
private const float PanelWidth = 680f;
|
||||
private const float MapPixels = 1060f; // fills most of the 1600px window
|
||||
private const float CellPixels = MapPixels / World.GridSize;
|
||||
private const float PanelX = 1085f;
|
||||
private const float PanelWidth = 505f;
|
||||
|
||||
private static readonly Color PanelBg = new(0.10f, 0.10f, 0.12f);
|
||||
private static readonly Color MapBg = new(0.13f, 0.13f, 0.15f);
|
||||
|
||||
Reference in New Issue
Block a user