Go to file
VinPropane cb001a9369 NEON-29: fix descend bypass using wrong feet_y, trapping player on first step
capsule_feet_y was called with CAPSULE_HALF_HEIGHT (0.5, cylinder half only),
giving a "code-feet" that is 0.4 m above the actual capsule bottom.

From the first step (body Y=1.2): code-feet = 0.7, which is above the
platform goal (Y=0.6). 0.6 < 0.64 triggered the descend bypass even though
the player needed to ascend. Each bypass tick used FLOOR_SNAP_MOVING=0.32 m,
which snapped the capsule back to the step surface (0.11 m below the
assist-lifted bottom), undoing every step assist lift in an oscillation loop.
The player appeared to float at first-step height and could not reach the
second platform.

Fix: use CAPSULE_HALF_HEIGHT + PLAYER_CAPSULE_RADIUS (=0.9, the actual
capsule bottom) for the feet_y in the descend bypass condition. The bypass
now fires only when the goal surface is genuinely below the player's physical
feet, not when the player needs to ascend through stepped geometry.

Also use WALK_STEP_ASSIST_SNAP instead of FLOOR_SNAP_MOVING in the descend
bypass when _step_assist_active is true, so any remaining overlap cannot undo
a step assist lift via the large snap.
2026-04-11 22:46:17 -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 descend bypass using wrong feet_y, trapping player on first step 2026-04-11 22:46:17 -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).