Commit Graph

51 Commits

Author SHA1 Message Date
Rijad Zuzo 49c5bda651 merge: integrate remote player quest slices 2026-08-16 16:53:30 +02:00
Rijad Zuzo b3b98c6456 feat: unify authored activity commands 2026-08-13 00:08:30 +02:00
Rijad Zuzo f8734422a0 feat: add playable generated dialogue mode 2026-08-12 21:16:15 +02:00
Rijad Zuzo 34428d836a perf: harden runtime for weaker hardware 2026-08-12 10:02:45 +02:00
Rijad Zuzo 661d53f31a feat: shared creature root, enemy definitions, defend duty, and player downing 2026-08-12 00:16:48 +02:00
Rijad Zuzo b62f7b86cc feat: add player sword combat, dash, and hostile wolf/raider visuals 2026-08-11 20:49:43 +02:00
Rijad Zuzo 37f262fb84 feat: let the player live as a citizen with needs and carried inventory 2026-08-11 00:18:39 +02:00
Rijad Zuzo 9ed985d6a3 feat: surface inspected villager's open village need in field notes 2026-08-10 23:36:47 +02:00
admin 0936ae6450 feat: let the player talk to villagers and accept or decline personal requests 2026-08-09 00:10:36 +02:00
admin 5e6c963d23 feat: give the player a real carried inventory and deposit transactions 2026-08-08 23:59:19 +02:00
admin 9678526c5a feat: give the player embodied hunger, energy, and starvation death 2026-08-08 23:38:50 +02:00
admin 4d2a230c5b feat: surface open opportunity need on villager field note 2026-08-08 16:18:39 +02:00
Rijad Zuzo 2082773d31 feat: add nearby villager field notes 2026-08-03 12:47:54 +02:00
Rijad Zuzo 7d410d8193 feat: add exact player context actions 2026-07-30 23:27:46 +02:00
Rijad Zuzo f79c2bb630 feat: introduce identity-backed goat 2026-07-26 22:26:00 +02:00
Rijad Zuzo 2c88ed6ea8 feat: scale village queries and enrich Jajce center 2026-07-16 23:51:08 +02:00
Rijad Zuzo f82d9683de feat: package pantry crisis demo 2026-07-16 00:37:59 +02:00
Rijad Zuzo c23f6887c8 feat: make pantry crises visible in the world 2026-07-14 23:54:22 +02:00
Rijad Zuzo 9fcf6a0a58 feat: add person history and trust reactions 2026-07-12 11:42:10 +02:00
Rijad Zuzo 81409650df feat: add witnessed knowledge and wind ambience 2026-07-11 11:27:40 +02:00
Rijad Zuzo ce8f71082b refactor: clarify simulation ownership 2026-07-10 11:02:11 +02:00
Rijad Zuzo 39989002ca feat: add stylized villager presentation 2026-07-09 23:47:46 +02:00
admin 5251644b78 feat: stage simulation garden first read 2026-07-08 16:47:25 +02:00
admin cd0309e224 feat: add cinematic npc task glyphs 2026-07-08 16:31:34 +02:00
admin d2eca15ecd fix: camera tracks player elevation; snap all world objects to terrain
Camera: desired_focus_position.y now directly tracks the player's global Y. The existing smooth lerp on focus_position handles interpolation, so the camera follows the player up hills and down slopes without losing vertical sight. Previously only horizontally-deadzoned XZ was tracked.

jajce_world.gd: expanded terrain-snapping coverage to include all nodes under WorldObjects (ResourceNodes, StorageSites, ActivitySites) and the FortressBlockout's children. Added a type guard so non-Node3D children are safely skipped. This prevents houses, activity props, storage crates, and resource nodes from floating above or sinking below the sculpted terrain surface.
2026-07-07 17:07:57 +02:00
admin 41b515f474 fix: ground physics on real Terrain3D surface
Enable Terrain3D collision_mode=1 so the sculpted landscape provides real physical ground for player and NPCs. Disable GreyboxGround collision (layer/mask = 0) -- it is no longer the active physical floor.

NpcVisual no longer flattens nav waypoint Y to its current elevation. It now follows 3D path points and uses gravity (30 m/s^2) like the player, settling to terrain surface via is_on_floor() + Terrain3D collision. The flat NavigationMesh_greybox still provides correct lateral guidance; physics handles vertical grounding on slopes.

This fixes the player-walking-through-slopes bug and makes NPC movement follow actual terrain elevation for the village area (gentle slopes, ~2.4m noise amplitude). All 10 scenarios pass.
2026-07-07 16:56:15 +02:00
admin 4bfc09d5f6 feat: add simulation garden demo controls 2026-07-07 15:56:24 +02:00
admin 4c090f1635 feat: replace activity markers with typed sites 2026-07-07 13:27:02 +02:00
admin e5bd93d705 feat: add typed pantry storage site 2026-07-07 12:57:47 +02:00
admin 3517762864 feat: add scrollwheel camera zoom
Mouse wheel up/down smoothly zooms the camera in and out. Zoom range: close-in overview (5 high, 4 back) to wide survey (16 high, 12 back). Default sits at midpoint (10 high, 8 back) matching the previous fixed offset. Configurable via min_zoom_offset, max_zoom_offset, and zoom_step exports. Zoom interpolates with the same follow_speed as position tracking for consistent feel.
2026-07-06 00:07:54 +02:00
admin 3379d08b93 chore: remove dead PlayerInteraction.gd stub
The file contained only 'extends Node' with no implementation, was referenced nowhere in any scene or script, and the uid sidecar was orphaned. The next interaction surface should be planned and implemented fresh when needed.
2026-07-05 23:54:59 +02:00
admin d883148132 feat: add npc decision inspector 2026-07-05 23:50:18 +02:00
admin 4463e524aa style: apply gdformat formatting across the entire project
Auto-format all GDScript files using gdformat from gdtoolkit.
This is a baseline formatting pass to ensure consistent style:

