Commit Graph

161 Commits (f1b4e50729a791c4f43e5fc0fa66ca784cb07f4b)

Author SHA1 Message Date
VinPropane f1b4e50729 NEON-27: finalise review (Approved) + Godot uid files
Review verdict updated to Approved; all blocking issues and suggestions
resolved and documented. Add auto-generated Godot .uid sidecar files for
occlusion_policy.gd and occlusion_policy_test.gd.
2026-04-08 23:55:29 -04:00
VinPropane 71232c36ef NEON-27: address review suggestions — doc alignment pass
- Plan: reconcile null-material prose in "Material override strategy"
  to match implementation (null → new StandardMaterial3D, not skipped)
- module_dependency_register.md: E1.M2 note updated — occlusion shipped,
  only integration hardening (NEON-28) remains
- documentation_and_implementation_alignment.md: add E1.M2 tracking row
  (NEON-25–27 shipped, NEON-28 open)
- Review: strike through both suggestions as Done
2026-04-08 23:52:46 -04:00
VinPropane 5e16fdccc8 NEON-27: restore occluders on all _process early-return paths
Fixes review blocking issue: when the follow target is null (freed,
renamed, or path unresolved) or the Camera3D child is missing,
_restore_all_occluders() is now called before returning so geometry
cannot be left stuck semi-transparent.
2026-04-08 23:50:48 -04:00
VinPropane 8bc2efb854 NEON-27: check off all acceptance criteria; record PR screenshots
Before/after evidence: obstacle fades to ~25% alpha when occluding the
player; restores on clear. All three ACs satisfied.
2026-04-08 23:42:31 -04:00
VinPropane 15d405261f NEON-27: implement OcclusionPolicy — RayCast-based material fade
Adds OcclusionPolicy resource and wires it into IsometricFollowCamera.
Each _process frame, iterative rays from the camera eye to the player
focus detect bodies tagged "occluder"; their MeshInstance3D surfaces are
overridden with a transparent StandardMaterial3D (fade_alpha=0.25, instant).
Materials restore when the body clears the ray. Null-material surfaces
(e.g. the prototype Obstacle with no material assigned) receive a plain
transparent StandardMaterial3D so they fade correctly.

- client/scripts/occlusion_policy.gd — new Resource (enabled, fade_alpha,
  occluder_group, occluder_collision_mask, max_occluder_cast_depth,
  occluder_count_log_threshold, is_valid)
- client/resources/isometric_occlusion_policy.tres — default instance
- client/scripts/isometric_follow_camera.gd — occlusion_policy export,
  _update_occlusion pipeline, _apply_occluder_fade/_restore_occluder helpers,
  static occlusion_policy_is_valid guard, _exit_tree cleanup
- client/scenes/main.tscn — Obstacle tagged "occluder", policy assigned
- client/test/occlusion_policy_test.gd — new GdUnit4 unit tests
- client/test/isometric_follow_camera_test.gd — policy guard static tests
- docs/decomposition/modules/E1_M2_IsometricCameraController.md — NEON-27
  snapshot + readability demo gate note
