fix alot of shit for webrtc to work

This commit is contained in:
2026-01-17 10:19:51 +01:00
parent f71b510cfc
commit eb718fa990
68 changed files with 6616 additions and 917 deletions

172
MULTIPLAYER_WEBRTC_GUIDE.md Normal file
View File

@@ -0,0 +1,172 @@
# WebRTC Multiplayer Guide
## How WebRTC Multiplayer Works
### Architecture
Your game now supports two networking modes:
1. **ENet (Native builds)**: Windows/Linux/Mac players connect via IP:Port
2. **WebRTC (Web builds)**: Browser players connect via Room IDs
**Important**: ENet and WebRTC are NOT compatible with each other!
- PC (ENet) players can only play with other PC (ENet) players
- Browser (WebRTC) players can only play with other Browser (WebRTC) players
### Your Server Setup
- **Matchbox Signaling**: `ws://ruinborn.thefirstboss.com:3536`
- **STUN Server**: `stun:ruinborn.thefirstboss.com:3578`
## How Players Find Each Other
### WebRTC/Browser Mode (Room-Based)
1. **Host creates a game**:
- Clicks "Host Game"
- Game generates a 6-character **Room Code** (e.g., "ABC123")
- Share this code with friends
2. **Players join**:
- Enter the **Room Code** in the "Join Game" field
- Click "Join"
- Matchbox connects all players in the same room
### Example Flow
```
Host (Browser):
- Clicks "Host"
- Gets Room Code: "XYZ789"
- Tells friend: "Join room XYZ789"
Player (Browser):
- Types "XYZ789" in join field
- Clicks "Join"
- Connected!
```
## Testing Scenarios
### Scenario 1: Browser to Browser (WebRTC)
**Works!**
```
1. Open game in Chrome: host.com/game
2. Host creates game → Gets code "ABC123"
3. Open game in Firefox: host.com/game
4. Join with code "ABC123"
5. Both connected via WebRTC!
```
### Scenario 2: PC to Browser (Mixed)
**Doesn't Work!**
```
PC (ENet) ←→ Browser (WebRTC) = INCOMPATIBLE
```
### Scenario 3: Phone Browser to PC Browser (WebRTC)
**Works!**
```
1. PC Browser hosts → code "XYZ456"
2. Phone browser joins "XYZ456"
3. Connected via WebRTC!
```
### Scenario 4: PC to PC (ENet)
**Works!**
```
1. PC1 hosts → Shows IP: 192.168.1.100
2. PC2 joins → Enters "192.168.1.100"
3. Connected via ENet!
```
## Can PC Host and Browser Join?
**Short Answer**: No, not with the current setup.
**Long Answer**: ENet (PC) and WebRTC (Browser) use completely different protocols. They can't talk to each other directly.
**Solution**: If you want cross-platform play, you have two options:
### Option A: Make PC Use WebRTC Too
Update PC builds to also use WebRTC when you want to play with browser users:
```gdscript
# Force WebRTC mode even on native builds
use_webrtc = true # in network_manager.gd
```
Then PC and Browser can use the same room codes!
### Option B: Use a Dedicated Server
Run a dedicated server that:
- Accepts both ENet and WebRTC connections
- Bridges between them
This is more complex but allows true cross-platform play.
## Room Codes
Room codes are automatically generated as 6-character codes:
- Easy to share (just text it!)
- No IP addresses to remember
- Works through NATs/firewalls
Example codes: `ABC123`, `XYZ789`, `PLAYER`, `GAME42`
## Exporting for Web
1. **Export HTML5**:
- Project → Export → Add → HTML5 (WebAssembly)
- Export the project
2. **Host on Web Server**:
```bash
# Your files
python -m http.server 8000
```
3. **Players Access**:
- `http://yoursite.com/game`
- Works on PC browsers, phone browsers, tablets!
## Security Notes
- Room codes are NOT secure (anyone with code can join)
- For production, add:
- Password-protected rooms
- Room capacity limits
- Ban/kick functionality
- Room expiration
## Troubleshooting
**"Connection failed" in browser:**
- Check matchbox server is running: `netstat -tulpn | grep 3536`
- Check firewall allows port 3536
- Check browser console for errors
**"Can't see other players":**
- Make sure both players entered the SAME room code
- Check both are using browser builds (not mixing PC/browser)
**"Stuck on connecting":**
- STUN server must be reachable
- Check port 3578 is open
- Try different browsers
## Current Limitations
1. PC (ENet) ←/→ Browser (WebRTC) can't play together
2. Need to share room codes manually (no lobby browser yet)
3. No reconnection if disconnected (must rejoin)
## Next Steps
To improve multiplayer:
1. Add lobby browser (see active rooms)
2. Add friend codes/invites
3. Add voice chat (WebRTC supports it!)
4. Add dedicated server for PC↔Browser bridge