2026-02-24 20:56:36 +08:00
|
|
|
|
# FunMC 局域网联机测试指南
|
|
|
|
|
|
|
|
|
|
|
|
本文档介绍如何测试 FunMC 的局域网联机功能。
|
|
|
|
|
|
|
|
|
|
|
|
## 测试环境准备
|
|
|
|
|
|
|
|
|
|
|
|
### 硬件要求
|
|
|
|
|
|
|
|
|
|
|
|
- 至少 2 台电脑(或使用虚拟机)
|
|
|
|
|
|
- 所有设备在同一局域网内
|
|
|
|
|
|
- 每台设备需安装 Minecraft Java Edition
|
|
|
|
|
|
|
|
|
|
|
|
### 软件要求
|
|
|
|
|
|
|
|
|
|
|
|
- PostgreSQL 14+
|
|
|
|
|
|
- Rust 1.75+
|
|
|
|
|
|
- Node.js 18+
|
|
|
|
|
|
- Minecraft Java Edition 1.16+
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 测试步骤
|
|
|
|
|
|
|
|
|
|
|
|
### 第一步:部署本地服务器
|
|
|
|
|
|
|
|
|
|
|
|
在其中一台电脑上部署 FunMC 服务器:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 1. 克隆项目
|
2026-02-25 20:35:01 +08:00
|
|
|
|
git clone https://gt.funmc.cn/xiaobai/FunConnect.git
|
|
|
|
|
|
cd FunConnect
|
2026-02-24 20:56:36 +08:00
|
|
|
|
|
|
|
|
|
|
# 2. 启动数据库
|
|
|
|
|
|
docker run -d --name funmc-db \
|
|
|
|
|
|
-p 5432:5432 \
|
|
|
|
|
|
-e POSTGRES_PASSWORD=password \
|
|
|
|
|
|
-e POSTGRES_DB=funmc \
|
|
|
|
|
|
postgres:14
|
|
|
|
|
|
|
|
|
|
|
|
# 3. 配置环境变量
|
|
|
|
|
|
cat > server/.env << EOF
|
|
|
|
|
|
DATABASE_URL=postgres://postgres:password@localhost/funmc
|
|
|
|
|
|
JWT_SECRET=test-jwt-secret-for-local-development
|
|
|
|
|
|
BIND_ADDR=0.0.0.0:3000
|
|
|
|
|
|
QUIC_PORT=3001
|
|
|
|
|
|
RUST_LOG=info
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 运行数据库迁移
|
|
|
|
|
|
cd server
|
|
|
|
|
|
cargo sqlx database create
|
|
|
|
|
|
cargo sqlx migrate run
|
|
|
|
|
|
|
|
|
|
|
|
# 5. 启动主服务器
|
|
|
|
|
|
cargo run
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
记录服务器的局域网 IP 地址(如 `192.168.1.100`)。
|
|
|
|
|
|
|
|
|
|
|
|
### 第二步:配置客户端
|
|
|
|
|
|
|
|
|
|
|
|
在所有参与测试的电脑上:
|
|
|
|
|
|
|
|
|
|
|
|
1. 修改客户端配置文件 `client/src/config.rs`:
|
|
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
|
pub const DEFAULT_SERVER_URL: &str = "http://192.168.1.100:3000";
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
2. 编译并运行客户端:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd client/ui
|
|
|
|
|
|
npm install
|
|
|
|
|
|
cd ..
|
|
|
|
|
|
cargo tauri dev
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 第三步:测试场景
|
|
|
|
|
|
|
|
|
|
|
|
#### 场景 1:基本局域网联机
|
|
|
|
|
|
|
|
|
|
|
|
**主机操作:**
|
|
|
|
|
|
1. 启动 Minecraft,创建单人世界
|
|
|
|
|
|
2. 按 `Esc` → `对局域网开放`
|
|
|
|
|
|
3. 选择游戏模式,点击「开始局域网世界」
|
|
|
|
|
|
4. 记下显示的端口号(如 25565)
|
|
|
|
|
|
5. 打开 FunMC 客户端
|
|
|
|
|
|
6. 注册/登录账号
|
|
|
|
|
|
7. 创建房间(填写房间名、游戏版本)
|
|
|
|
|
|
8. 点击「开始托管」
|
|
|
|
|
|
|
|
|
|
|
|
**预期结果:**
|
|
|
|
|
|
- FunMC 显示"托管中"状态
|
|
|
|
|
|
- 显示 QUIC 端口号
|
|
|
|
|
|
|
|
|
|
|
|
**玩家操作:**
|
|
|
|
|
|
1. 打开 FunMC 客户端
|
|
|
|
|
|
2. 登录账号
|
|
|
|
|
|
3. 在大厅找到主机创建的房间
|
|
|
|
|
|
4. 点击加入房间
|
|
|
|
|
|
5. 在房间页面点击「连接」
|
|
|
|
|
|
6. 等待连接建立
|
|
|
|
|
|
7. 复制显示的地址(如 `127.0.0.1:25566`)
|
|
|
|
|
|
8. 打开 Minecraft → 多人游戏 → 添加服务器
|
|
|
|
|
|
9. 粘贴地址并连接
|
|
|
|
|
|
|
|
|
|
|
|
**预期结果:**
|
|
|
|
|
|
- FunMC 显示连接类型(P2P 直连 或 中继)
|
|
|
|
|
|
- 能够成功进入 Minecraft 服务器
|
|
|
|
|
|
|
|
|
|
|
|
#### 场景 2:P2P 直连测试
|
|
|
|
|
|
|
|
|
|
|
|
在局域网环境下,两台电脑应该能够建立 P2P 直连。
|
|
|
|
|
|
|
|
|
|
|
|
**验证方法:**
|
|
|
|
|
|
1. 连接成功后,检查 FunMC 显示的连接类型
|
|
|
|
|
|
2. 应显示「P2P 直连」
|
|
|
|
|
|
3. 延迟应该很低(通常 < 10ms)
|
|
|
|
|
|
|
|
|
|
|
|
**如果显示「中继」:**
|
|
|
|
|
|
- 检查防火墙设置
|
|
|
|
|
|
- 确认 UDP 端口 34000-34100 未被阻止
|
|
|
|
|
|
- 检查路由器是否启用了 UPnP
|
|
|
|
|
|
|
|
|
|
|
|
#### 场景 3:房间聊天测试
|
|
|
|
|
|
|
|
|
|
|
|
1. 主机和玩家都进入同一房间
|
|
|
|
|
|
2. 在房间页面的聊天框中发送消息
|
|
|
|
|
|
3. 验证双方都能收到消息
|
|
|
|
|
|
|
|
|
|
|
|
**预期结果:**
|
|
|
|
|
|
- 消息实时显示
|
|
|
|
|
|
- 显示发送者用户名和时间
|
|
|
|
|
|
|
|
|
|
|
|
#### 场景 4:多玩家测试
|
|
|
|
|
|
|
|
|
|
|
|
1. 让 3 人以上加入同一房间
|
|
|
|
|
|
2. 所有人都点击「连接」
|
|
|
|
|
|
3. 所有人都进入 Minecraft 服务器
|
|
|
|
|
|
|
|
|
|
|
|
**预期结果:**
|
|
|
|
|
|
- 所有玩家都能成功连接
|
|
|
|
|
|
- 游戏内能看到所有玩家
|
|
|
|
|
|
|
|
|
|
|
|
#### 场景 5:断线重连测试
|
|
|
|
|
|
|
|
|
|
|
|
1. 建立连接并进入游戏
|
|
|
|
|
|
2. 在 FunMC 中点击「断开连接」
|
|
|
|
|
|
3. 重新点击「连接」
|
|
|
|
|
|
4. 在 Minecraft 中重新连接服务器
|
|
|
|
|
|
|
|
|
|
|
|
**预期结果:**
|
|
|
|
|
|
- 能够重新建立连接
|
|
|
|
|
|
- 游戏继续正常进行
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 测试检查清单
|
|
|
|
|
|
|
|
|
|
|
|
### 服务端检查
|
|
|
|
|
|
|
|
|
|
|
|
| 检查项 | 预期结果 | 实际结果 |
|
|
|
|
|
|
|--------|---------|---------|
|
|
|
|
|
|
| 服务器启动 | 无错误日志 | |
|
|
|
|
|
|
| 数据库连接 | 连接成功 | |
|
|
|
|
|
|
| API 响应 | 返回 200 OK | |
|
|
|
|
|
|
| WebSocket | 能够建立连接 | |
|
|
|
|
|
|
|
|
|
|
|
|
### 客户端检查
|
|
|
|
|
|
|
|
|
|
|
|
| 检查项 | 预期结果 | 实际结果 |
|
|
|
|
|
|
|--------|---------|---------|
|
|
|
|
|
|
| 注册功能 | 成功创建账号 | |
|
|
|
|
|
|
| 登录功能 | 成功登录 | |
|
|
|
|
|
|
| 创建房间 | 房间出现在大厅 | |
|
|
|
|
|
|
| 加入房间 | 成功进入房间 | |
|
|
|
|
|
|
| 开始托管 | 状态显示"托管中" | |
|
|
|
|
|
|
| 连接功能 | 显示代理地址 | |
|
|
|
|
|
|
| 聊天功能 | 消息实时同步 | |
|
|
|
|
|
|
|
|
|
|
|
|
### 网络检查
|
|
|
|
|
|
|
|
|
|
|
|
| 检查项 | 预期结果 | 实际结果 |
|
|
|
|
|
|
|--------|---------|---------|
|
|
|
|
|
|
| P2P 连接 | 局域网内成功 | |
|
|
|
|
|
|
| 中继连接 | 作为备用可用 | |
|
|
|
|
|
|
| 延迟 | P2P < 10ms | |
|
|
|
|
|
|
| 数据传输 | Minecraft 流量正常 | |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 常见问题排查
|
|
|
|
|
|
|
|
|
|
|
|
### 问题 1:无法连接到服务器
|
|
|
|
|
|
|
|
|
|
|
|
**症状:** 客户端显示"连接失败"
|
|
|
|
|
|
|
|
|
|
|
|
**排查步骤:**
|
|
|
|
|
|
1. 确认服务器正在运行:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
curl http://192.168.1.100:3000/api/v1/rooms
|
|
|
|
|
|
```
|
|
|
|
|
|
2. 检查防火墙:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# Windows
|
|
|
|
|
|
netsh advfirewall firewall add rule name="FunMC" dir=in action=allow protocol=TCP localport=3000
|
|
|
|
|
|
|
|
|
|
|
|
# Linux
|
|
|
|
|
|
sudo ufw allow 3000/tcp
|
|
|
|
|
|
```
|
|
|
|
|
|
3. 确认网络连通:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ping 192.168.1.100
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 问题 2:P2P 连接失败
|
|
|
|
|
|
|
|
|
|
|
|
**症状:** 始终使用中继连接
|
|
|
|
|
|
|
|
|
|
|
|
**排查步骤:**
|
|
|
|
|
|
1. 检查 UDP 端口:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 确认端口 34000-34100 未被占用
|
|
|
|
|
|
netstat -an | grep 34000
|
|
|
|
|
|
```
|
|
|
|
|
|
2. 检查 NAT 类型(对称型 NAT 无法打洞)
|
|
|
|
|
|
3. 暂时禁用防火墙测试
|
|
|
|
|
|
|
|
|
|
|
|
### 问题 3:Minecraft 无法连接
|
|
|
|
|
|
|
|
|
|
|
|
**症状:** 在 Minecraft 中添加服务器后连接失败
|
|
|
|
|
|
|
|
|
|
|
|
**排查步骤:**
|
|
|
|
|
|
1. 确认 FunMC 显示"已连接"
|
|
|
|
|
|
2. 检查代理地址是否正确复制
|
|
|
|
|
|
3. 确认 Minecraft 服务器正在运行
|
|
|
|
|
|
4. 检查 Minecraft 版本兼容性
|
|
|
|
|
|
|
|
|
|
|
|
### 问题 4:延迟过高
|
|
|
|
|
|
|
|
|
|
|
|
**症状:** 游戏卡顿,延迟 > 100ms
|
|
|
|
|
|
|
|
|
|
|
|
**排查步骤:**
|
|
|
|
|
|
1. 检查是否使用 P2P 直连
|
|
|
|
|
|
2. 检查网络带宽
|
|
|
|
|
|
3. 关闭其他占用带宽的程序
|
|
|
|
|
|
4. 尝试使用有线网络代替 WiFi
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 性能测试
|
|
|
|
|
|
|
|
|
|
|
|
### 延迟测试
|
|
|
|
|
|
|
|
|
|
|
|
使用 FunMC 内置的延迟显示功能:
|
|
|
|
|
|
|
|
|
|
|
|
| 连接类型 | 预期延迟 |
|
|
|
|
|
|
|---------|---------|
|
|
|
|
|
|
| P2P (局域网) | < 5ms |
|
|
|
|
|
|
| P2P (公网) | 10-50ms |
|
|
|
|
|
|
| 中继 | 50-150ms |
|
|
|
|
|
|
|
|
|
|
|
|
### 带宽测试
|
|
|
|
|
|
|
|
|
|
|
|
Minecraft 典型带宽需求:
|
|
|
|
|
|
- 单人连接:约 50-100 KB/s
|
|
|
|
|
|
- 多人服务器:每人约 100-200 KB/s
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 测试报告模板
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
测试日期: ____________
|
|
|
|
|
|
测试人员: ____________
|
|
|
|
|
|
FunMC 版本: ____________
|
|
|
|
|
|
|
|
|
|
|
|
测试环境:
|
|
|
|
|
|
- 服务器 IP: ____________
|
|
|
|
|
|
- 参与电脑数量: ____________
|
|
|
|
|
|
- Minecraft 版本: ____________
|
|
|
|
|
|
|
|
|
|
|
|
测试结果:
|
|
|
|
|
|
- 基本联机: [ ] 通过 [ ] 失败
|
|
|
|
|
|
- P2P 直连: [ ] 通过 [ ] 失败
|
|
|
|
|
|
- 房间聊天: [ ] 通过 [ ] 失败
|
|
|
|
|
|
- 多玩家: [ ] 通过 [ ] 失败
|
|
|
|
|
|
- 断线重连: [ ] 通过 [ ] 失败
|
|
|
|
|
|
|
|
|
|
|
|
问题记录:
|
|
|
|
|
|
____________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
建议改进:
|
|
|
|
|
|
____________________________________________
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 联系支持
|
|
|
|
|
|
|
|
|
|
|
|
如测试中遇到问题,请通过以下方式反馈:
|
|
|
|
|
|
|
2026-02-25 20:35:01 +08:00
|
|
|
|
- 项目 Issues: https://gt.funmc.cn/xiaobai/FunConnect/issues
|
|
|
|
|
|
- 邮箱: support@fc.funmc.cn
|
2026-02-24 20:56:36 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
*魔幻方开发 © 2024*
|