Go to file
VinPropane 185b38b242 NEO-129: add code review for quest-progress completionRewardSummary. 2026-06-07 18:40:05 -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-129: add completionRewardSummary to quest-progress GET. 2026-06-07 18:38:37 -04:00
client NEO-123: Add capstone manual QA and onboarding quest loop docs. 2026-06-07 15:03:29 -04:00
content NEO-124: Document quest completion bundle CI and reconcile plan. 2026-06-07 15:15:53 -04:00
docs NEO-129: add code review for quest-progress completionRewardSummary. 2026-06-07 18:40:05 -04:00
scripts NEO-124: Add quest completion reward bundle schemas, catalog, and CI gates. 2026-06-07 15:15:52 -04:00
server NEO-129: add completionRewardSummary to quest-progress GET. 2026-06-07 18:38:37 -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 NS-15 implement position state api 2026-03-29 23:08:17 -04:00
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 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.

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).