# Tactical Shooter — Playtest Guide

## Quick Start

### 1. Get the Windows Client

Download `tactical-shooter-windows.zip` from the build directory, or clone the repo and find it at:
```
build/tactical-shooter-windows-x86_64/tactical-shooter.exe
```

Extract the zip anywhere on your Windows machine and run `tactical-shooter.exe`.

### 2. Connect to the Test Server

| Setting | Value |
|---------|-------|
| **Server IP** | `68.202.6.107` (external) or `192.168.0.127` (LAN) |
| **Port** | `34197` |
| **Protocol** | ENet (UDP) |

Launch the game, open the console (~) and type:
```
connect 68.202.6.107:34197
```

### 3. Controls

| Action | Key |
|--------|-----|
| Move | W/A/S/D |
| Jump | Space |
| Sprint | Shift (tap to toggle) |
| Crouch | Ctrl (hold) |
| Shoot | Mouse LMB |
| Aim | Mouse RMB |
| Reload | R |
| Interact | E |
| Release mouse | Escape |

---

## Dedicated Server Info

The test server runs on OPLabs infrastructure:

- **Host:** oplabs VM (192.168.0.127)
- **Binary:** `~/tactical-shooter-server/tactical-shooter-server.x86_64`
- **Service:** `systemctl --user status tactical-shooter-server`
- **Config:** `~/tactical-shooter-server/server_config.cfg`

### Server Commands (SSH into oplabs)

```bash
# Check status
systemctl --user status tactical-shooter-server

# View logs
journalctl --user -u tactical-shooter-server -f

# Restart
systemctl --user restart tactical-shooter-server

# Stop
systemctl --user stop tactical-shooter-server
```

### RCON Admin

Connect via TCP to port 34198 with the RCON password (set in server_config.cfg):

```
rcon_password <password>
rcon commands
rcon changelevel test_range
rcon kick <player_id>
```

---

## Troubleshooting

| Issue | Fix |
|-------|-----|
| Can't connect | Check server is running: `systemctl --user status tactical-shooter-server` |
| Firewall block | Ensure port 34197/UDP is open on the server |
| Game won't start | Install [VC++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe) |
| High ping | The server is in eastern Canada; use the LAN IP if on the same network |

---

## Architecture

```
[Windows Client] -- ENet/UDP :34197 --> [Dedicated Server (oplabs)]
                                           |
                                     [GDExtension C++ Core]
                                     [Game State 128Hz Tick]
```

See `docs/architecture.md` in the repo for full details.
