# 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