BetterPeakVoiceFix
Fixes voice connection issues with auto-reconnect, host synchronization, and a visual status overlay. | 支持切换中文。修复了语音连接问题,新增了自动重连、主机同步以及可视化状态显示功能。
| Date uploaded | 3 hours ago |
| Version | 1.1.6 |
| Download link | AiAeT-BetterPeakVoiceFix-1.1.6.zip |
| Downloads | 68 |
| Dependency string | AiAeT-BetterPeakVoiceFix-1.1.6 |
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
BetterPeakVoiceFix
Version 1.1.6 · Updated for PEAK 3.0.0.
English | 中文
A PEAK multiplayer voice diagnostics and recovery mod, based on PEAK VOICE FIX.
It helps detect and recover common voice issues such as failed voice connections, players landing on different voice servers, Actor ID drift after reconnecting, and invalid local voice-state references.
IP addresses shown by the overlay are Photon voice server addresses, not players' real IP addresses.
Features
| Feature | Description |
|---|---|
| Voice status overlay | Shows each player's current voice status in real time |
| Game / Voice ping | Displays Photon game-room ping and Photon Voice ping separately |
| Cross-server detection | Detects players who are not on the same voice server |
| Voice state recovery | Repairs invalid local voice-state references for remote players |
| Auto / manual reconnect | Recovers disconnected or stalled connections; repeated failures use a longer cooldown |
| Actor drift detection | Recognizes game/voice Actor ID mismatch after players reconnect |
| Region diagnostics | Shows game region, voice region and regional latency |
| Photon AppId guard | Prevents other mods from accidentally replacing PEAK's Photon AppIds |
| Room-code fixes | Supports PEAK 3.0.0 HK codes and refreshes authentication before cross-region joins |
| Steam invite fixes | Adds invite retry handling and UTF-8 room-name support |
UI Preview



