Go to file
VinPropane 150cb73f9a NEO-122: Add kickoff implementation plan for quest progress HUD. 2026-06-07 12:40:40 -04:00
.cursor chore: run gdlint/gdformat on pre-push only when client .gd changes. 2026-05-31 19:42:23 -04:00
.github/workflows NEO-83: Fix Bruno CI combat-targets HP state pollution. 2026-05-25 11:28:13 -04:00
.vscode NEO-29: move AAA enforcement to test authoring time 2026-04-25 22:50:03 -04:00
bruno/neon-sprawl-server NEO-120: Add quest accept POST API, tests, and Bruno spine. 2026-06-07 12:18:51 -04:00
client NEO-111: add capstone manual QA script and README loop section. 2026-05-31 20:02:14 -04:00
content NEO-112: document quest catalog CI and reconcile implementation plan 2026-05-31 21:16:12 -04:00
docs NEO-122: Add kickoff implementation plan for quest progress HUD. 2026-06-07 12:40:40 -04:00
scripts NEO-112: enforce objective id uniqueness per quest in CI 2026-05-31 21:23:45 -04:00
server NEO-121: Address review nits for quest telemetry hook sites. 2026-06-07 12:33:34 -04:00
.gitignore chore: gitignore VS Code C# Dev Tools auto-generated runners 2026-05-17 19:09:10 -04:00
AGENTS.md chore: codify full-stack epic decomposition policy 2026-05-24 16:19:32 -04:00
NeonSprawl.sln
README.md chore: document git hooks and gdtoolkit setup in repo README. 2026-05-31 19:45:22 -04:00
docker-compose.yml
gdlintrc NEO-22: Extract WASD locomotion for gdlint max-file-lines 2026-04-17 20:13:36 -04:00
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.

Optional local LLM in Cursor (MLX on Apple Silicon): docs/dev/local-mlx-cursor.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).

Once per clone, from the repo root:

./scripts/install-git-hooks.sh
python3 -m venv .venv-gd
.venv-gd/bin/pip install "gdtoolkit==4.5.0"

This sets core.hooksPath=scripts/git-hooks. On push, when client/scripts/*.gd or client/test/*.gd changed in the commits being pushed, pre-push runs gdlint and gdformat --check on those trees (same as .github/workflows/gdscript.yml). Install gdtoolkit in .venv-gd (gitignored) or globally so the hook can run; otherwise pushes with GDScript changes are blocked.

Windows (PowerShell): pwsh -File scripts/install-git-hooks.ps1, then create .venv-gd and pip install "gdtoolkit==4.5.0" the same way.

More detail: client/README.md (Git hooks section).