# Multiplayer Testing Guide

## Quick Automated Testing

I've created easy testing scripts for you!

### Windows

**Option 1: Use the Batch Script**
```bash
# Edit TEST_MULTIPLAYER.bat and set your Godot path
# Then just double-click it or run:
TEST_MULTIPLAYER.bat
```

**Option 2: Manual Command**
```bash
# Terminal 1 (Host)
"C:\Program Files\Godot\godot.exe" --path "C:\dev\godot\multiplayer-coop" -- --host

# Terminal 2 (Client 1)
"C:\Program Files\Godot\godot.exe" --path "C:\dev\godot\multiplayer-coop" -- --join

# Terminal 3 (Client 2)
"C:\Program Files\Godot\godot.exe" --path "C:\dev\godot\multiplayer-coop" -- --join
```

### Linux/Mac

**Option 1: Use the Shell Script**
```bash
# Make it executable (already done)
chmod +x TEST_MULTIPLAYER.sh

# Run it
./TEST_MULTIPLAYER.sh
```

**Option 2: Manual Command**
```bash
# Terminal 1 (Host)
godot --path "$(pwd)" -- --host

# Terminal 2 (Client 1)
godot --path "$(pwd)" -- --join

# Terminal 3 (Client 2)
godot --path "$(pwd)" -- --join
```

## Command-Line Arguments

### Basic Arguments

- `--host` - Automatically start as host
- `--join` - Automatically join game
- `--address=IP` - Server address (default: 127.0.0.1)
- `--players=N` - Number of local players (default: 1)

### Examples

**Host with 2 local players:**
```bash
godot --path "path/to/project" -- --host --players=2
```

**Join specific server with 1 player:**
```bash
godot --path "path/to/project" -- --join --address=192.168.1.100
```

**Join with 3 local players:**
```bash
godot --path "path/to/project" -- --join --players=3
```

## Testing Scenarios

### Scenario 1: Simple 1v1
```bash
# Instance 1
godot -- --host

# Instance 2
godot -- --join
```

### Scenario 2: 1 Host + 2 Clients
```bash
# Instance 1
godot -- --host

# Instance 2
godot -- --join

# Instance 3
godot -- --join
```

### Scenario 3: Multiple Local Players
```bash
# Instance 1 (host with 2 local players)
godot -- --host --players=2

# Instance 2 (client with 2 local players)
godot -- --join --players=2
```

### Scenario 4: Maximum Chaos
```bash
# Instance 1 (host with 4 local players)
godot -- --host --players=4

# Instance 2-7 (each with 4 local players)
godot -- --join --players=4
```
Result: 8 machines × 4 local players = 32 total players!

## From Godot Editor

You can also test from the editor:

1. **Run the main instance from editor:**
   - Just press F5 normally
   - Host or join manually from the menu

2. **Run additional instances:**
   ```bash
   # From terminal, run additional instances
   godot --path "C:\dev\godot\multiplayer-coop" -- --join
   ```

## Troubleshooting

### "Connection Failed"
- Make sure host is running first
- Wait 1-2 seconds after starting host
- Check firewall settings

### "Can't find godot.exe"
- Edit the .bat or .sh script
- Set the correct path to your Godot executable
- On Linux/Mac, make sure `godot` is in your PATH

### "Players not spawning"
- Check the console/Output tab for errors
- Verify NetworkManager is loaded
- Make sure you're using matching project versions

### "Script won't run"
- Windows: Right-click .bat → Run as Administrator
- Linux/Mac: Make sure it's executable (`chmod +x TEST_MULTIPLAYER.sh`)

## What You Should See

### When Testing Works:
1. **Host window** opens, immediately shows game world
2. **Client 1** opens, connects, spawns in game world
3. **Client 2** opens, connects, spawns in game world
4. All players visible to each other
5. All players can move and interact

### Debugging
- Press **ESC** in any instance to see debug overlay
- Shows network status, peer ID, player counts
- Check Output tab in Godot for connection logs

## Performance Testing

### Test Network Sync
1. Start host + 2 clients
2. Move players around
3. Grab objects
4. Throw objects
5. Verify smooth sync (no jittering)

### Test Stress
1. Start multiple instances
2. Add many local players
3. Spawn many objects
4. Test with rapid interactions
5. Monitor FPS (press ESC for debug)

## Batch Testing Tips

### Quick Restart
```bash
# Windows: Create restart.bat
@echo off
taskkill /F /IM godot.exe
timeout /t 1 /nobreak
call TEST_MULTIPLAYER.bat
```

### Different Configurations
```bash
# Test different player counts
godot -- --host --players=1
godot -- --join --players=2
godot -- --join --players=3
godot -- --join --players=4
```

### Network Testing
```bash
# Test over network (replace IP with actual host IP)
godot -- --host                    # On machine 1
godot -- --join --address=192.168.1.100  # On machine 2
```

## CI/CD Testing

You can integrate these commands into automated testing:

```bash
# Start host in background
godot --path "$PROJECT" -- --host &
HOST_PID=$!

sleep 2

# Start client
godot --path "$PROJECT" -- --join &
CLIENT_PID=$!

# Wait and cleanup
sleep 10
kill $HOST_PID $CLIENT_PID
```

## Summary

✅ **Easiest**: Just run `TEST_MULTIPLAYER.bat` (Windows) or `./TEST_MULTIPLAYER.sh` (Linux/Mac)

✅ **Custom**: Use command-line arguments for specific scenarios

✅ **Flexible**: Combine with editor for debugging

✅ **Fast**: No clicking through menus, instant testing!

Happy testing! 🎮