- Normalizes indentation and spacing
- Wraps long lines to 100 characters
- Removes trailing whitespace
- Standardizes blank lines between functions

68 files reformatted, 8 files left unchanged (3rd-party addon files
with parse errors excluded).
2026-07-05 23:06:23 +02:00
admin f9601a67d1 feat: add structured economic events 2026-07-05 18:04:11 +02:00
admin 6dbb395bd6 feat: add location-based food storage loop 2026-07-05 17:57:24 +02:00
admin a8ae331f51 feat: synchronize authoritative npc position
- NpcVisual emits position_changed signal during _physics_process
- SimulationManager.synchronize_npc_position() writes active position
  into SimNPC state on movement, arrival, and navigation failure
- WorldViewManager forwards position_changed and syncs before
  despawn/reload
- SimNPC stores travel_target_position and has_travel_target as
  versioned state; NPCStateRecord v2 persists them with v1 migration
- WorldViewManager.spawn_npc_visual() resumes travel for traveling NPCs
  via SimulationManager.request_current_travel()
- WorldViewManager.despawn_npc_visual() syncs position before removal
- WorldViewManager.reload_npc_visual() spawns a visual from persisted
  state without rerolling target selection
- tests/npc_visual_lifecycle_test.gd proves unload/reload preserves
  action, target, reservation, position, RNG state, and checksum
- simulation_state_serialization_test adds legacy v1 NPC migration test
  that does not invent an active travel target
2026-07-05 17:21:17 +02:00
admin f816f3976a feat: add simulation action definitions 2026-07-05 13:35:33 +02:00
admin 363620b731 refactor: move resource authority into simulation 2026-07-05 13:26:19 +02:00
admin 326df51cbe feat: add player resource node harvesting 2026-07-04 19:47:31 +02:00
admin b8752f8835 feat: add navigation_failed signal with time-based stuck detection and simulation pipeline
NpcVisual:
- Add navigation_failed(sim_id) signal distinct from arrived_at_target
  so the simulation layer can distinguish genuine arrival from failure
- Replace integer stuck_counter with delta-based stuck_time and
  exported stuck_timeout (1.5s) for frame-rate-independent detection
- Add path_request_id / path_pending mechanism to reject stale
  async path results when a new target is set or NPC dies
- On empty path or stuck movement, emit navigation_failed instead
  of arriving; only emit arrived_at_target when truly close to target
- Reduce arrival_distance back to 0.6 now that navigation_failure
  is properly signalled (no longer needed as a workaround)
- clamp arrival_distance reference in apply_dead_visual_state

SimNPC:
- Remove retry_count (replaced by navigation_failed signal pathway)
- Move last_task assignment from set_task() to task completion in
  SimulationManager so it reflects the task that actually finished

SimulationManager:
- Add notify_npc_navigation_failed(): release reservation, record
  last_task, send NPC to wander for 2s, emit task_changed signal
- Add notify_npc_target_unavailable() as public alias of above
- Guard extraction with node.reserved_by == npc.id to prevent
  stale/illegitimate extraction when reservation is lost
- Guard fallback zone task completion (apply_npc_task) so it only
  fires for non-resource tasks (gather_food/wood with no target
  silently skip instead of applying zone values)
- Remove retry_count safety net (fully replaced by signal pipeline)

WorldViewManager:
- Connect navigation_failed signal in spawn_npc_visual()
- Skip target assignment for empty/idle/dead task states
- When no resource node available for gather_food/wood, call
  notify_npc_target_unavailable() so NPC wanders instead of idling
- Add _on_npc_visual_navigation_failed handler delegating to
  SimulationManager.notify_npc_navigation_failed()
- Remove retry_count references
2026-07-04 19:24:30 +02:00
admin 41bfc8d90a fix: empty-path re-entrancy, retry_count reset, := to = for Variant 2026-07-03 18:51:13 +02:00
Rijad Zuzo 5e171ae63a chore: change the dead npcs to have no collision 2026-06-22 00:00:32 +02:00
Rijad Zuzo b5e2493c2a feat: add proper death from starvation and survival tasks urgency 2026-06-21 23:37:58 +02:00
Rijad Zuzo eef2068747 feat: add better priorities setting 2026-06-21 14:41:19 +02:00
Rijad Zuzo 052b36a4e7 feat: add completition of work only after work is done 2026-06-21 00:11:34 +02:00
Rijad Zuzo bdc1f88b6f feat: add user interaction with the task zones 2026-06-20 18:55:09 +02:00
Rijad Zuzo 4fb1cfabc1 fix: Camera smoothing and start some interaction/consequences to the village part 2026-06-20 15:50:31 +02:00
Rijad Zuzo c37eb9bd3d feat: add behaviour events from the simulation results 2026-06-19 10:42:11 +02:00
Rijad Zuzo af3495f4e3 feat: add npc path finding to the zones based on needs 2026-06-19 10:02:42 +02:00
Rijad Zuzo e2549ac50c feat: add movment based on needs with themed zones 2026-06-19 08:08:17 +02:00