From 31bce2b344e8a9a310483b58027d32d244884555 Mon Sep 17 00:00:00 2001 From: don Date: Sun, 29 Mar 2026 19:36:18 -0400 Subject: [PATCH] Lock client scripting to GDScript; document in README and tech stack - State GDScript as the locked choice for Godot client code - Summary tables and client README note standard (non-.NET) Godot build - Server/client contract via Protobuf or JSON spike, not shared C# on client Made-with: Cursor --- README.md | 2 +- client/README.md | 2 +- docs/architecture/tech_stack.md | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 46c3cac..36bd669 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ | Area | Choice | |------|--------| -| Client | **Godot 4.x** | +| Client | **Godot 4.x** (GDScript) | | Game server | **C# / .NET 8** (ASP.NET Core), **PostgreSQL**, **Protobuf** (JSON OK for earliest spike) | | Content | **JSON/YAML** + **JSON Schema** in CI | diff --git a/client/README.md b/client/README.md index 4e8e4a5..b80d7cf 100644 --- a/client/README.md +++ b/client/README.md @@ -1,6 +1,6 @@ # Neon Sprawl — Godot client -Open this **`client/`** directory as a project in **Godot 4.2+** (4.x recommended). +Open this **`client/`** directory as a project in **Godot 4.2+** (4.x recommended). Use the **standard** Godot build (not the .NET build)—client code is **GDScript** (`.gd`). - 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). diff --git a/docs/architecture/tech_stack.md b/docs/architecture/tech_stack.md index 3507571..b5a42dd 100644 --- a/docs/architecture/tech_stack.md +++ b/docs/architecture/tech_stack.md @@ -6,13 +6,15 @@ **Server runtime (locked):** **C# / .NET 8** — primary author has ~10 years C# experience; authoritative game logic, persistence, and ops stay in this stack. -**Other operator skills:** **JavaScript** and **TypeScript** remain useful for content tooling, client-side scripting in Godot (GDScript on client for fast iteration), and one-off scripts—**not** the authoritative server. +**Client scripting (locked):** **GDScript** in Godot—fast iteration, native engine integration; server remains the only **C#** game-logic surface. + +**Other operator skills:** **JavaScript** and **TypeScript** remain useful for content tooling and one-off scripts—**not** the authoritative server. ## Summary | Layer | Choice | Role | |--------|--------|------| -| Game client | **Godot 4.x** | Rendering, input, camera, local prediction (if any), UI, telemetry emit | +| Game client | **Godot 4.x** + **GDScript** | Rendering, input, camera, local prediction (if any), UI, telemetry emit | | Game server | **C# / .NET 8** (ASP.NET Core) | Authoritative simulation, zones, combat/crafting resolution, persistence boundaries | | RPC / messages | **Protobuf** (or **JSON** for earliest spike only) | Versioned contracts between client and server | | Primary database | **PostgreSQL** | Characters, inventory, progression, economy ledger, idempotent transactions | @@ -26,7 +28,7 @@ - Strong fit for solo iteration: fast reload, small install, no revenue cap. - 3D isometric camera (orthographic or perspective), zoom, and **no rotation** are straightforward in a single-camera rig. -- **GDScript** for rapid client prototyping; **Godot C#** available if you want client/server language alignment in hot paths. +- **GDScript (locked)** for all client gameplay and UI code—quick reload, examples and addons match; share contracts with the server via **Protobuf** or **JSON** (spike), not shared C# assemblies. - Networking: treat **WebSocket** or **TCP** as transport only; **authoritative logic stays on the ASP.NET Core server**, not in Godot’s high-level multiplayer templates, to avoid fighting engine assumptions. **Prototype discipline**