Status Overlay
Press J to cycle:
Off → Simple → Detail → Off
The detailed panel shows each player's status and:
Room - Voice
182ms - 179ms
The left value is game-room ping, and the right value is Photon Voice ping.
| Status | Meaning |
|---|---|
| [Local] | Your own player |
| [Synced] | The player has BVF and reports the same voice server as you |
| [Connected] | The player does not report BVF data, but is confirmed to be in the current voice room |
| [Mismatch] | The player is still in voice, but game and voice Actor IDs cannot be mapped cleanly; voice usually still works |
| [Connecting] | Voice is still connecting / authenticating, or the player is inside the join grace period |
| [Cross-server] | The player is on a different voice server and cannot normally communicate with you |
| [Disconnected] | The player is not currently detected in the voice room |
Cross-server is more accurate than the older Cross-region wording. Different regions are one cause, but an abnormal split can also happen inside the same region. The in-game UI may still use the older wording.
Players do not all need BetterPeakVoiceFix installed. Players with BVF can report richer voice information; players without it are detected from PEAK / Photon Voice data available locally.
Voice State Recovery
Sometimes a player is correctly connected to the voice room but still becomes inaudible because the local remote-player voice-state reference is invalid.
BetterPeakVoiceFix can detect and recover this state automatically.
- Works even while the overlay is hidden
- Does not change mute, block or communication-permission settings
- Does not require the host or other players to install BVF
- Does not depend on CrossplayStutterFix
A short Voice state recovered notice is shown after a successful recovery.
Manual Reconnect — Alt + K
Alt + K manually resets the Photon Voice connection.
It is mainly useful for occasional network glitches, a stuck Voice Client, or a one-off bad voice connection. It simply gives Photon Voice another chance to reconnect and enter the correct voice room.
For example:
HK: 400ms
EU: 200ms
If the game room is in HK, the correct voice connection still needs to use HK. Alt + K does not switch to EU just because EU has lower latency, and it does not improve the underlying network route.
Shortcuts
| Key | Action |
|---|---|
J |
Off → Simple → Detail → Off |
Alt + J |
Open / close the diagnostic console |
Alt + K |
Manually reset the voice connection |
The J key can be changed in the config.
Diagnostic Console
Alt + J opens the diagnostic console, which can show:
- Game / voice region
- Voice connection and server information
- Photon AppId status
- Region latency test
- Voice-room player list
- Diagnostic logs
Logs can also be copied or exported for troubleshooting.
Connection states, recovery actions and disconnect causes are also saved in BepInEx/LogOutput.log. A joined connection is only automatically reset for a confirmed region or room-name mismatch. Reported server addresses remain available for diagnostics.
Other Fixes
| Fix | Description |
|---|---|
| Photon AppId Guard | Restores PEAK's original Photon AppIds if another mod overwrites them |
| HK room codes | Recognizes PEAK 3.0.0 codes starting with P and supports legacy codes |
| Region-switch join | Refreshes cross-region authentication, then waits for the target master server |
| Steam invite retry | Retries the room-info handshake instead of silently getting stuck |
| UTF-8 room names | Correctly receives non-ASCII room names used by mods such as BetterRoomShare |
| Long room codes (optional, off by default) | Lets the manual join page accept BetterRoomShare's longer room codes, same rule as its EnableVariableRoomCodeLength |
Compatibility
| Mod / Situation | Notes |
|---|---|
| Players without BVF | Supported; local status detection still works, with less detailed information |
| CrossplayStutterFix | Can coexist; BVF voice-state recovery works independently |
| FixJoinRoomCode | Defers cross-region authentication to it when installed |
| BetterRoomShare | Compatible with related room-code, long room-code and UTF-8 invite handling |
| LocalMultiplayer | Photon AppId Guard helps prevent unintended AppId replacement |
Config
BepInEx/config/chuxiaaaa.Aiae.BetterPeakVoiceFix.cfg
Most users can keep the default settings.
See CHANGELOG.md for version history.
FAQ
Do I need to reconnect when I see [Mismatch]?
Usually no. It means the game-player and voice Actor IDs do not map cleanly; it does not necessarily mean voice is broken.
What does [Cross-server] mean?
That player is not on the same Photon Voice server / voice room as you. This can be caused by a different voice region or by an abnormal split inside the same region.
Can Alt + K reduce my ping?
No. It only restarts the voice connection and gives Photon another connection / allocation attempt.
Credits
Based on PEAK VOICE FIX by @chuxia.
BetterPeakVoiceFix extends it with a redesigned status overlay, improved player-state detection, voice-state recovery, region diagnostics, Photon AppId protection, and room-code / Steam invite fixes.
BetterPeakVoiceFix
当前版本 1.1.6 · 适配 PEAK 3.0.0。
English | 中文
PEAK 联机语音诊断与修复模组,基于 PEAK VOICE FIX 继续开发。
主要用于检测和处理语音连接异常、玩家进入不同语音服务器、重连后的 Actor ID 错位,以及本机远端玩家语音状态引用失效等问题。
面板中显示的 IP 均为 Photon 语音服务器地址,不是玩家真实 IP。
主要功能
| 功能 | 说明 |
|---|---|
| 语音状态监控 | 实时显示房间内每名玩家的语音连接状态 |
| 游戏 / 语音延迟 | 分别显示游戏房间 Ping 与 Photon Voice Ping |
| 跨服检测 | 检测玩家是否进入了不同的语音服务器 |
| 语音状态恢复 | 自动恢复本机失效的远端玩家 Voice State 引用 |
| 自动 / 手动重连 | 恢复断开或卡住的连接;连续失败时放慢重试后继续尝试 |
| Actor 错位识别 | 识别玩家重连后游戏与语音 Actor ID 不一致的情况 |
| 区服诊断 | 显示游戏区服、语音区服及各区域延迟 |
| Photon AppId 守卫 | 防止其他模组错误修改 PEAK 的 Photon AppId |
| 房间码修复 | 识别新版港服房间码,并在跨区加入前刷新认证 |
| Steam 邀请修复 | 增加邀请重试,并支持 UTF-8 中文房名 |
界面预览



