refactor(simulation): simplify vision cone to forward-only 120° arc
Remove the peripheral sector (100° half-angle, reduced range) and blind spot classification. The server now sends only tiles within the 120° forward cone; the client renders previously-explored tiles behind the player with a light fog overlay instead. This eliminates complexity in both the cone classifier and the snapshot protocol while preserving the core information asymmetry — you still can't see behind you, and the monologue system (D-016) still bridges the perceptual gap. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -590,10 +590,10 @@ fn npc_behind_wall_excluded_from_multi_entity_snapshot() {
|
||||
));
|
||||
// NPC 1: behind wall (should be hidden)
|
||||
world.spawn((crate::npc::Npc, TilePosition::new(16, 13, 0)));
|
||||
// NPC 2: to the side, no wall (should be visible)
|
||||
// NPC 2: NW diagonal, in forward cone (should be visible)
|
||||
world.spawn((crate::npc::Npc, TilePosition::new(14, 14, 0)));
|
||||
// NPC 3: also visible
|
||||
world.spawn((crate::npc::Npc, TilePosition::new(18, 15, 0)));
|
||||
// NPC 3: NE diagonal, in forward cone (should be visible)
|
||||
world.spawn((crate::npc::Npc, TilePosition::new(18, 14, 0)));
|
||||
|
||||
run_observer_pipeline(&mut world);
|
||||
|
||||
@@ -1911,7 +1911,7 @@ fn equidistant_npcs_produce_stable_snapshot_ordering() {
|
||||
let mut world = setup_world(32, 32);
|
||||
let mut registry = EntityRegistry::new(0);
|
||||
|
||||
// Three NPCs equidistant from observer at (16,16) — all 2 tiles away.
|
||||
// Three NPCs equidistant from observer at (16,16) — all within forward cone.
|
||||
// Spawn order: npc_a, npc_b, npc_c → ascending stable_ids.
|
||||
let npc_a = world
|
||||
.spawn((crate::npc::Npc, TilePosition::new(16, 14, 0)))
|
||||
@@ -1919,12 +1919,12 @@ fn equidistant_npcs_produce_stable_snapshot_ordering() {
|
||||
let npc_a_sid = registry.register(npc_a);
|
||||
|
||||
let npc_b = world
|
||||
.spawn((crate::npc::Npc, TilePosition::new(14, 16, 0)))
|
||||
.spawn((crate::npc::Npc, TilePosition::new(14, 14, 0)))
|
||||
.id();
|
||||
let npc_b_sid = registry.register(npc_b);
|
||||
|
||||
let npc_c = world
|
||||
.spawn((crate::npc::Npc, TilePosition::new(18, 16, 0)))
|
||||
.spawn((crate::npc::Npc, TilePosition::new(18, 14, 0)))
|
||||
.id();
|
||||
let npc_c_sid = registry.register(npc_c);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user