- docs/plans/NEON-27-implementation-plan.md — null-material decision recorded
2026-04-08 23:34:00 -04:00
VinPropane b2d2500e6a NEON-27: record planning decisions in implementation plan
Occluder ID: explicit group tag. Fade: instant (no Tween). Non-StandardMaterial3D
surfaces: skip + push_warning. Rationale documented in Decisions table.
2026-04-08 23:28:02 -04:00
VinPropane 185af5a7f6 NEON-27: add implementation plan for OcclusionPolicy
Documents RayCast-based material-fade approach, files to add/modify,
GdUnit4 test coverage, and readability risk gate note.
2026-04-08 23:21:51 -04:00
VinPropane ae643bc81c NEON-26: refresh review after follow-up fixes 2026-04-08 23:00:10 -04:00
VinPropane ff830813c7 NEON-26: address code review follow-ups (zoom validation, docs) 2026-04-08 22:58:28 -04:00
VinPropane b9ec6ccb0f NEON-26: add code review notes for zoom bands 2026-04-08 22:55:37 -04:00
VinPropane 753ce84861 NEON-26: ZoomBandConfig, discrete zoom input, CameraState sync 2026-04-08 22:32:45 -04:00
VinPropane f4a30b1b9d NEON-26: add implementation plan for zoom bands 2026-04-08 22:17:36 -04:00
VinPropane e000da20ee NEON-15: address review nits (shutdown token, plan verification note) 2026-04-08 22:09:12 -04:00
VinPropane adde98e4a8 chore: review follow-up uses strikethrough on suggestions, not extra section 2026-04-08 22:06:17 -04:00
VinPropane 8c3e8c0a03 NEON-15: apply code review doc suggestions (E1.M1 pointers, PR notes) 2026-04-08 21:59:53 -04:00
VinPropane 2617b65f79 NEON-15: add code review (2026-04-08) 2026-04-08 21:58:18 -04:00
VinPropane 62ff210830 NEON-15: log plan decisions; require docs sync for planning/implementation 2026-04-08 21:49:56 -04:00
VinPropane abffd29299 NEON-15: add implementation plan for NpgsqlDataSource shutdown 2026-04-08 21:16:50 -04:00
VinPropane e96f70d889 NEON-25: follow-up from code review (missing target warn, docs, E1.M2 status) 2026-04-07 23:54:27 -04:00
VinPropane f4b34316a6 NEON-25: add code review for isometric follow camera 2026-04-07 23:51:46 -04:00
VinPropane 4930fd89a6 NEON-25: isometric follow camera, CameraState, tests, and docs 2026-04-07 23:46:04 -04:00
VinPropane 262abb5f2e NEON-29: register prototype district story in E1.M2 backlog 2026-04-07 23:38:55 -04:00
VinPropane 644bfc8c3d NEON-25: lock low-controversy camera defaults in implementation plan 2026-04-07 23:34:20 -04:00
VinPropane 00c2c4520e NEON-25: add implementation plan for isometric follow camera 2026-04-07 23:27:44 -04:00
VinPropane 09257b4cc3 chore: align E1.M2 Jira table with NEON-25 summary 2026-04-07 23:21:45 -04:00
VinPropane 2b00de309b chore: expand E1.M2 module doc (Jira backlog, rotation policy)
- Link NEON-10/NEON-25–28 under parent NEON-1 in Summary and Jira backlog table
- Document mid-project-only yaw orbit compromise; post-release camera model settled
- Extend CameraState contract and slice/risk notes accordingly
2026-04-07 23:12:48 -04:00
VinPropane 175c6e0500 chore: document Jira epic→story + labels (no Feature issues)
Module/slice grouping below epics is labels on stories only; Feature
work items are not used. Cross-link from jira-git-naming, story kickoff,
and documentation alignment table.
2026-04-07 00:20:01 -04:00
VinPropane fa19ab7337 chore: migrate Jira references from NS-* to NEON-* in docs and rules
Rename implementation plans and dated reviews to NEON issue numbers per
Atlassian project re-key. Update browse URLs, cross-links, module docs,
client/server READMEs, and Cursor rules (project key NEON).
2026-04-07 00:15:06 -04:00
VinPropane 791c7dad1b
Merge branch 'main' into NS-21-gdscript-unit-testing 2026-04-06 22:22:16 -04:00
VinPropane 7b11d4e238 NS-24: Eliminate idle jitter and movement QA bumps (Godot client)
Physics: Jolt 3D; physics_interpolation off; 120 TPS. CharacterBody3D idle
path uses dual floor_max_angle, rim/straddle and ridged-contact handling,
rim settle and random-floor-bump lip/wall escape, floor_block_on_wall,
NavigationAgent3D avoidance off, per-node interp off. No global_transform in
_process (avoid render/physics ghosting).

QA geometry: random_floor_bumps.gd (load from main.gd); each bump on its own
StaticBody3D under NavigationRegion3D; random_floor_bump_collision_constants.gd
for collider fudge and RANDOM_FLOOR_BUMP_MESH_GROUP.

Scene: player safe_margin and mesh Y lift; MoveRejectPedestal / MoveRejectFarPad
renamed from NS19*; Mat_player_capsule without polygon_offset (per follow-up).

