| Last updated | 2 days ago |
| Total downloads | 110 |
| Total rating | 1 |
| Categories | Quality Of Life Client Side All Clients |
| Dependency string | AiAeT-BetterPeakVoiceFixCn-0.3.4 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
版本:v0.3.4 | 适用游戏:PEAK 1.53a
1. 模组概述
基于PEAK VOICE FIX的改进版,优化了重连逻辑和加入更多的监控功能,连接日志可视化,支持ALT+K手动断开重连。
2. UI
A. 常驻简易 UI (默认开启)
在屏幕(默认右侧)显示的小型状态栏。
-
本机语音:显示当前连接状态(如 已连接 🟢)。
-
语音连接人数:格式为
n/N。- 仅当所有人完美连接且无错位时,会自动隐藏(可配置)。
-
当有玩家状态变化时会将其显示出来。
B. 详细信息面板 ( J 键切换)
这是模组的核心视窗,包含三部分信息。
① 顶部:连接状态与 IP
- 本机IP:你当前连接的语音服务器地址。
- 房主IP:房主所在的语音服务器地址。
- [同步] 🟢:你与房主在同一频道,能互相听到。
- [异常] 🔴:你与房主不在同一频道(即“孤立”状态),需重连。
② 中部:玩家列表状态 (关键)
每一行代表一个游戏内的玩家。模组通过智能算法赋予他们不同的状态标签:
| 状态标签 | 颜色 | 触发条件与含义 |
|---|---|---|
| [已连接] | 绿色 🟢 | 完美状态。ID 匹配,语音在房间内。 |
| [错位] | 淡绿 🟢 | v0.3.4 核心功能。玩家显示已断开,但语音房间里有“无名幽灵”占位。含义:他的语音大概率是通畅的,只是 ID 卡住了。无需让他重连。 |
| [连接中] | 黄色 🟡 | 玩家刚进房(前 25秒)或正在验证。请耐心等待变绿。 |
| [断开] | 红色 🔴 | 进房超过 25秒,且语音房间里没有对应的幽灵。含义:彻底没连上,听不到也说不出。需按 Alt+K。 |
| [孤立] | 黄色 🟡 | 本机连错了语音服务器,不同服务器是无法互相通信的。 |
③ 顶部/底部:智能统计栏
显示格式:n / N(m 人ID错位)
-
**n (当前语音人数)**:包含 正常连接 + 错位(幽灵)连接 的总和。
- 若 n = N (满员):显示为 绿色 🟢。
- 若 存在错位:显示为 淡绿色 🟢。
- 若 n < N (未满):显示为 黄色 🟡。
- 若 n = 1 (孤立):显示为 红色 🔴。
-
**N (游戏总人数)**:当前房间内的玩家总数。
-
**(m 人ID错位)**:仅当检测到幽灵连接时显示,提示你有多少人处于“错位”状态。
C. 调试控制台 (按 Alt + J)
面向高级用户,显示底层数据流。
- 数据列:
ID | Name | IP | Ver | [状态] - **[幽灵] 标记**:明确指出哪些 ID 是残留的“尸体”。
- Ver:显示对方安装的模组版本(如
v0.3.4,需对方也安装此版本)。 - 功能按钮:支持一键导出日志到文件,方便反馈 BUG。
2. 核心功能
连接与同步逻辑
本模组并非简单的“断线重连器”,而是一个基于 PUN (Photon Unity Networking) 的分布式语音协调系统。它通过一套严密的决策树来确保所有玩家“殊途同归”。
A. 房主:灯塔广播机制
房主是语音网络的基准点。
- 机制:房主的客户端会以高频率(每秒检查)扫描自身的语音连接状态。一旦连接成功,模组会将当前的 语音服务器 IP 写入到房主的 PUN 玩家自定义属性 (
PVF_IP) 中。 - 同步:这个属性是全网同步的。这意味着房间内任何一个安装了模组的客机,都能实时读取到房主当前连接的语音 IP。
- 变动广播:如果房主因网络波动切换了语音服务器,模组会立即更新属性,并广播一条日志:“房主IP变动: Old -> New”,指引所有客机跟随。
B. 客机:智能决策树
客机并不是无脑连房主,而是拥有一套“多数派优先”的智能决策逻辑,以防止房主单人掉线导致全员陪葬。
当客机需要重连时,执行以下逻辑判断:
[开始重连决策]
│
▼
1. 【寻找多数派 (Majority Rule)】
统计缓存中所有玩家所在的语音 IP。
IF (某个 IP 的人数 ≥ 2 且是全场最多)
└─ 决定:连接到这个“多数派 IP” (跟随大部队)
▼ (如果大家都很分散)
2. 【跟随房主 (Follow Host)】
读取房主的 PVF_IP 属性。
IF (房主有有效 IP)
└─ 决定:连接到房主的 IP
▼ (如果房主也没连上)
3. 【盲连/自动 (Blind Connect)】
不指定 IP,让 Photon 自动分配。
└─ 决定:听天由命 (Auto)
意义:这套逻辑确保了即使房主掉线,剩下的人也能为后面中途加入的人提供广播功能。(前提是房间内至少两人安装模组且新加入的玩家也安装了模组)
SOS 与 快照缓存
A. 缓存快照
模组会在本地维护一份 PlayerCache(花名册)。
- 作用:PUN 的玩家列表有时会因为网络波动瞬间消失(导致数据丢失)。本地缓存会“记住”每个玩家最后一次出现的 名字、IP、版本号 和 状态。
- 价值:这就是为什么即使玩家掉线了,Alt+J 面板依然能显示他“上次所在的 IP”和“是否为幽灵”,而不是直接消失。
B. SOS 求救信号
当模组执行自动重连,或玩家按下 Alt+K 时,会向全房间广播一个 Event Code 186 的数据包。
- 发送内容:
[类型:SOS, 目标IP, 来源IP] - 接收方反应:
- UI 底部弹出警告。
- 记录该玩家的“事故现场”(他从哪里掉的,想去哪里)。
- 实战用途:当你看到某人一直连不上,查看 SOS 日志发现他的“目标 IP”和大家的“多数派 IP”不一致,就能立即判断是他连错服务器了,而不是麦克风坏了。
手动干预(Alt + K)使用场景
-
场景一:当前是 [孤立] 状态
- 动作:**主动断开 (Disconnect)**。
- 逻辑:调用
punVoice.Client.Disconnect()-> 发送 SOS 信号“手动断开”。 - 目的:软重启,当你发现自己串台了,可以尝试主动断开重进。
-
场景二:当前是 [断开] / [连接中] 状态
- 动作:**强制重连 (Force Reconnect)**。
- 逻辑:立即触发
HandleClientLogic-> 走一遍上面的“智能决策树” -> 强制指定 IP -> 发起连接。 - 循环策略:如果连续失败 3 次,模组会自动放弃指定 IP,转为“盲连模式”尝试破局。
4. 配置选项与快捷键
⌨️ 快捷键
-
J:切换 UI 显示模式(隐藏 -> 简易 -> 详细)。
-
Alt + K:**手动重置 (SOS)**。
- 防误触机制:如果当前是 [已连接] / [错位] 状态,按第一次会主动断开。再按一次才会执行强制重连。
- 如果当前是 [断开] 状态,按一次即可直接重连。
-
Alt + J:打开/关闭调试控制台。
⚙️ 配置文件
(路径: BepInEx/config/chuxiaaaa.Aiae.BetterVoiceFix.cfg)
-
UI设置
- UI位置:下拉选择
左侧或右侧。
- UI位置:下拉选择
-
网络设置
- 重连超时时间:默认
25秒。即进房后黄色的 [连接中] 状态维持的最长时间,超时变红。 - 启用ID漂移修复:默认
True。建议保持开启,否则可能看到 Unknown。
- 重连超时时间:默认
-
高级与调试
- 启用虚拟玩家:在 UI 上生成一个假人,用于测试排版。
5. 兼容性
| 对方状态 | |
|---|---|
| 未安装模组 | 同步和重连机制无效,但你能单向看到他的真实状态(断开/连接) |
| 兼容PeakVoiceFix | 理论上同步(广播和接受房主服务器IP)机制是兼容的,但UI跟未安装模组一样。 |
| 旧版模组 (<v0.3.0) | 功能正常,能看到IP和连接情况,但看不到你的详细连接步骤(如“验证中...”),也看不到你的版本号。 |
| >v0.3.4 | 功能正常,能看到详细连接步骤、版本号、IP。 |
6. 常见问题 (FAQ)
Q: 为什么人数显示 10/10**,但后面跟着 (2 人ID错位)?**
A: 这说明语音房间里确实有 10 个连接(满员)。其中 8 个是正常的,2 个是 ID 错位的。
因为 错位 = 能说话,所以总数算作满员(绿色/淡绿)。这是一个好消息,说明全员语音通畅。
Q: 我是 [错位] 状态,需要按 Alt+K 修复吗?
A: 不需要。只要你能说话,能听到别人,就不要乱动。[错位] 只是 ID 对不上,不影响语音功能。强行重连反而可能导致你彻底卡死。
Q: 为什么我自己进了游戏,但在 Alt+J 的列表里看不到自己?
A: 这说明你自己就是那个错位的人。
Dump 列表打印的是“语音服务器里的 ID”。你的游戏 ID 是新的,但你的语音客户端还在用旧 ID(幽灵)。因为旧 ID 找不到对应的玩家名字,所以可能显示为 [幽灵] 或者被归类到错位统计中。
Q: 刚进房间为什么所有人都是黄色的?
A: 这是 25秒宽限期。游戏连接语音需要时间,模组不会一上来就报错,而是先显示黄色 [连接中] 等待数据同步。
Q:什么时候应该使用alt+K?
A:当你显示为[孤立]/[断开]的时候,可尝试手动断开重连,如果依然不奏效,请重启游戏和steam/检查网络/检查模组(尤其是LocalMultiplayer)。