Go to file
VinPropane 1944eeafe8 NEON-29: fix step assist triggering on floor bumps (directional wall check)
The is_on_wall() short-circuits in _step_assist_has_support() and
_step_assist_wallish_blocks() caused the assist to fire whenever the capsule
touched any wall contact — including the sides of random floor bumps while
crossing flat ground toward a distant elevated goal. After a 0.11 m lift,
floor_snap_length = 0.09 m could not reach the original floor (0.11 m away)
and _step_assist_active never cleared, so the capsule floated permanently.

Fixes:
- Remove is_on_wall() blanket short-circuit from both functions.
- _step_assist_has_support() now takes want_dir_xz and accepts wall-ish
  contacts only when they oppose the direction of travel (dot < -0.2),
  i.e. genuine step faces, not sideways bump contacts.
- _step_assist_wallish_blocks() relies solely on the directional collision
  loop (dot < -0.04); no is_on_wall() bypass.
- _try_walk_step_assist() reordered to compute want before calling both
  functions so the same direction vector is used throughout.
- Added "floating free" fallback: if _step_assist_active and no collisions
  and not on floor, clear the flag so FLOOR_SNAP_MOVING restores on the
  next tick. Applied to all three physics paths.
2026-04-11 22:30:07 -04:00
.cursor docs: Require explicit Jira status before story-end transition 2026-04-11 00:06:23 -04:00
.github/workflows NS-21: fail CI if Godot logs SCRIPT ERROR during GdUnit discovery 2026-04-06 22:34:43 -04:00
.vscode chore: refine combat progression mechanics for clarity and balance 2026-04-03 19:07:15 -04:00
client NEON-29: fix step assist triggering on floor bumps (directional wall check) 2026-04-11 22:30:07 -04:00
content chore: CI check for decomposition hybrid vocabulary (suggestion 4) 2026-04-03 21:29:28 -04:00
docs NEON-29: fix step-climb regression (snap Y floor + step assist snap) 2026-04-11 22:15:24 -04:00
scripts chore: Fix gdlint/gdformat and harden pre-push on Windows 2026-04-11 00:01:25 -04:00
server NEON-29: explicitly set HorizontalStepEnabled:false in appsettings 2026-04-11 18:24:52 -04:00
.gitignore chore: gitignore VS Code machine-local settings.json 2026-04-08 22:11:31 -04:00
AGENTS.md docs: Require explicit Jira status before story-end transition 2026-04-11 00:06:23 -04:00
NeonSprawl.sln NS-15 implement position state api 2026-03-29 23:08:17 -04:00
README.md chore: document governing design axioms (fun, cyberpunk theme) 2026-04-04 18:46:55 -04:00
docker-compose.yml Update README and documentation to reflect project rebranding to "Neon Sprawl". Revise links to vision plan and adjust references in tech stack and decomposition documents. Enhance README with repository layout and instructions for running the server and client. 2026-03-29 17:23:00 -04:00
gdlintrc Add gdlintrc for GDScript linting configuration 2026-03-30 21:25:44 -04:00
neon_sprawl_vision.plan.md chore: document governing design axioms (fun, cyberpunk theme) 2026-04-04 18:46:55 -04:00

README.md

Neon Sprawl

Neon Sprawl is the working title for a crafting-focused sci-fi / cyberpunk MMORPG with gigs (combat roles) and open non-combat skills (solo-dev scope). Product intent and phase gates: neon_sprawl_vision.plan.md. Design axioms: it must be fun, and it must stay distinctly cyberpunk in theme (see Design axioms in the vision plan).

Tech stack (locked)

Area Choice
Client Godot 4.x (GDScript)
Game server C# / .NET 10 (ASP.NET Core), PostgreSQL, Protobuf (JSON OK for earliest spike)
Content JSON/YAML + JSON Schema in CI

Full rationale and constraints: docs/architecture/tech_stack.md.

Decomposition

Epic-level breakdown: docs/decomposition/README.md.

Git workflow

  • Documentation (Markdown under docs/, README files, neon_sprawl_vision.plan.md): work and commit directly on main.
  • Code and implementation (server/client source, Godot project, content/ data, Docker/build/CI config): use a branch, then merge to main when ready. Mixed doc + code changes follow the branch rule.

Repository layout (prototype scaffold)

Path Purpose
NeonSprawl.sln .NET solution
server/NeonSprawl.Server/ ASP.NET Core game server
client/ Godot 4.x project (import project.godot)
content/ JSON data + JSON Schema (skills/, schemas/)
docker-compose.yml Local PostgreSQL (docker compose up -d)

Run the server

cd server/NeonSprawl.Server && dotnet run

Then open http://localhost:5253/health (port from launchSettings.json).

Run Postgres locally

docker compose up -d

Connection (dev): host localhost, port 5432, database neon_sprawl, user neon_sprawl, password neon_sprawl_dev.

Run the client

Open the client/ folder in Godot 4.6 and run the main scene (see client/README.md).