Files
DungeonsOfKharadum/MULTIPLAYER_TESTING.md
2026-01-08 16:49:01 +01:00

243 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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! 🎮