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. |
||
|---|---|---|
| .cursor | ||
| .github/workflows | ||
| .vscode | ||
| client | ||
| content | ||
| docs | ||
| scripts | ||
| server | ||
| .gitignore | ||
| AGENTS.md | ||
| NeonSprawl.sln | ||
| README.md | ||
| docker-compose.yml | ||
| gdlintrc | ||
| neon_sprawl_vision.plan.md | ||
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 onmain. - Code and implementation (server/client source, Godot project,
content/data, Docker/build/CI config): use a branch, then merge tomainwhen 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).