167 lines
3.8 KiB
Markdown
167 lines
3.8 KiB
Markdown
# Network Mode Selection Guide
|
|
|
|
## New Features
|
|
|
|
### 1. **Network Mode Dropdown** (PC Only)
|
|
|
|
On PC builds, you'll now see a dropdown in the main menu:
|
|
- **ENet (PC/LAN)**: Traditional IP-based networking for PC players
|
|
- **WebRTC (Browser/Web)**: Web-compatible networking using room codes
|
|
|
|
The dropdown is automatically hidden on web builds (WebRTC is auto-selected).
|
|
|
|
### 2. **--webrtc Command Line Flag**
|
|
|
|
Force WebRTC mode on PC builds:
|
|
|
|
```bash
|
|
# Start as host with WebRTC
|
|
godot --path . -- --host --webrtc
|
|
|
|
# Join with WebRTC
|
|
godot --path . -- --join --webrtc --address=ABC123
|
|
|
|
# Example with room code
|
|
godot --path . -- --join --webrtc --address=XYZ789
|
|
```
|
|
|
|
## Usage Examples
|
|
|
|
### PC to PC (Same LAN) - ENet Mode
|
|
|
|
**PC 1 (Host):**
|
|
1. Select "ENet (PC/LAN)" in dropdown
|
|
2. Click "Host Game"
|
|
3. Note your IP (e.g., 192.168.1.100)
|
|
|
|
**PC 2 (Join):**
|
|
1. Select "ENet (PC/LAN)" in dropdown
|
|
2. Enter host IP in "Server Address"
|
|
3. Click "Join Game"
|
|
|
|
### PC to PC (Internet) - WebRTC Mode
|
|
|
|
**PC 1 (Host):**
|
|
1. Select "WebRTC (Browser/Web)" in dropdown
|
|
2. Click "Host Game"
|
|
3. Share the 6-character room code (e.g., "ABC123")
|
|
|
|
**PC 2 (Join):**
|
|
1. Select "WebRTC (Browser/Web)" in dropdown
|
|
2. Enter room code in "Server Address"
|
|
3. Click "Join Game"
|
|
|
|
### PC to Browser - WebRTC Mode
|
|
|
|
**PC (Host):**
|
|
1. Select "WebRTC (Browser/Web)" in dropdown
|
|
2. Click "Host Game"
|
|
3. Share room code
|
|
|
|
**Browser (Join):**
|
|
1. Enter room code (WebRTC auto-detected)
|
|
2. Click "Join Game"
|
|
|
|
### Browser to Browser - WebRTC Mode
|
|
|
|
**Browser 1 (Host):**
|
|
1. Click "Host Game"
|
|
2. Share room code
|
|
|
|
**Browser 2 (Join):**
|
|
1. Enter room code
|
|
2. Click "Join Game"
|
|
|
|
## Command Line Examples
|
|
|
|
### Test with WebRTC
|
|
|
|
```bash
|
|
# Terminal 1 - Host with WebRTC
|
|
godot --path . -- --host --webrtc
|
|
|
|
# Terminal 2 - Join with WebRTC (room code from Terminal 1)
|
|
godot --path . -- --join --webrtc --address=ABC123
|
|
```
|
|
|
|
### Test with ENet (Default)
|
|
|
|
```bash
|
|
# Terminal 1 - Host
|
|
godot --path . -- --host
|
|
|
|
# Terminal 2 - Join
|
|
godot --path . -- --join --address=127.0.0.1
|
|
```
|
|
|
|
### Test with Multiple Local Players
|
|
|
|
```bash
|
|
# Host with 2 local players using WebRTC
|
|
godot --path . -- --host --webrtc --players=2
|
|
|
|
# Join with 2 local players
|
|
godot --path . -- --join --webrtc --address=ABC123 --players=2
|
|
```
|
|
|
|
## When to Use Each Mode
|
|
|
|
### Use **ENet** When:
|
|
- Playing on same LAN (local network)
|
|
- Both players are on PC (Windows/Linux/Mac)
|
|
- You want lower latency
|
|
- You have direct network access
|
|
|
|
### Use **WebRTC** When:
|
|
- Playing over the internet (through NATs/firewalls)
|
|
- Playing with browser users
|
|
- Playing on mobile browsers
|
|
- You want easy room code sharing (no IP addresses)
|
|
|
|
## Technical Details
|
|
|
|
### ENet
|
|
- Protocol: UDP
|
|
- Connection: Direct IP:Port
|
|
- Latency: Lower (direct connection)
|
|
- NAT Traversal: Requires port forwarding
|
|
- Compatibility: PC only
|
|
|
|
### WebRTC
|
|
- Protocol: UDP/DTLS via WebRTC
|
|
- Connection: Room codes via signaling server
|
|
- Latency: Slightly higher (STUN/relay)
|
|
- NAT Traversal: Automatic (STUN/TURN)
|
|
- Compatibility: PC, Browser, Mobile
|
|
|
|
### Your Servers
|
|
- **Matchbox Signaling**: `ws://ruinborn.thefirstboss.com:3536`
|
|
- **STUN Server**: `stun:ruinborn.thefirstboss.com:3578`
|
|
|
|
## Troubleshooting
|
|
|
|
**Dropdown not visible:**
|
|
- This is normal on web builds (WebRTC auto-selected)
|
|
|
|
**Can't connect in ENet mode:**
|
|
- Check firewall (port 21212)
|
|
- Verify IP address is correct
|
|
- Try WebRTC mode instead
|
|
|
|
**Can't connect in WebRTC mode:**
|
|
- Verify room code matches exactly
|
|
- Check matchbox server is running
|
|
- Try ENet mode for LAN play
|
|
|
|
**Room code not showing:**
|
|
- Only shown in console when hosting with WebRTC
|
|
- Will be displayed in UI in future updates
|
|
|
|
## Future Improvements
|
|
|
|
- [ ] Display room code in UI (not just console)
|
|
- [ ] Copy room code to clipboard button
|
|
- [ ] Lobby browser (see active rooms)
|
|
- [ ] Remember last used network mode
|
|
- [ ] Auto-detect best mode for connection
|