Docs: NS-24 plan + resolution, client/README manual steps, code review
2026-04-05-NS-24.md; server/README bump height note. Code/scene identifiers
avoid ticket-based ns19_* naming.
2026-04-06 00:32:41 -04:00
VinPropane a02e54da2d NS-21: fold test CI into gdscript.yml; document test-with-scripts policy 2026-04-05 21:21:58 -04:00
VinPropane 6ff0c77da5 NS-21: add implementation plan for GDScript unit testing 2026-04-05 21:03:12 -04:00
VinPropane 43b58a8bc7 chore: align E1.M1 decomposition with NS-10 Done (Ready) 2026-04-05 15:16:16 -04:00
VinPropane f412da8f44 docs: Mark NS-23 code review blocking items and suggestions done 2026-04-05 15:04:39 -04:00
VinPropane d22d252b59 docs: Link NS-24 for idle jitter (plan + client README) 2026-04-05 15:04:09 -04:00
VinPropane 14a6813985 NS-23: Document movement tradeoff — no required obstacle auto-nav
Align plan, client/server README, E1.M1 snapshot, and code review note with
the chosen design: descend bypass favors smooth stepped surfaces; multi-click
around obstacles is OK. NS-24 remains for idle jitter.
2026-04-05 14:56:52 -04:00
VinPropane 2891a4553a docs: NS-23 branch code review (2026-04-05) 2026-04-05 14:52:08 -04:00
VinPropane 0ac059fa3b NS-23: NavigationAgent3D path-follow with server move authority 2026-04-05 00:23:03 -04:00
VinPropane 1f4e3c49f6 NS-23: Resolve agent tuning and nav sync risks in implementation plan 2026-04-05 00:14:37 -04:00
VinPropane ec3c0ee4fe NS-23: Add implementation plan and E1.M1 snapshot for path-follow kickoff 2026-04-05 00:10:11 -04:00
VinPropane 32d2153acb NS-19: server move validation, client rejection UX, scene QA props 2026-04-04 23:39:40 -04:00
VinPropane 7f81378361 NS-19: plan walkable bumps and tall pedestal for manual validation 2026-04-04 23:17:16 -04:00
VinPropane 8e421d09c1 NS-19: add files to add/modify and tests sections to plan 2026-04-04 23:14:47 -04:00
VinPropane 95f770d8ea NS-19: lock move validation plan to reject policy 2026-04-04 23:13:10 -04:00
VinPropane b043e8ac45 NS-18: InteractionRequest, client prototype, Postgres test UX
Server: POST /game/players/{id}/interact, HorizontalReach, prototype registry, DTOs, tests; default spawn (-5,0.9,-5); dev HttpLogging.

Client: terminal, radius glow preview, interaction_request_client (interact/E), main wiring; obstacle moved off center.

Tests: postgres.runsettings, launchSettings, Docker compose auto-start/teardown harness, async-safe init.

Docs: plan AC, E1.M1 snapshot, alignment table, server/client README, code review 2026-04-04.
2026-04-04 20:19:33 -04:00
VinPropane 06f9ce8647 NS-18: add implementation plan for InteractionRequest range check 2026-04-04 18:55:13 -04:00
VinPropane f762240ff8 chore: document governing design axioms (fun, cyberpunk theme) 2026-04-04 18:46:55 -04:00
VinPropane 3d9ea1fc6c chore: mark vision-plan suggestion done in final docs review 2026-04-03 22:58:14 -04:00
VinPropane a0544f4d33 chore: final branch docs review and Epic 2 E2.M2 note fix
Add docs/reviews/2026-04-03-final-branch-docs-review.md. Correct epic
E2.M2 integration note: E5.M1 uses gig progression, not E2.M2 skill XP.
2026-04-03 22:55:21 -04:00
VinPropane 0dea48e9fa chore: add zones game-design doc and cross-links
Add docs/game-design/zones.md for place identity (tone, economy, faction
hooks) on the E4.M1 graph, distinct from risk-security-bands tier rules.
Link from overview, README, related vision docs, brainstorm table, and
docs-review-agent; anchor Epic 4 slice 1 for deep links.
2026-04-03 22:47:05 -04:00