neon-sprawl/server
VinPropane a80752848a fewnkj 2026-03-29 23:31:58 -04:00
..
NeonSprawl.Server NS-15 implement position state api 2026-03-29 23:08:17 -04:00
NeonSprawl.Server.Tests NS-15 implement position state api 2026-03-29 23:08:17 -04:00
README.md fewnkj 2026-03-29 23:31:58 -04:00

README.md

Game server (NeonSprawl.Server)

ASP.NET Core .NET 10 host for authoritative simulation (prototype: HTTP + health + in-memory position read API).

Run

cd server/NeonSprawl.Server
dotnet run
  • Default URL is printed by Kestrel (see Properties/launchSettings.json, typically http://localhost:5253).
  • Check GET /health for a JSON heartbeat.

Position state (NS-15)

Authoritative player position is held in memory (no database yet). The HTTP JSON shape is versioned with top-level schemaVersion (see XML docs on PositionStateResponse in the server project). Path {id} is trimmed and matched case-insensitively against stored players; playerId in the JSON body echoes the path segment from the request.

Example (dev player id defaults to dev-local-1 in appsettings.json):

curl -s http://localhost:5253/game/players/dev-local-1/position

Sample response:

{"schemaVersion":1,"playerId":"dev-local-1","position":{"x":0,"y":0,"z":0},"sequence":0}

Unknown player ids return 404. This endpoint is a spike until durable persistence and full sync exist.

For a PR/Jira-ready contract blurb (formatted JSON + field table), see the NS-15 implementation plan — Pull request description.

Solution

From repo root: dotnet build NeonSprawl.sln and dotnet test NeonSprawl.sln.

CI

Pull requests targeting main run build and tests via .github/workflows/dotnet.yml on GitHub Actions (ubuntu-latest runner).