docs/decomposition-follow-up #3
|
|
@ -0,0 +1,24 @@
|
||||||
|
# .NET
|
||||||
|
bin/
|
||||||
|
obj/
|
||||||
|
out/
|
||||||
|
*.user
|
||||||
|
*.suo
|
||||||
|
*.userosscache
|
||||||
|
.vs/
|
||||||
|
|
||||||
|
# Godot 4
|
||||||
|
.import/
|
||||||
|
export_presets.cfg
|
||||||
|
*.translation
|
||||||
|
# Mono build artifacts if you enable C# on the client later
|
||||||
|
client/.godot/
|
||||||
|
|
||||||
|
# OS / editor
|
||||||
|
.DS_Store
|
||||||
|
*.swp
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# Local secrets
|
||||||
|
.env
|
||||||
|
.env.*.local
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.0.31903.59
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "server", "server", "{8683E7E4-B4D9-4001-8E99-DA987A03A73D}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NeonSprawl.Server", "server/NeonSprawl.Server/NeonSprawl.Server.csproj", "{098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(NestedProjects) = postSolution
|
||||||
|
{098FCB1C-4A31-4E36-8D9C-1F1CEECDFF50} = {8683E7E4-B4D9-4001-8E99-DA987A03A73D}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
34
README.md
34
README.md
|
|
@ -1,6 +1,6 @@
|
||||||
# Untitled Cyberpunk MMO
|
# Neon Sprawl
|
||||||
|
|
||||||
Planning and vision for a classless, crafting-focused cyberpunk MMORPG (solo-dev scope). See [`cyberpunk_mmo_vision_86a57ef3.plan.md`](cyberpunk_mmo_vision_86a57ef3.plan.md).
|
**Neon Sprawl** is the working title for a classless, crafting-focused sci-fi / cyberpunk MMORPG (solo-dev scope). Product intent and phase gates: [`neon_sprawl_vision.plan.md`](neon_sprawl_vision.plan.md).
|
||||||
|
|
||||||
## Tech stack (locked)
|
## Tech stack (locked)
|
||||||
|
|
||||||
|
|
@ -15,3 +15,33 @@ Full rationale and constraints: [`docs/architecture/tech_stack.md`](docs/archite
|
||||||
## Decomposition
|
## Decomposition
|
||||||
|
|
||||||
Epic-level breakdown: [`docs/decomposition/README.md`](docs/decomposition/README.md).
|
Epic-level breakdown: [`docs/decomposition/README.md`](docs/decomposition/README.md).
|
||||||
|
|
||||||
|
## Repository layout (prototype scaffold)
|
||||||
|
|
||||||
|
| Path | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| [`NeonSprawl.sln`](NeonSprawl.sln) | .NET solution |
|
||||||
|
| [`server/NeonSprawl.Server/`](server/NeonSprawl.Server/) | ASP.NET Core game server |
|
||||||
|
| [`client/`](client/) | Godot 4.x project (import `project.godot`) |
|
||||||
|
| [`content/`](content/) | JSON data + JSON Schema (`skills/`, `schemas/`) |
|
||||||
|
| [`docker-compose.yml`](docker-compose.yml) | Local **PostgreSQL** (`docker compose up -d`) |
|
||||||
|
|
||||||
|
### Run the server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd server/NeonSprawl.Server && dotnet run
|
||||||
|
```
|
||||||
|
|
||||||
|
Then open `http://localhost:5253/health` (port from `launchSettings.json`).
|
||||||
|
|
||||||
|
### Run Postgres locally
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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/`](client/) folder in **Godot 4.2+** and run the main scene (see [`client/README.md`](client/README.md)).
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Neon Sprawl — Godot client
|
||||||
|
|
||||||
|
Open this **`client/`** directory as a project in **Godot 4.2+** (4.x recommended).
|
||||||
|
|
||||||
|
- Main scene: `scenes/main.tscn` (bootstrap `scripts/main.gd`).
|
||||||
|
- Networking will use **WebSocket** or **TCP** to the C# server; authoritative logic stays on the server per [`docs/architecture/tech_stack.md`](../docs/architecture/tech_stack.md).
|
||||||
|
|
||||||
|
## First run
|
||||||
|
|
||||||
|
1. Install [Godot 4.x](https://godotengine.org/download).
|
||||||
|
2. In the project manager, **Import** and select `client/project.godot`.
|
||||||
|
3. Press **F5** to run the main scene.
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
||||||
|
<rect width="128" height="128" fill="#1a1a2e"/>
|
||||||
|
<rect x="24" y="40" width="80" height="48" rx="6" fill="#00f5d4" opacity="0.9"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 228 B |
|
|
@ -0,0 +1,20 @@
|
||||||
|
; Godot 4.x project — import this folder in the Godot project manager.
|
||||||
|
|
||||||
|
config_version=5
|
||||||
|
|
||||||
|
[application]
|
||||||
|
|
||||||
|
config/name="Neon Sprawl"
|
||||||
|
config/description="Neon Sprawl — prototype client (isometric MMO; planning docs in repo root)."
|
||||||
|
run/main_scene="res://scenes/main.tscn"
|
||||||
|
config/features=PackedStringArray("4.2", "Forward Plus")
|
||||||
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
[display]
|
||||||
|
|
||||||
|
window/size/viewport_width=1280
|
||||||
|
window/size/viewport_height=720
|
||||||
|
|
||||||
|
[rendering]
|
||||||
|
|
||||||
|
textures/canvas_textures/default_texture_filter=0
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://cyberpunkmmo_main"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://scripts/main.gd" id="1_main"]
|
||||||
|
|
||||||
|
[node name="Main" type="Node3D"]
|
||||||
|
script = ExtResource("1_main")
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
extends Node3D
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
print("Neon Sprawl client bootstrap (Godot). Connect to game server TBD.")
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Content data
|
||||||
|
|
||||||
|
Data-driven definitions (skills, items, recipes, quests) validated in CI with **JSON Schema**.
|
||||||
|
|
||||||
|
| Path | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| [`schemas/`](schemas/) | JSON Schema files (`*.schema.json`) |
|
||||||
|
| [`skills/`](skills/) | Skill catalogs and related tables |
|
||||||
|
|
||||||
|
Server load path and hot-reload policy are TBD; keep files versioned here as the source of truth.
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://neon-sprawl.local/schemas/skill-def.json",
|
||||||
|
"title": "SkillDef",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": false,
|
||||||
|
"required": ["id", "category", "displayName"],
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^[a-z][a-z0-9_]*$"
|
||||||
|
},
|
||||||
|
"category": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["gathering", "crafting", "combat", "exploration", "utility", "social"]
|
||||||
|
},
|
||||||
|
"displayName": { "type": "string", "minLength": 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"skills": [
|
||||||
|
{
|
||||||
|
"id": "gathering_scrap",
|
||||||
|
"category": "gathering",
|
||||||
|
"displayName": "Scrap Salvaging"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "crafting_engineering",
|
||||||
|
"category": "crafting",
|
||||||
|
"displayName": "Street Engineering"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "combat_ballistics",
|
||||||
|
"category": "combat",
|
||||||
|
"displayName": "Ballistics"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Local PostgreSQL for prototype / dev. Start: docker compose up -d
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
container_name: neon-sprawl-postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: neon_sprawl
|
||||||
|
POSTGRES_PASSWORD: neon_sprawl_dev
|
||||||
|
POSTGRES_DB: neon_sprawl
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
volumes:
|
||||||
|
- neon_sprawl_pgdata:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U neon_sprawl -d neon_sprawl"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
neon_sprawl_pgdata:
|
||||||
|
|
@ -105,5 +105,5 @@ Revisit this document if:
|
||||||
|
|
||||||
## Related docs
|
## Related docs
|
||||||
|
|
||||||
- [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../cyberpunk_mmo_vision_86a57ef3.plan.md) — product locks and phase gates
|
- [`neon_sprawl_vision.plan.md`](../neon_sprawl_vision.plan.md) — product locks and phase gates
|
||||||
- [`docs/decomposition/README.md`](../decomposition/README.md) — epic/module decomposition
|
- [`docs/decomposition/README.md`](../decomposition/README.md) — epic/module decomposition
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
This workspace contains detailed planning artifacts derived from the finalized master plan:
|
This workspace contains detailed planning artifacts derived from the finalized master plan:
|
||||||
|
|
||||||
- Source of truth: `cyberpunk_mmo_vision_86a57ef3.plan.md`
|
- Source of truth: [`neon_sprawl_vision.plan.md`](../neon_sprawl_vision.plan.md)
|
||||||
- Tech stack baseline: [`docs/architecture/tech_stack.md`](../architecture/tech_stack.md)
|
- Tech stack baseline: [`docs/architecture/tech_stack.md`](../architecture/tech_stack.md)
|
||||||
- Scope here: executable decomposition (epics, modules, milestones)
|
- Scope here: executable decomposition (epics, modules, milestones)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: `cyberpunk_mmo_vision_86a57ef3.plan.md`
|
- Master epic reference: `neon_sprawl_vision.plan.md`
|
||||||
- Related modules: `<E#.M# list>`
|
- Related modules: `<E#.M# list>`
|
||||||
|
|
||||||
## Objective
|
## Objective
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 1
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 1
|
||||||
- Related modules: E1.M1, E1.M2, E1.M3, E1.M4
|
- Related modules: E1.M1, E1.M2, E1.M3, E1.M4
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 2
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 2
|
||||||
- Related modules: E2.M1, E2.M2, E2.M3, E2.M4
|
- Related modules: E2.M1, E2.M2, E2.M3, E2.M4
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 3
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 3
|
||||||
- Related modules: E3.M1, E3.M2, E3.M3, E3.M4, E3.M5
|
- Related modules: E3.M1, E3.M2, E3.M3, E3.M4, E3.M5
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 4
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 4
|
||||||
- Related modules: E4.M1, E4.M2, E4.M3, E4.M4
|
- Related modules: E4.M1, E4.M2, E4.M3, E4.M4
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 5
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 5
|
||||||
- Related modules: E5.M1, E5.M2, E5.M3, E5.M4
|
- Related modules: E5.M1, E5.M2, E5.M3, E5.M4
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 6
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 6
|
||||||
- Related modules: E6.M1, E6.M2, E6.M3, E6.M4
|
- Related modules: E6.M1, E6.M2, E6.M3, E6.M4
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 7
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 7
|
||||||
- Related modules: E7.M1, E7.M2, E7.M3, E7.M4
|
- Related modules: E7.M1, E7.M2, E7.M3, E7.M4
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 8
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 8
|
||||||
- Related modules: E8.M1, E8.M2, E8.M3, E8.M4
|
- Related modules: E8.M1, E8.M2, E8.M3, E8.M4
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Source Anchors
|
## Source Anchors
|
||||||
|
|
||||||
- Master epic reference: [`cyberpunk_mmo_vision_86a57ef3.plan.md`](../../../cyberpunk_mmo_vision_86a57ef3.plan.md) — Core Epic Map, System Modules Epic 9
|
- Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 9
|
||||||
- Related modules: E9.M1, E9.M2, E9.M3, E9.M4
|
- Related modules: E9.M1, E9.M2, E9.M3, E9.M4
|
||||||
|
|
||||||
## Ownership and success (Level 1)
|
## Ownership and success (Level 1)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: Cyberpunk MMO Vision
|
name: Neon Sprawl Vision
|
||||||
overview: Create a 50,000-foot planning document for a sci-fi/cyberpunk MMORPG inspired by RuneScape, focused on classless progression and deep crafting, with optional PvP and questing.
|
overview: Create a 50,000-foot planning document for Neon Sprawl, a sci-fi/cyberpunk MMORPG inspired by RuneScape, focused on classless progression and deep crafting, with optional PvP and questing.
|
||||||
todos:
|
todos:
|
||||||
- id: lock-critical-decisions
|
- id: lock-critical-decisions
|
||||||
content: Combat model and world topology are locked; remaining decision is progression pace.
|
content: Combat model and world topology are locked; remaining decision is progression pace.
|
||||||
|
|
@ -20,11 +20,11 @@ todos:
|
||||||
isProject: false
|
isProject: false
|
||||||
---
|
---
|
||||||
|
|
||||||
# Cyberpunk MMORPG 50,000-Foot Plan
|
# Neon Sprawl — 50,000-Foot Plan
|
||||||
|
|
||||||
## Vision and Product Intent
|
## Vision and Product Intent
|
||||||
|
|
||||||
Build a long-lived online world that captures the freedom and progression depth of RuneScape while delivering a distinct sci-fi/cyberpunk identity. The core player fantasy is to start as a low-tier citizen of a mega-city ecosystem and grow into a high-impact operator through any combination of skills, professions, social play, and questlines.
|
**Neon Sprawl** is a long-lived online world that captures the freedom and progression depth of RuneScape while delivering a distinct sci-fi/cyberpunk identity. The core player fantasy is to start as a low-tier citizen of a mega-city ecosystem and grow into a high-impact operator through any combination of skills, professions, social play, and questlines.
|
||||||
|
|
||||||
## Delivery Model Constraint (Locked)
|
## Delivery Model Constraint (Locked)
|
||||||
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<RootNamespace>NeonSprawl.Server</RootNamespace>
|
||||||
|
<AssemblyName>NeonSprawl.Server</AssemblyName>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
app.MapGet("/", () => Results.Text(
|
||||||
|
"Neon Sprawl game server — GET /health for JSON status.",
|
||||||
|
"text/plain"));
|
||||||
|
|
||||||
|
app.MapGet("/health", () => Results.Json(new
|
||||||
|
{
|
||||||
|
status = "ok",
|
||||||
|
service = "NeonSprawl.Server",
|
||||||
|
}));
|
||||||
|
|
||||||
|
app.Run();
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||||
|
"iisSettings": {
|
||||||
|
"windowsAuthentication": false,
|
||||||
|
"anonymousAuthentication": true,
|
||||||
|
"iisExpress": {
|
||||||
|
"applicationUrl": "http://localhost:45900",
|
||||||
|
"sslPort": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"profiles": {
|
||||||
|
"http": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": true,
|
||||||
|
"applicationUrl": "http://localhost:5253",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"IIS Express": {
|
||||||
|
"commandName": "IISExpress",
|
||||||
|
"launchBrowser": true,
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Game server (`NeonSprawl.Server`)
|
||||||
|
|
||||||
|
ASP.NET Core **.NET 8** host for authoritative simulation (prototype: HTTP + health only).
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
|
||||||
|
From repo root: `dotnet build NeonSprawl.sln`
|
||||||
Loading…
Reference in New Issue