状态面板
按 J 循环切换:
关闭 → 简易 → 详细 → 关闭
详细面板会显示每名玩家的状态,以及:
房间 - 语音
182ms - 179ms
左侧为 游戏房间延迟,右侧为 Photon Voice 延迟。
| 状态 | 含义 |
|---|---|
| [本机] | 当前玩家自己 |
| [同步] | 对方安装了 BVF,并上报与本机相同的语音服务器 |
| [已连接] | 对方未上报 BVF 数据,但已确认存在于当前语音房 |
| [错位] | 玩家仍在语音房,但游戏与语音 Actor 无法正常对应,通常不影响语音 |
| [连接中] | 正在连接 / 验证语音服务,或仍处于进房宽限期 |
| [跨服] | 对方与本机不在同一个语音服务器,无法正常互通语音 |
| [断开] | 当前未检测到该玩家进入语音房 |
跨服 比旧的 跨区 更准确:不同区服只是其中一种情况,同一区服内也可能因为异常分叉进入不同语音服务器。目前游戏内 UI 仍可能显示旧的“跨区”文字。
整个房间不需要所有人都安装 BetterPeakVoiceFix。安装 BVF 的玩家能上报更完整的语音信息;未安装的玩家则通过本机能够观察到的 PEAK / Photon Voice 数据进行判断。
语音状态自动恢复
有时玩家已经正常进入语音房,但本机保存的远端玩家语音状态引用失效,仍可能导致听不到对方。
BetterPeakVoiceFix 会自动检测并尝试恢复这类异常。
- 面板关闭时仍然运行
- 不修改静音、屏蔽或通信权限
- 不要求房主或队友安装 BVF
- 不依赖 CrossplayStutterFix
恢复成功后,面板会短暂显示 “语音状态已恢复”。
Alt + K 手动重连
Alt + K 用于手动重置 Photon Voice 连接。
它主要适合处理偶发网络波动、Voice Client 卡死或某一次语音错连。简单来说,就是让 Photon Voice 多一次重新连接、重新进入正确语音房的机会。
例如:
HK:400ms
EU:200ms
如果当前游戏房位于 HK,正确的语音连接仍然需要进入 HK。Alt + K 不会因为 EU 延迟更低就切到 EU,也不会把本身 400ms 的网络线路优化成 200ms。
快捷键
| 按键 | 功能 |
|---|---|
J |
关闭 → 简易 → 详细 → 关闭 |
Alt + J |
打开 / 关闭调试控制台 |
Alt + K |
手动重置语音连接 |
J 可以在配置文件中修改。
调试控制台
Alt + J 可以查看:
- 游戏 / 语音区服
- Voice 连接与服务器信息
- Photon AppId 状态
- 各区延迟测试
- 语音房玩家列表
- 诊断日志
日志支持直接复制或导出,方便排查多人房间中的语音问题。
连接状态、重连动作和真实断开原因也会保存到 BepInEx/LogOutput.log。已连接的语音只在区服或房间名确实不符时自动重置,服务器地址仍保留供诊断查看。
其他修复
| 修复 | 说明 |
|---|---|
| Photon AppId 守卫 | 其他模组改写 Photon AppId 时恢复 PEAK 原本的设置 |
| HK 房间码 | 识别 PEAK 3.0.0 的 P 开头港服房间码,并兼容旧版码 |
| 切区加入 | 刷新跨区认证,并等待目标主服务器就绪后再加入房间 |
| Steam 邀请重试 | 房间信息没有返回时自动重试,避免静默卡住 |
| UTF-8 房名 | 正确接收 BetterRoomShare 等模组使用的中文 / 非 ASCII 房名 |
| 超长房间码(可选,默认关闭) | 手动输入房间码页接受 BetterRoomShare 的超长房间码,规则与其 EnableVariableRoomCodeLength 一致 |
兼容性
| 模组 / 情况 | 说明 |
|---|---|
| 其他玩家未安装 BVF | 可以正常联机,本机仍可判断其基本语音状态,但信息较少 |
| CrossplayStutterFix | 可共存,BVF 的语音状态恢复独立运行 |
| FixJoinRoomCode | 检测到它时由它处理跨区认证,避免重复挂载同一修复 |
| BetterRoomShare | 兼容相关房间码、超长房间码与 UTF-8 邀请房名处理 |
| LocalMultiplayer | Photon AppId 守卫可避免意外改写 PEAK 的语音 AppId |
配置
BepInEx/config/chuxiaaaa.Aiae.BetterPeakVoiceFix.cfg
大多数玩家保持默认设置即可。
版本更新记录见 CHANGELOG.md。
FAQ
[错位] 需要重连吗?
一般不需要。它表示游戏玩家和语音 Actor 无法精确对应,并不等于语音已经断开。
[跨服] 是什么意思?
说明对方和你没有进入同一个 Photon Voice Server / Voice Room。可能是连接到了不同区服,也可能是在同一区服内发生异常分叉。
Alt + K 能降低延迟吗?
不能。它只是重新建立一次语音连接,给 Photon 多一次连接 / 分配机会。
Credits
基于 PEAK VOICE FIX by @chuxia 继续开发。
BetterPeakVoiceFix 在此基础上增加了新的状态面板、玩家状态识别、语音状态恢复、区服诊断、Photon AppId 保护,以及房间码 / Steam 邀请相关修复。
CHANGELOG
1.1.6
中文
- 修复连续失败超过 12 次后只延后计时、实际不再连接的问题。现在放慢重试后继续连接,房主、客机与自动连接使用同一规则。
- 已连接的语音仅在区服或房间名确实不符时自动纠正,避免因为队友上报的服务器地址不同而主动断开健康连接。
- 「重连超时时间」现在会实际恢复长时间没有进展的连接步骤,并覆盖停在初始化状态的情况。
- Photon 已经自动发起恢复时,本模组等待该轮完成;稳定连接 10 秒后再清零失败计数。
- 连接状态、重连动作与真实断开原因写入本地 BepInEx 日志,方便区分网络超时、认证失败和主动重置。
- 适配 PEAK 3.0.0 的 P 开头港服房间码;整合房间码跨区加入前的认证步骤,已安装 FixJoinRoomCode 时交由它处理。
English
- Fixed retries stopping after more than 12 failures. Attempts now continue with a longer cooldown, using the same rules for hosts, clients and automatic recovery.
- Joined voice connections are only corrected for a confirmed region or room-name mismatch. Different reported server addresses no longer force a healthy connection to disconnect.
- The connection timeout now recovers stalled connection steps, including clients left in the initial state.
- Wait for Photon's own recovery when it has already started. Failure counters reset after 10 seconds of stable connection.
- Persist connection states, recovery actions and actual disconnect causes to the local BepInEx log.
- Support PEAK 3.0.0 HK room codes starting with P. Refresh authentication before cross-region room-code joins; defer to FixJoinRoomCode when installed.
1.1.5
中文
新增
- 新增「兼容超长房间码(BetterRoomShare)」选项(高级与调试,默认关闭):本体手动输入房间码只接受 6 位,房主装了 BetterRoomShare 并开了自定义房名后房间码会变长,未装 BRS 的客机会被长度校验拦下。开启后输入框不限长度、校验按实际长度放行,规则与 BetterRoomShare 的 EnableVariableRoomCodeLength 一致,两者同开不冲突。只影响手动输入房间码,不影响 Steam 邀请/右键加入。
移除
- 移除「延迟对齐偏移量」配置项,固定为 270。
- 移除「自动恢复语音状态」配置项,恢复功能始终开启(只恢复失效引用,不改静音/屏蔽)。
更改
- 「重试间隔」说明注明只管语音重连,不影响邀请索要房间号的重试(固定 15 秒、最多 4 次)。
- Steam 邀请索要房间号的超时由 8 秒放宽到 15 秒(仍最多 4 次),房主加载慢或网络抖动时不容易误判失败。
English
Added
- New "Allow long room codes (BetterRoomShare)" option (Advanced & Debug, off by default): the manual join page only accepts 6-character codes, so codes from hosts running BetterRoomShare custom room names are rejected on clients without BRS. When on, the input has no length limit and the check uses the actual length, matching BetterRoomShare's EnableVariableRoomCodeLength; both can be enabled together. Manual room-code entry only; Steam invites / Join Game are unaffected.
Removed
- Removed the "Latency Alignment Offset" option; fixed at 270.
- Removed the "Auto Recover Voice State" option; recovery is always on (only restores dead references, never touches mute/block).
Changed
- "Retry Interval" description now states it only covers voice reconnects, not the invite room-ID retry (fixed 15s, up to 4 times).
- Invite room-ID request timeout relaxed from 8s to 15s (still up to 4 attempts), so slow-loading hosts or jittery networks are less likely to be reported as failures.
1.1.3.1
中文
- 仅移除错误打包进来的图片文件夹,我的错。
English
- Removed an image folder that was mistakenly included in the package. My bad.
1.1.3
中文
新增
- Steam 邀请加入时,房间名改按 UTF-8 读取(原版为 ASCII):安装 BetterRoomShare 的房主发出的中文房名可以完整接收并正常加入。仅影响本机接收的房间名,不修改发送协议、其他玩家数据或游戏区服,原版邀请行为不变。
- 目标读取已是 UTF-8(例如同时安装 BetterRoomShare)时补丁保持原样,不会重复修改;目标方法签名或结构与原版不符时不做替换、只记录一次警告,其余功能不受影响。
- 自动恢复本机远端玩家失效的语音状态引用,缓解连接正常却因状态引用丢失而无声的问题;默认开启,可在设置中关闭自动恢复并保留检测。
- 玩家第二行显示红色“语音状态异常·本机播放受阻”,非 Pro 模式和简易面板同样可见;恢复后显示“语音状态已恢复”8 秒。
- 面板隐藏时仍进行检测与恢复;不依赖 CrossplayStutterFix,不要求主机或队友安装,不主动修改静音/屏蔽选择。
- 新增 Photon AppId 守卫:插件加载时快照本机真 AppIdRealtime/AppIdVoice,发现全局设置被改写即还原,语音每次连接前也会兜底拨回。可修复 LocalMultiplayer(未按本机应用配置时)把全局 AppId 换成自建 Photon 应用、导致语音连进另一个应用同名房而双向静音的问题;默认开启,可在设置中关闭。
- 语音房诊断日志附带实际连接的 AppId,便于核对是否进错应用。
更改
- 详细面板延迟列对齐:房间延迟用定宽槽右对齐、语音延迟左对齐,每行的"-"竖直对齐;"ms"留在槽外避免字符被挤压。
修复
- 修复离线模式(单机/本地单人)下语音面板永远显示"初始化中..."的问题:离线模式本质是本地伪房间,游戏刻意不连接语音服务器,面板现在只显示一行"离线模式",且不再被异常规则强制常显。
- 修复在机场按 J 打开的语音面板被带进海滩、雪山等游戏场景持续显示的问题:手动钉住的简易面板在离开机场或离开房间时自动还原为自动显隐规则;详细面板离开机场时立即关闭(常驻显示仅限机场)。
- 修复离线模式下 Alt+K 手动重连仍会对语音客户端发起真实连接的问题。
- 修复离线模式下"本机延迟"显示 0ms 假数据的问题。
English
Added
- Steam invite join now reads the room name as UTF-8 (vanilla used ASCII): Chinese room names sent by a host running BetterRoomShare are received intact and can be joined. This only changes how the local client receives the room name — the send protocol, other players' data, and game regions are untouched, and vanilla invite behavior is unchanged.
- If the target read already uses UTF-8 (e.g., BetterRoomShare is also installed), the patch leaves it as-is without re-patching. If the target method's signature or structure no longer matches vanilla, nothing is replaced and a single warning is logged while the rest of the mod keeps working.
- Automatically restores invalid remote-player voice state references locally, addressing one cause of silence despite a healthy connection. Enabled by default; disabling recovery keeps detection active.
- Shows voice state errors on the player's second line without Pro mode, including affected players in the simple overlay. A restoration notice remains for 8 seconds.
- Detection and recovery continue while the overlay is hidden. No CrossplayStutterFix, host or peer installation is required; mute and block flags are not explicitly modified.
- Added a Photon AppId guard: the real AppIdRealtime/AppIdVoice are snapshotted at plugin load, restored whenever the global settings get rewritten, and re-applied right before every voice connect. Fixes the case where LocalMultiplayer (when not configured with the game's own app ids) swaps the global AppIds for its own Photon app, leaving voice in the other app's same-named room and muted in both directions. Enabled by default; can be disabled in settings.
- The voice-room diagnostic line now includes the effective AppId, making a wrong-app join visible in the log.
Changed
- Latency column alignment in the detailed panel: room ping right-aligns in a fixed-width slot, voice ping is left-aligned, and every row's "-" lines up vertically. "ms" stays outside the slot so the glyph is not squeezed.
Fixed
- Fixed the voice panel being stuck on "Initializing..." forever in offline mode: offline mode uses a local dummy room where the game intentionally never connects voice, so the panel now shows a single "Offline mode" line and is no longer force-pinned by the problem-detection rule.
- Fixed the voice panel opened with J in the airport staying visible in gameplay scenes (beach, alpine, etc.): a manually pinned simple panel now reverts to automatic visibility rules when leaving the airport or the room, and the detailed panel closes immediately when leaving the airport (persistent display is airport-only).
- Fixed Alt+K manual reconnect still initiating a real voice connection in offline mode.
- Fixed the local ping line showing a fake "0ms" in offline mode.
1.1.0
中文
新增
- 新增房间区服选择功能(仅供调试,正常情况下不建议使用)、区服状态查看和各区延迟测试;当指定房间区服无法连接或延迟更高时,会显示明确提示。
- 新增房主侧的新玩家语音接入提示;连接失败或玩家模组版本过旧时,会提供更明确的原因和处理建议。
- 专业信息新增多数派语音区服、对应的语音服务器 IP,以及使用该区服的玩家人数。
更改
-
改善房间码加入流程:修复香港区房间码可能被错误识别为美国区的问题;当房间码要求切换区服时,会等待新区服连接完成后再加入房间,避免因切换尚未完成而入房失败。
-
改善 Steam 邀请加入流程:首次没有收到房间信息时会每 8 秒自动重试,最多重试 4 次;仍然失败时会提示房主可能仍在菜单、加载中或已经掉线,也会提示可能存在区服连接问题,并给出重新邀请或改用房间码的建议。
注:以上两项本不属于本模组的处理范围,但对正常加入游戏的影响较大,因此增加了对应修复,很难想象官方会犯这种错。
-
重构部分代码以提升语音连接与自动重连的稳定性,改善跨区房间、场景切换及手动重连后的语音问题。
-
重新设计语音状态面板。按 J 可依次切换“关闭 → 简易 → 详细”,简易状态只在机场常驻显示(可关闭)。
-
详细面板现在会显示房间区服、语音区服、语音服务器、房间与语音延迟、全员同步情况,以及每名玩家的语音连接状态。
-
提升玩家加入、离开和重连后的状态判断准确性,并更清楚地区分连接中、跨区、断开和未知状态。
-
优化面板间距、文字标签、玩家排列和默认布局,使界面更加紧凑、清晰。
移除
- 移除详细面板中重复显示的本机语音状态、语音人数、本机延迟和测速缓存信息;必要的状态与延迟仍会保留在对应玩家行中,区服测速信息则可通过 Alt+J 的“区服状态”查看。
English
Added
- Added game-region selection (for debugging only; not recommended for normal use), region status information, and latency tests for all available regions. Clear warnings are shown when the selected game region cannot be reached or has higher latency.
- Added host-side notifications for newly joined players' voice connection results. Connection failures and outdated mod versions now provide clearer causes and suggested actions.
- Professional information now shows the majority voice region, its voice server IP, and the number of players using that region.
Changed
-
Improved room-code joining: fixed Hong Kong room codes being incorrectly identified as US rooms. When a room code requires switching regions, the mod now waits for the new region connection to finish before joining, preventing failures caused by joining too early.
-
Improved Steam Invite joining: if room information is not received, the request is retried automatically every 8 seconds, up to 4 times. If all attempts fail, the message explains that the host may still be in a menu, loading, or disconnected, or that the host's region may be unreachable, and suggests sending another invite or using a room code.
Note: The two fixes above are outside the intended scope of this mod, but they have a major impact on joining games, so corresponding fixes were added. It is difficult to imagine the official game making mistakes like these.
-
Refactored parts of the mod to improve voice connection and automatic reconnection reliability, especially in cross-region rooms, after scene changes, and when using manual reconnect.
-
Redesigned the voice status panel. Press J to cycle through “Hidden → Simple → Detailed”. Simple mode remains visible in the airport by default and can be disabled in the settings.
-
The detailed panel now shows the room region, voice region, voice server, room and voice latency, overall synchronization status, and each player's voice connection state.
-
Improved player-status accuracy after players join, leave, or reconnect, with clearer distinctions between connecting, cross-region, disconnected, and unknown states.
-
Refined panel spacing, labels, player ordering, and default layout settings for a more compact and readable display.
Removed
- Removed repeated local voice status, voice-player count, local latency, and latency-cache information from the detailed panel. Required status and latency information remains in the corresponding player rows, while region test information remains available through “Region Status” in the Alt+J console.
1.0.5
- Fixed the recurring status misattribution after a player rejoins: the game room and the voice room are separate Photon rooms with independently numbered actors, so actor-number matching could pin [Connected] on the wrong player once reconnects made the IDs drift (e.g. 2 -> 5 -> 8).
- Voice-room membership and ghost detection are now anchored to the game's own PhotonVoiceView speaker link (voice stream <-> game player), with UserId as a secondary match; same-number actor matching is only a last resort. Works purely client-side — other players do not need the mod.
- No UI changes: statuses, colors, and counts look the same, only the underlying matching is more accurate.
1.0.4
- Voice status now understands mixed-mod lobbies: each player is judged by whether they actually run the mod, so a modded-but-disconnected player is no longer mislabeled as "no mod".
- Non-modded players are inferred from the voice room — [Connected], [Mismatched] (in voice but ID-drifted), or [Disconnected].
- Fixed the false "Isolated" status and the contradictory "all Synced yet N mismatched": rows and counts now come from one consistent check.
- Players who leave are removed from the list immediately instead of lingering as "Left".
- The simple overlay can auto-hide again in mixed-mod lobbies.
1.0.3
- Performance: removed several per-frame scene scans and reduced overlay overhead (it now redraws only when its content changes) — lower CPU/GC cost, mainly in menus and during voice trouble.
- No feature or gameplay changes.
1.0.2
- Fix the layout of changelog.md & mainfest.json
- Fixed issues related to ID drift.
- Removed the EnableDebugLogs configuration option.
1.0.0
- Breaking Change: Merged the Chinese and English editions into a single release for easier maintenance; language can now be selected in config and takes effect after restart.
- Added: New language config option to switch between Chinese and English (
Language). - Changed: Config file name is now
chuxiaaaa.Aiae.BetterPeakVoiceFix.cfgto avoid conflicts with older versions. - Changed: Unified
warn_majoritythreshold with majority detection at>=2. - Changed: Removed the "Enable ID Drift Fix" config option; the related fix logic remains enabled by default.
- Changed: Unified the
Alt+Kforce-reconnect path to use the same decision chain: Majority (>=2) -> Follow Host -> Blind Connect. - Fixed:
Reconnect Timeout (ConnectTimeout)is now fully effective. - Fixed: Room-scoped cache state (PlayerCache/SOS/HostHistory, etc.) is now cleared after leaving a room to avoid stale cross-room data affecting later decisions.
- Fixed: Added null safety for
Alt+Kwhen the voice client is not ready, preventing null reference errors. - Fixed: Corrected SOS list cleanup for unresolved names; the previous
Unknownbranch was effectively unreachable in most cases. - Improved: Improved overall code readability.
0.3.6
- Fixed: Resolved a crash where the UI could throw
NullReferenceExceptionevery frame during startup/reconnect before the voice client had joined a room. - Fixed: Resolved a crash caused by
PhotonNetwork.CurrentRoompotentially being null in "Isolated" state checks. - Fixed: Resolved a crash caused by
PhotonNetwork.CurrentRoompotentially being null in SOS list management. - Added: Fully implemented the "Auto-hide Simple UI" config option (the option existed before but had no effect).
- Added:
joinTimesnow cleans up entries for players who have left every 60 seconds to prevent stale data buildup in long sessions. - Improved: Reformatted parts of compressed code to improve readability.
0.3.5
- Renamed "Show Detailed IP Option" to "Show Connected Voice Server IP and Details".
- Improved IP-related wording to avoid the previous "local IP" phrasing that could be mistaken as exposing personal IP.
- Because option names changed, users upgrading from older versions are advised to delete the old config file:
...\PEAK\BepInEx\Config\chuxiaaaa.Aiae.BetterVoiceFix.cfg. - Updated
README.mddocumentation.
0.3.4 Released