街机游戏厅 - 联机对战服务器部署指南
← 返回游戏厅当前版本仅支持 FC/NES 游戏联机对战,街机游戏和其他平台游戏请使用单人模式游玩。联机功能基于 WebRTC P2P 技术,信令服务器仅用于建立连接,游戏数据直接在玩家之间传输。
| 游戏类型 | 单人模式 | 联机对战 |
|---|---|---|
| FC/NES 游戏 | ✅ 支持 | ✅ 支持 |
| 街机游戏 (FBNeo) | ✅ 支持 | ❌ 暂不支持 |
| 其他平台 (GBA/SFC等) | ✅ 支持 | ❌ 暂不支持 |
信令服务器是一个 Python 脚本,用于帮助玩家建立 P2P 连接。
📥 下载 signaling_server.py适合在家里或办公室局域网内与朋友联机游玩。
从 python.org 下载并安装 Python 3.7+
pip install websockets
# Windows
python signaling_server.py
# Mac/Linux
python3 signaling_server.py
# Windows
ipconfig
# Mac/Linux
ifconfig 或 ip addr
找到类似 192.168.x.x 的局域网 IP 地址
在游戏首页点击右上角 🌐 按钮,输入服务器地址:
ws://192.168.1.100:8765
部署到云服务器,让任何地方的朋友都能联机游玩。
scp signaling_server.py user@your-server:/home/user/
pip3 install websockets
python3 signaling_server.py
# 阿里云/腾讯云需要在安全组开放 8765 端口
# Linux 防火墙
sudo ufw allow 8765
sudo nano /etc/systemd/system/game-signaling.service
[Unit]
Description=Game Signaling Server
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/home/user
ExecStart=/usr/bin/python3 /home/user/signaling_server.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable game-signaling
sudo systemctl start game-signaling
# 查看状态
sudo systemctl status game-signaling
server {
listen 443 ssl;
server_name game.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location /ws {
proxy_pass http://127.0.0.1:8765;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
}
ws://your-server-ip:8765wss://game.yourdomain.com/ws
服务器部署完成后,需要在游戏中配置服务器地址。
访问街机游戏厅网站
点击右上角的 🌐 按钮打开服务器设置弹窗
在"信令服务器地址"输入框中填入你的服务器地址
| 局域网 | ws://192.168.x.x:8765 |
| 公网 IP | ws://公网IP:8765 |
| 域名 + SSL | wss://game.domain.com/ws |
点击"保存设置"按钮,配置会保存到浏览器本地存储
街机游戏使用 EmulatorJS 引擎,目前技术架构不支持帧同步联机。FC/NES 游戏使用自研的 JSNES 引擎,支持完整的联机功能。
最多支持 4 人同时联机,但大多数 FC 游戏只支持 2 人同时游玩。
┌─────────────┐ WebSocket ┌─────────────────┐
│ 玩家 A │◄──────────────────►│ 信令服务器 │
│ (浏览器) │ │ (signaling.py) │
└──────┬──────┘ └────────┬────────┘
│ │
│ WebRTC P2P (游戏数据) │ WebSocket
│ │
▼ ▼
┌─────────────┐ WebSocket ┌─────────────────┐
│ 玩家 B │◄──────────────────►│ 信令服务器 │
│ (浏览器) │ │ │
└─────────────┘ └─────────────────┘
信令服务器职责:
- 房间创建/加入管理
- 交换 WebRTC 连接信息 (SDP/ICE)
- 不传输游戏数据,仅用于建立 P2P 连接