initial upload
This commit is contained in:
142
Unity-Master/Assets/Scripts/LocalTestingSetup.md
Normal file
142
Unity-Master/Assets/Scripts/LocalTestingSetup.md
Normal file
@ -0,0 +1,142 @@
|
||||
# Local Testing Setup Guide
|
||||
|
||||
## Testing Both Players in Same Scene
|
||||
|
||||
When testing the UDP avatar sync system with both broadcaster and receiver in the same Unity scene, you need to handle port conflicts properly.
|
||||
|
||||
### The Port Conflict Issue
|
||||
|
||||
The error you encountered:
|
||||
```
|
||||
Failed to start UDP listener: Only one usage of each socket address (protocol/network address/port) is normally permitted.
|
||||
```
|
||||
|
||||
This happens because both components try to bind to the same UDP port (8080) simultaneously.
|
||||
|
||||
## Solution: Updated Receiver with Port Sharing
|
||||
|
||||
The `UDPAvatarReceiver` has been updated with port sharing capabilities:
|
||||
|
||||
### New Settings in Inspector
|
||||
|
||||
- **Allow Port Sharing**: ✅ Enable this for local testing
|
||||
- **Listen Port**: 8080 (or will auto-find alternative)
|
||||
|
||||
### How It Works
|
||||
|
||||
1. **Port Sharing Enabled**: Uses `SO_REUSEADDR` socket option to allow multiple bindings
|
||||
2. **Fallback Ports**: If port sharing fails, tries ports 8081, 8082, 8083, etc.
|
||||
3. **Debug Info**: Shows actual port being used in the GUI
|
||||
|
||||
## Local Testing Setup
|
||||
|
||||
### GameObject 1: Player 1 (Broadcaster + Receiver)
|
||||
```
|
||||
Avatar Player 1
|
||||
├── UDPAvatarBroadcaster
|
||||
│ ├── Player ID: 1
|
||||
│ ├── Avatar Root: [Player 1 Avatar]
|
||||
│ └── Show Debug Info: ✅
|
||||
└── UDPAvatarReceiver
|
||||
├── Target Player ID: 2 (receive from Player 2)
|
||||
├── Target Avatar Root: [Player 2 Avatar Clone]
|
||||
├── Allow Port Sharing: ✅
|
||||
└── Show Debug Info: ✅
|
||||
```
|
||||
|
||||
### GameObject 2: Player 2 (Broadcaster + Receiver)
|
||||
```
|
||||
Avatar Player 2
|
||||
├── UDPAvatarBroadcaster
|
||||
│ ├── Player ID: 2
|
||||
│ ├── Avatar Root: [Player 2 Avatar]
|
||||
│ └── Show Debug Info: ✅
|
||||
└── UDPAvatarReceiver
|
||||
├── Target Player ID: 1 (receive from Player 1)
|
||||
├── Target Avatar Root: [Player 1 Avatar Clone]
|
||||
├── Allow Port Sharing: ✅
|
||||
└── Show Debug Info: ✅
|
||||
```
|
||||
|
||||
## Alternative Setup Methods
|
||||
|
||||
### Method 1: Different Ports (Simple)
|
||||
- Player 1 Broadcaster: Port 8080
|
||||
- Player 2 Broadcaster: Port 8081
|
||||
- Update receivers to listen on corresponding ports
|
||||
|
||||
### Method 2: Single Broadcaster (Minimal)
|
||||
- One broadcaster component sending data
|
||||
- Multiple receivers in scene listening
|
||||
- Good for testing receiver logic only
|
||||
|
||||
### Method 3: Separate Scenes (Real-world)
|
||||
- Build and run multiple instances of your game
|
||||
- Most accurate representation of real multiplayer
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Still Getting Port Errors?
|
||||
|
||||
1. **Check Windows Firewall**:
|
||||
```
|
||||
Allow Unity.exe through Windows Defender Firewall
|
||||
Allow UDP port 8080-8085
|
||||
```
|
||||
|
||||
2. **Verify Port Sharing Setting**:
|
||||
```
|
||||
UDPAvatarReceiver → Allow Port Sharing: ✅
|
||||
```
|
||||
|
||||
3. **Check Console for Alternative Ports**:
|
||||
```
|
||||
Look for: "UDP listener started on alternative port 8081"
|
||||
```
|
||||
|
||||
### No Data Being Received?
|
||||
|
||||
1. **Verify Player IDs**:
|
||||
- Broadcaster Player ID: 1
|
||||
- Receiver Target Player ID: 1 (to receive from broadcaster)
|
||||
|
||||
2. **Check Debug GUI**:
|
||||
- Broadcaster: "Broadcasting" status
|
||||
- Receiver: "Listen Port" shows actual port
|
||||
|
||||
3. **Test Loopback**:
|
||||
- Set Receiver Target Player ID: 0 (receive from any)
|
||||
- Should receive own broadcasts
|
||||
|
||||
## Debug Information
|
||||
|
||||
Enable debug info on both components to see:
|
||||
|
||||
**Broadcaster GUI (Top-left)**:
|
||||
- Player ID and broadcast status
|
||||
- Sequence number (should increment)
|
||||
- Update rate and packet size
|
||||
|
||||
**Receiver GUI (Top-right)**:
|
||||
- Listen port (actual port being used)
|
||||
- Packets received/dropped
|
||||
- Target player ID
|
||||
|
||||
## Production vs Testing
|
||||
|
||||
| Environment | Setup | Port Handling |
|
||||
|-------------|-------|---------------|
|
||||
| **Local Testing** | Same scene, port sharing | Allow Port Sharing: ✅ |
|
||||
| **LAN/Hotspot** | Separate devices | Standard UDP binding |
|
||||
| **Production** | Different machines | No port conflicts |
|
||||
|
||||
## Quick Checklist
|
||||
|
||||
1. ✅ Enable "Allow Port Sharing" on all receivers
|
||||
2. ✅ Set unique Player IDs (1, 2, 3...)
|
||||
3. ✅ Set correct Target Player IDs on receivers
|
||||
4. ✅ Enable debug info to monitor status
|
||||
5. ✅ Check console for port conflict messages
|
||||
6. ✅ Verify Windows Firewall allows Unity/UDP
|
||||
|
||||
The updated receiver should now handle local testing scenarios gracefully!
|
||||
Reference in New Issue
Block a user