Skip to content

poprox24/VRChat-Shocker-Link-CPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

271 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues


image

ShockerLink

Connects VRChat avatar parameters to PiShock or OpenShock devices.
Supports serial and API modes, bezier intensity curves, a dynamic cooldown system, chatbox output, VR notifications, and more.

Report Bug or Request Feature

demo.mp4

Table of Contents


Getting Started

Prerequisites

Installation

  1. Go to Releases and download Shocker_Link.exe (Shocker_Link on Linux)
  2. Place it in any folder and run it
  3. Open Settings (bottom left)
  4. Add a parameter under OSC / Avatar and set its name to match a parameter on your VRChat avatar
  5. Choose your connection mode: PiShock or OpenShock, then Serial or API
    • Serial (USB hub): connect the hub and let the app scan, or enter the port manually
    • API: enter your credentials in Settings
    • OpenShock serial users: add shocker IDs manually - they can't be auto-detected over serial
  6. Click Save or Save and Restart if prompted

Usage

  • The intensity curve controls the probability distribution of shock strength.

  • Curves are named tabs above the plot. You can add, rename, clone, delete, or copy curves from saved presets via right-click.

  • Presets store a full set of curves. Left-click to load, right-click to rename, middle-click to set as default, click the floppy icon to save.

  • Ctrl+S to save the active preset quickly.

  • All inputs support undo/redo with Ctrl+Z / Ctrl+Y.

  • Multiple OSC parameters can be configured, each with its own curve, intensity range, shocker list, and shocker selection order.

  • The cooldown system dynamically increases wait time between shocks based on recent trigger frequency.

  • The panic hotkey (default F9) disables shocks immediately from anywhere, even when the window isn't focused.


Features

  • PiShock and OpenShock support via serial or API
  • Shared shocks between friends using room codes
  • Bezier intensity curve with weighted random sampling
  • Dynamic cooldown system
  • Presets with per-preset curve and view state
  • VRChat chatbox output and VR notifications (XSOverlay / OVRToolkit / WayVR)
  • Stats tracking: shock count, duration, intensity, and daily history
  • Visual avatar parameters for animator integration

Visual Parameters

ShockerLink automatically sends three float parameters to your avatar after every shock. Add them to your avatar's animator and params file to drive animations, particle effects, or anything else.

Parameter Type Range Description
ShockerLink_IntensityPercentage Float 0–1 How strong the shock was (0 = 0%, 1 = 100%)
ShockerLink_CooldownPercentage Float 0–1 Starts at 1 right after a shock, drains to 0 as the cooldown expires
ShockerLink_DurationSeconds Float 0–1 Normalized shock duration (1 = 10 seconds, the software maximum)

CooldownPercentage updates at ~10Hz while the cooldown is active, so it can drive a smooth progress bar or blend tree on your avatar.


Building from Source

See BUILD.md for detailed instructions.


Contributing

Fork the repo and open a pull request, or file an issue tagged enhancement.

  1. Fork the project
  2. Create a feature branch (git checkout -b feature/MyFeature)
  3. Commit your changes (git commit -m 'Add MyFeature')
  4. Push to the branch (git push origin feature/MyFeature)
  5. Open a pull request

Contributors

Contributors

License

Distributed under the DWYW License. See LICENSE for details.


Contact

Poprox24 - @poprox422 - poprox24.roxy@gmail.com

Project: VRChat-Shocker-Link-CPP

(Back to top)

About

A link between a VRChat avatar parameter and a PiShock/OpenShock device

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Contributors