# Testing Guide

## Manual Testing Checklist

### Basic Functionality

#### Single Player Local
- [ ] Start game, host with 1 local player
- [ ] Player spawns correctly
- [ ] Movement with WASD/Arrow keys works
- [ ] Can grab objects with E
- [ ] Can throw objects with Q
- [ ] Camera follows player

#### Multiple Local Players
- [ ] Host with 2 local players
- [ ] Both players spawn
- [ ] Player 1 (keyboard) controls work
- [ ] Player 2 (gamepad) controls work
- [ ] Camera follows both players
- [ ] Camera zooms out when players spread apart

#### Networking - Host
- [ ] Host game successfully
- [ ] Host player spawns
- [ ] Can move and interact
- [ ] Client can connect
- [ ] Client players appear on host screen

#### Networking - Client
- [ ] Can join game at 127.0.0.1
- [ ] Client player spawns
- [ ] Can move and interact
- [ ] Host player visible on client screen
- [ ] Movement is synchronized

### Interaction System

#### Grab Objects
- [ ] Can grab nearby objects
- [ ] Object follows player when grabbed
- [ ] Can release object with E
- [ ] Object stays where released

#### Throw Objects
- [ ] Can throw held object with Q
- [ ] Object flies in direction of movement
- [ ] Object has physics (bounces, slides)
- [ ] Throw force is appropriate

#### Push Objects
- [ ] Walking into objects pushes them
- [ ] Heavy objects move slower
- [ ] Light objects move faster
- [ ] Push works from all directions

#### Grab Players
- [ ] Can grab other players
- [ ] Grabbed player follows grabber
- [ ] Grabbed player can't move
- [ ] Can release player
- [ ] Can throw player

### Multiplayer Scenarios

#### Host + 1 Remote Client
- [ ] Host with 1 local player
- [ ] Client joins with 1 local player
- [ ] Both can see each other
- [ ] Movement syncs correctly
- [ ] Can grab each other
- [ ] Can grab same objects
- [ ] Objects sync between players

#### Host + Multiple Local + Remote
- [ ] Host with 2 local players
- [ ] Client joins with 1 local player
- [ ] All 3 players visible
- [ ] All players can interact
- [ ] Camera works for local players
- [ ] Network sync is smooth

#### Multiple Clients
- [ ] Host with 1 local player
- [ ] Client 1 joins with 1 local player
- [ ] Client 2 joins with 1 local player
- [ ] All players visible to each other
- [ ] All interactions work
- [ ] No desync issues

#### Drop-in Gameplay
- [ ] Host starts game
- [ ] Play for 30 seconds
- [ ] Client joins mid-game
- [ ] Client spawns correctly
- [ ] Game state syncs to client
- [ ] No crashes or errors

### Edge Cases

#### Disconnection
- [ ] Client disconnects gracefully
- [ ] Client's players despawn on host
- [ ] Host can continue playing
- [ ] Other clients unaffected

#### Rapid Actions
- [ ] Grab and throw rapidly
- [ ] Spam movement keys
- [ ] Multiple players grab same object
- [ ] No crashes or glitches

#### Boundary Testing
- [ ] Players can't leave arena
- [ ] Objects bounce off walls
- [ ] Thrown objects don't escape
- [ ] Camera stays in bounds

## Automated Testing Notes

### Performance Metrics
- Target FPS: 60
- Network latency: < 100ms for LAN
- Player spawn time: < 1 second
- Object sync delay: < 50ms

### Known Limitations
1. Maximum 8 concurrent connections
2. Maximum 4 local players per machine
3. Objects may desync under extreme lag
4. No reconnection support yet

## Bug Reporting Template

```
**Bug Description:**
[Clear description of the issue]

**Steps to Reproduce:**
1. [First step]
2. [Second step]
3. [etc.]

**Expected Behavior:**
[What should happen]

**Actual Behavior:**
[What actually happens]

**Environment:**
- Godot Version: 4.6
- OS: [Windows/Linux/Mac]
- Network: [Local/LAN/Internet]
- Players: [Number and configuration]

**Console Output:**
[Any error messages]
```

