PeakTwitchIntegration
In-game Twitch integration for PEAK with Voice Balance, Cannon Launch, teammate pushing, and local developer test tools.
By Ventloop
| Date uploaded | 2 months ago |
| Version | 0.8.6 |
| Download link | Ventloop-PeakTwitchIntegration-0.8.6.zip |
| Downloads | 38 |
| Dependency string | Ventloop-PeakTwitchIntegration-0.8.6 |
This mod requires the following mods to function
BepInEx-BepInExPack_PEAK
BepInEx pack for PEAK. Preconfigured and ready to use.
Preferred version: 5.4.75301README
PEAK Twitch Integration
A PEAK-specific Twitch integration that runs entirely inside the game. It does not require a chat bot, companion application, or the external Stream Hub.
Current features
- Click the small Twitch logo at the top-right of PEAK's main menu to open the integration window.
- Link the broadcaster account with Twitch's Device Code OAuth flow.
- Connect directly to Twitch EventSub and receive custom Channel Points redemption events while PEAK is running.
- Store OAuth credentials encrypted for the current Windows account and refresh them automatically.
- Enable or disable feature modules from the integration window.
- Use PEAK Voice Balance as the first module, including RNNoise, per-player automatic loudness leveling, a peak limiter, and one shared 0-200% output level.
- Automatically create and manage a
[PEAK] Cannon Launchreward with mandatory player-name input. - Launch the exact matching player, including the streamer, and refund invalid or unavailable targets.
- Optionally look at a nearby teammate and press U to shove them about one metre and knock them over.
- Enable the local Developer Tools test-bot spawner for repeatable shove testing without another player.
The main-menu integration window now uses an opaque dark-green background and high-contrast text.
Installation
- Install
BepInEx-BepInExPack_PEAKthrough Thunderstore or r2modman. - Remove the older standalone
PeakVoiceBalancemod if it is installed. Running both would process voices twice. - Import
PeakTwitchIntegration-0.8.6.zipas a local mod and start PEAK through Modded. - Click the small Twitch logo in PEAK's main menu.
For a manual install, copy plugins/PeakTwitchIntegration.dll and plugins/librnnoise-0.dll into BepInEx/plugins/PeakTwitchIntegration/.
Linking Twitch
Twitch requires every application to have its own public Client ID. No client secret is needed or accepted by this mod.
- Register a Twitch application in the Twitch Developer Console and configure it as a public client for Device Code authentication.
- Copy its Client ID into the field in PEAK's Twitch Integration window.
- Select CONNECT.
- Open the activation page shown by the mod, enter the displayed code, and approve
channel:manage:redemptions. - PEAK reconnects the saved account automatically on later starts.
Version 0.8.6 needs the manage permission to create the Cannon Launch reward and to refund failed launches. Teammate Push and Developer Tools do not read Twitch chat and add no OAuth permission. If version 0.4.0 or older was already linked, Twitch asks for one new authorization; the Client ID does not change.
The OAuth token and rotating refresh token are protected with Windows DPAPI for the currently signed-in Windows user. FORGET SAVED ACCOUNT removes the stored authorization. Twitch is connected only while PEAK is open.
Menu access
- In the main menu, click the small Twitch logo in the top-right corner.
- During a run, press Escape and choose
TWITCH INTEGRATIONin PEAK's pause menu. - Both entries open the same live settings. Escape closes the integration window first and leaves the pause menu open.
Voice Balance behavior
- Every incoming remote voice has independent RNNoise and loudness state.
- Speech is moved toward a target of -18 dBFS within configured gain limits.
- Loud transients are limited before PEAK plays them.
- By default, non-zero individual player sliders are treated as 100%; 0% remains mute.
- PEAK's distance, obstruction, muffling, reverb, cinematics, and global voice volume remain intact.
- The existing
VOICE BALANCErow in PEAK's player-volume menu remains available.
Only the listener needs Voice Balance. It never changes or transmits the listener's own microphone audio.
Cannon Launch behavior
- On connection, the mod creates or updates
[PEAK] Cannon Launchon the linked broadcaster channel. - The default cost is 1000 Channel Points. Existing configurations are migrated once, and the global cooldown remains disabled.
- Launch power defaults to 2000 and can be adjusted from 250 to 5000 in the in-game window.
- The selected player sees a large game-styled countdown: green 3, yellow 2, then red 1.
- A compact lower-left popup identifies the triggered Twitch reward during the countdown and launch.
- Launches remain mostly vertical but include a gentle forward component in the selected player's facing direction.
- Viewer input is matched case-insensitively against exact PEAK/Photon player names. A leading
@is accepted. - Unknown, missing, ambiguous, dead, or unavailable targets cancel the redemption and refund the points.
- The launch itself uses PEAK's existing multiplayer RPC, so it reaches the selected player without teleporting them into a physical cannon.
- Fall damage is suppressed only for the launch's first genuine landing. Any later fall uses PEAK's normal damage rules immediately. For a remote player's countdown and no-fall-damage guarantee, that player must also have this mod installed; the launch itself still reaches vanilla clients.
- Disabling the module disables the reward. A normal disconnect or game shutdown also attempts to disable it; after a crash, Twitch may leave it enabled until the next connection.
Teammate Push behavior
- Enable or disable
TEAMMATE PUSHin the in-game Twitch Integration window. - Look directly at a living teammate within the hard maximum of 1.5 metres and press
U. - The default forward force is now 400, twice the previous default.
- The lobby host can adjust the shared force from 200 to 800 in the integration window. The value is synchronized through the Photon room to every player using version 0.8.5 or newer.
- Non-host players see the active value but cannot change it while they are in the room.
- The target is knocked over for about 1.1 seconds and pushed backward in the local player's viewing direction.
- The pushed player receives up to eight seconds of fall-damage protection. It ends immediately on the first genuine landing, so a later fall uses PEAK's normal damage again.
- The key, range, preferred host force, upward lift, and protection duration can also be adjusted in the generated BepInEx configuration.
- The target does not need the mod for the shove itself because it uses PEAK's existing multiplayer RPC. The target does need the mod for fall-damage protection.
- Teammate Push is entirely in-game; there are no Twitch chat commands or additional Twitch scopes.
Developer Tools
- Open the
DEVELOPER TOOLStab in the main-menu or Escape-menu integration window. - Inside a multiplayer room, only Photon's lobby host can enable or use the test-bot spawner. Non-host controls and the
F8hotkey are blocked. - If the local player loses the host role, any existing local test bot and its HUD are removed immediately.
- Enable
PUSH TEST BOT, then pressF8during a playable level or useSPAWN / REPLACE TEST BOT. - One stationary local test dummy is spawned in front of the player; spawning again replaces it.
- A second copy of PEAK's own stamina bar appears above the normal player bar and follows the dummy's stamina and all standard debuff segments.
- Its label shows stamina and injury numerically. New injury damage flashes red as
DAMAGE +N%, making fall-damage tests unambiguous. - Walk within 1.5 metres, look directly at the dummy, and press the configured Teammate Push key (
Uby default). - The developer dummy intentionally receives no Teammate Push fall protection, while real pushed players keep the configured protection.
REMOVE TEST BOTcleans it up. Developer test bots are also removed when the mod shuts down.- The dummy is a local PEAK Character/Ragdoll test object, not a real Photon account. It does not occupy a lobby slot and other players do not see it.
Configuration and compatibility
The generated configuration file is:
BepInEx/config/com.local.peaktwitchintegration.cfg
Built against PEAK Steam build 24961053 and BepInEx-BepInExPack_PEAK-5.4.75301.
License
The mod source is released under the MIT License. The included RNNoise binary is redistributed under the BSD 3-Clause license; see THIRD-PARTY-LICENSES.md.
CHANGELOG
Changelog
0.8.6
- Restricted the developer push-test bot to Photon's current lobby host.
- Blocked the Developer Tools toggle, spawn button, remove button, and
F8spawn hotkey for non-host players. - Automatically remove the local dummy and its HUD if the local player loses the host role.
- Keep solo/offline testing available when no Photon room exists.
0.8.5
- Doubled the default Teammate Push force from 200 to 400 and migrate untouched existing defaults automatically.
- Added a 200-800 host-only force slider to the in-game integration window.
- Synchronize the host's selected force through the Photon room so every player running version 0.8.5 or newer uses the same value.
- Non-host players can see the shared force but cannot change it while connected to the room.
0.8.4
- Replaced the large Ventus Bot and
TWITCH INTEGRATIONlabel in the main menu with one compact 64-pixel Twitch logo button in the top-right corner. - Removed the separate main-menu caption and oversized click area while keeping the pause-menu entry unchanged.
0.8.3
- Added a second copy of PEAK's native stamina/debuff bar for the active developer push-test dummy.
- Added live dummy stamina and injury percentages plus a red
DAMAGE +N%indicator whenever injury increases. - Kept the developer dummy outside Teammate Push fall protection so it can be used to verify actual fall damage.
0.8.2
- Anchored the developer push-test dummy to the local character's live body position instead of the character root that can remain at the level spawn.
- The dummy now appears one metre in front of the player's current position, on the nearest valid ground and already within push range.
0.8.1
- Increased the default Teammate Push forward force from 80 to 200 after in-game dummy testing.
- Extended the brief knockdown from 0.85 to 1.1 seconds so the target travels instead of only tipping over.
- Existing untouched 80-force configurations migrate automatically; custom force values are preserved.
0.8.0
- Added separate
INTEGRATIONandDEVELOPER TOOLStabs to the in-game window. - Added an opt-in local push-test bot spawner, disabled by default and bound to
F8. - Added
SPAWN / REPLACE TEST BOTandREMOVE TEST BOTcontrols. - The test dummy uses PEAK's loaded bot Character/Ragdoll prefab while bot AI and input translation are disabled.
- Developer test bots are explicitly targetable by Teammate Push and are removed when the mod shuts down.
0.7.3
- Enforced 1.5 metres as the hard maximum Teammate Push targeting range.
- Existing configurations above 1.5 metres are migrated down automatically.
0.7.2
- Added eight seconds of fall-damage protection to the player affected by Teammate Push.
- The protection ends immediately after the first genuine landing so a later fall deals normal damage again.
- Reduced the default push targeting range from 3.25 metres to 1.5 metres and migrate the old default on existing installs.
- Added a configurable
FallProtectionSecondsvalue from 1 to 30 seconds.
0.7.1
- Added a
TWITCH INTEGRATIONbutton to PEAK's Escape pause menu. - The same integration window and live feature controls are now available during a run.
- Escape closes the integration overlay first without also dismissing the pause menu in the same frame.
0.7.0
- Added optional in-game Teammate Push, enabled or disabled from the integration window.
- Added a configurable
Uhotkey, 3.25-metre line-of-sight targeting, and a short input cooldown. - Added an approximately one-metre forward shove with a small lift and brief ragdoll fall.
- Reused PEAK's multiplayer character RPCs so the pushed target does not need the mod.
- Kept the feature entirely in-game with no Twitch chat commands or additional OAuth scope.
0.6.2
- Removed PEAK's long-lived zero-damage cap from Cannon Launch protection.
- Fall damage is now skipped only for the launch's first genuine landing and is restored immediately afterward.
- Prevented short, ineligible
Landcalls from clearing protection before the actual landing.
0.6.1
- Colored the Cannon Launch countdown green for 3, yellow for 2, and red for 1.
- Added a compact animated lower-left popup identifying the triggered Twitch reward.
- Changed the Cannon Launch reward cost to 1000 Channel Points.
- Added a one-time configuration migration so existing installations also receive the 1000-point cost and disabled cooldown.
0.6.0
- Added a targeted three-second 3-2-1 countdown before Cannon Launch.
- Styled the countdown with PEAK's active TextMeshPro font, bold outlined numbers, and a short pop animation above the screen center.
- Synchronized the countdown to the selected player's mod client through Photon events.
- Added a gentle 15% forward component in the selected player's facing direction while keeping the launch predominantly vertical.
- Revalidated the selected player after the countdown and refunds the redemption if they leave or become unavailable.
0.5.2
- Fixed Twitch reward updates and disconnect cleanup to use the required HTTP PATCH method.
- Kept the discovered reward session active when a settings synchronization fails, so redemptions still reach the game.
- Added exact-title fallback routing for Cannon Launch redemptions when Twitch reward synchronization is temporarily unavailable.
- Added HTTP status details to Twitch API errors for easier diagnosis.
- Moved the Ventus Bot and its Twitch Integration label to the top-right corner of the main menu.
0.5.1
- Increased the default one-step Cannon Launch force from 500 to 2000.
- Added an in-game launch-power slider with a range from 250 to 5000.
- Disabled the Twitch reward's global cooldown by default.
- Added a one-time migration so existing 0.5.0 configurations receive the stronger launch and disabled cooldown automatically.
0.5.0
- Added automatic creation and live synchronization of the
[PEAK] Cannon Launchreward. - Upgraded OAuth to
channel:manage:redemptions; existing users authorize once again with the same Client ID. - Added required viewer player-name input, exact case-insensitive lobby matching, and streamer targeting.
- Added multiplayer launch dispatch through PEAK's existing character RPCs.
- Added targeted fall-damage suppression until the launched player lands.
- Added automatic Twitch fulfillment on success and cancellation/refund for invalid targets.
- Added Cannon Launch enable, cost, sync, and status controls to the main-menu window.
- Replaced the translucent integration window with an opaque dark-green, high-contrast panel.
0.4.0
- Rebranded the project as PEAK Twitch Integration.
- Added an in-game Twitch connection window opened through the Ventus Bot.
- Added Twitch Device Code OAuth without storing a client secret.
- Added Windows-DPAPI-protected OAuth credential storage and automatic token refresh.
- Added a direct EventSub WebSocket connection for Channel Points redemptions.
- Added reconnect, deduplication, token validation, disconnect, and forget-account controls.
- Integrated PEAK Voice Balance as the first feature module with its master toggle and shared 0-200% level.
- The Twitch connection currently observes redemptions; no redemption launches a game action in this version.
0.3.0
- Added the Ventus Bot as a small bottom-center indicator on PEAK's main menu.
- Embedded the image in the plugin DLL so it cannot be lost during installation.
0.2.0
- Added a
VOICE BALANCErow to PEAK's player-volume menu. - Added an ON/OFF button for all incoming voice processing.
- Added a shared 0-200% output slider for every equalized player voice.
- Added explicit keyboard/controller navigation links for the new controls.
0.1.0
- Added per-player incoming RNNoise suppression.
- Added speech-aware automatic loudness leveling and a peak limiter.
- Added an option to ignore non-zero player volume sliders while preserving 0% as mute.
- Preserved PEAK's proximity and environmental voice processing.