

Version: v1.0.2 | Game Version: PEAK 1.54a | 👉中文说明和更新日志
PEAK VOICE FIX from @chuxia,supports switching between Chinese and English. It includes optimized reconnection logic and additional monitoring features. Press the J to view the voice status of all players in the room. If you experience voice issues, use ALT+K to manually disconnect and reconnect (this can only be done once if the connection is stuck for over 20 seconds).
A small status bar displayed on the screen (default: right side).
n/N.
This is the core window of the mod, containing three sections of information.
Each row represents a player in the game. The mod assigns different status tags via an intelligent algorithm:
| Status Tag | Color | Trigger Condition & Meaning |
|---|---|---|
| [Connected] | Green 🟢 | Perfect State. ID matches, and voice is in the room. |
| [Misaligned] | Pale Green 🟢 | v0.3.4 Core Feature. The player appears disconnected, but a "Nameless Ghost" occupies a voice slot. Meaning: Their voice is likely working, but the ID is stuck. Do NOT ask them to reconnect. |
| [Connecting] | Yellow 🟡 | Player just joined (first 25s) or is verifying. Please wait patiently for it to turn green. |
| [Disconnected] | Red 🔴 | Joined over 25s ago, and there is no corresponding ghost in the voice room. Meaning: Completely failed to connect; cannot hear or speak. Needs to press Alt + K. |
| [Isolated] | Yellow 🟡 | Local client connected to the wrong voice server. Different servers cannot communicate with each other. |
Display Format: n / N (m ID Misaligned)
Intended for advanced users to view raw data streams.
ID | Name | IP | Ver | [Status]v0.3.4; requires the other player to also have this version).This mod is not a simple "Reconnector"; it is a distributed voice coordination system based on PUN (Photon Unity Networking). It uses a rigorous decision tree to ensure all players eventually reach the same destination.
The Host is the reference point for the voice network.
PVF_IP).Clients do not blindly follow the Host. Instead, they use a "Majority Priority" intelligent decision logic to prevent the whole team from failing if the Host drops alone.
When a Client needs to reconnect, it executes the following logic:
[Start Reconnection Decision]
│
▼
1. 【Majority Rule】
Count the voice IPs of all players in the cache.
IF (A certain IP has count ≥ 2 AND is the majority)
└─ Decision: Connect to this "Majority IP" (Follow the crowd)
▼ (If everyone is scattered)
2. 【Follow Host】
Read the Host's PVF_IP property.
IF (Host has a valid IP)
└─ Decision: Connect to Host's IP
▼ (If Host is also disconnected)
3. 【Blind Connect / Auto】
Do not specify an IP; let Photon assign automatically.
└─ Decision: Leave it to fate (Auto)
Significance: This logic ensures that even if the Host disconnects, the remaining players can provide broadcasting functions for late joiners (assuming at least two people in the room have the mod, and the new player also has the mod).
The mod maintains a local PlayerCache (Roster).
Alt + J panel can still show a player's "Last Known IP" and "Ghost Status" even after they drop, instead of them simply disappearing.When the mod executes an auto-reconnect or a player presses Alt + K, it broadcasts a data packet with Event Code 186 to the whole room.
[Type: SOS, Target IP, Source IP]punVoice.Client.Disconnect() -> Sends SOS signal "Manual Disconnect".HandleClientLogic -> Runs the "Intelligent Decision Tree" above -> Forces specific IP -> Initiates connection.(Path: BepInEx/config/chuxiaaaa.Aiae.BetterVoiceFix.cfg)
Left or Right.25 seconds. The max time the yellow [Connecting] status lasts after joining before turning red.True. Recommended to keep enabled, otherwise you may see "Unknown".True. Allows forcing voice disconnection or reconnection via Alt + K.| Other Player's Status | Interaction Result |
|---|---|
| No Mod Installed | Sync and reconnection mechanisms are ineffective, but you can see their true status (Disconnected/Connected) one-way. |
| Compatible PeakVoiceFix | Theoretically, the synchronization (Broadcasting and receiving Host IP) mechanism is compatible, but the UI behaves like they have no mod. |
| Old Version (< v0.3.0) | Functional. You can see their IP and connection status, but you won't see their detailed connection steps (e.g., "Verifying...") or their version number. |
| > v0.3.5 | Fully Functional. You can see detailed connection steps, version numbers, and IPs. |
Q: Why does the count show 10/10, but it's followed by (2 ID Misaligned)?
A: This means there are indeed 10 connections (Full) in the voice room. 8 are normal, and 2 are ID Misaligned. Because Misaligned = Can Speak, the total counts as full (Green/Pale Green). This is good news, indicating voice is working for everyone.
Q: I am in [Misaligned] status. Do I need to press Alt + K to fix it?
A: NO. As long as you can speak and hear others, do not touch it. [Misaligned] only means the ID doesn't match the slot, but it does not affect voice functionality. Forcing a reconnect might cause you to completely freeze or disconnect.
Q: Why can't I see myself in the Alt + J list after joining the game?
A: This means you are the one who is misaligned.
The Dump list prints "IDs inside the Voice Server." Your Game ID is new, but your Voice Client is still using the old ID (Ghost). Because the old ID cannot find a corresponding player name, it might show as [Ghost] or be categorized into the misalignment statistics.
Q: Why is everyone yellow when I first join the room?
A: This is the 25-second grace period. Connecting to voice takes time; the mod doesn't report errors immediately but displays the yellow [Connecting] status while waiting for data synchronization.
Q: When should I use Alt + K?
A: You should try manual disconnection/reconnection only when you are displayed as [Isolated] or [Disconnected]. If it still doesn't work, please restart the game and Steam, check your network, or check your mods (especially LocalMultiplayer).
To be honest,I'm a novice. I used AI to assist me in organizing the code and the documentation. After nearly one month of testing in a multi-person room (8~12 player), the current version is now basically stable.