# Neon Sprawl — Godot client Open this **`client/`** directory as a project in **Godot 4.6** (4.x compatible). 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). ## Movement prototype (NS-14) The main scene includes a **client-only** click-to-move demo: - **Left-click** walkable ground (the large floor) to move the capsule avatar; **WASD is not required**. - Movement is **direct horizontal steering** plus **`move_and_slide()`**: the capsule walks toward the click and **slides along** the center crate instead of pathfinding around it. (A hand-authored `NavigationMesh` was not reliable across Godot versions; **NavigationAgent3D** can return later for routed paths.) - The avatar is on **physics layer 2** with **mask 1** (floor + obstacle on layer 1); the pick ray uses **mask 1** so clicks pass through the avatar and hit the floor. This behavior is **temporary**: when authoritative movement and `MoveCommand` / `PositionState` exist, the client will follow server state instead of driving navigation locally. ### Manual check 1. Run the main scene (**F5**). 2. Click the floor: the avatar walks to the point. 3. Click behind the center crate: the avatar **slides** against the crate (no nav mesh path around it in this build). ### Clicks still ignored? In the **Game** dock, **Input** must be active (not the **2D** / **3D** scene-picking tools) so events go to the game. If Input is on and clicks still do nothing, pick rays must use the **viewport’s current camera** and **mouse position** (the script does this so the embedded Game view matches the ray). ## 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.