Skip to content

InconsolableCellist/StayPutVR

Repository files navigation

🔒 StayPutVR

StayPutVR Logo

Lock yourself or your friends into positions in VR! Want your friend to keep his or her paws hands behind his back? No problem. Chat wants to make you stand on one foot for 60 seconds? Easy. Have to bend over and touch your toes or you lose some kind of game? It's possible, with punishments consequences for failing.

You can be locked via clicking a button locally, or locked remotely via OSC integration (a friend grabbing your StayPutVR-compatible cuffs, for example), at which point your movement will be locked. Once locked, if your devices move too far away from their current position there'll be conseqeuences of your chosing: an audio warning, an OSC message that drives animation on your avatar, or even external messages to OSC-compatible applications, like PiShock.

Cooldown timers, audio warnings, and PiShock intensity are all configurable, and the control remains completely and totally on your own computer, with you choosing who can control your avatar via VRChat's avatar interaction system.

Compatible prefab: foxipso.gumroad.com/l/stayputvr

💖 Support Development

If you enjoy using StayPutVR and want to support me, consider making a donation! Your contributions help me create content for VRChat!

📥 Quickstart

StayPutVR is open-source and created by Foxipso. You can download the code in this Github repo and use the application for free!

You then need a compatible avatar. You can use my public test avatar (Foxipso Base) or add it to your own.

The easiest way to add it is to use my 3D cuffs and collar, which comes complete with a HUD and poseable locks that your friends can set. Using my prefab also supports me and my work!

foxipso.gumroad.com/l/stayputvr

  1. Install the application
  2. Start SteamVR and StayPutVR
  3. Make sure you see "Connected to Driver"
  4. Go to the Devices tab. Move each device to identify it and assign a role using the drop-down.
  5. If you wish to integrate with VRChat or another OSC application, go to the OSC tab, verify the settings, and click Enable OSC.
  6. Experimental [I need testers]: For Twitch integration, go to the Twitch tab, set up your Twitch application credentials, and configure chat commands.
  7. Configure the countdown timer, safe zones, and other settings like PiShock if you wish.
  8. For VRChat, simply lock your cuffs or collar. For manual locking: lock individual devices on the Devices Tab, or set devices to "Will Lock" and then click "Lock All Included Devices" to lock them all at the same time!
  9. Move your devices and you should get a warning if you're out of bounds, or a shock if you're out of bounds and the device is set to shock!

In VRChat, you can now use my public test avatar (Foxipso Base), add it to your own avatars using my prefab, or make your own custom objects that utilize the OSC integration.

✨ Features

  • 🔐 Position locking for any and all VR tracked devices you select
  • 🎯 Configurable boundary radii:
    • Safe zone: You're complying beautifully.
    • ⚠️ Warning zone: You're straying too far--watch out!
    • Non-Compliance zone: Now you've done it.
    • 🛑 Disable zone: Safety threshold for tracking errors or if you wish to stop consenting--auto unlocks and stops any output!
  • 📡 Integration with VRChat, PiShock, OpenShock, and Twitch (experimental)
  • 🦷 Integration with Sacred's VRCBiteTech (get shocked when bitten!)
  • 🔊 Audio cues for warnings and boundary violations
  • ⏱️ Configurable timers for automatic unlocking
  • 💬 Twitch chat bot with real-time command processing
  • High Performance: Optimized for ultra-low latency VR with sub-millisecond frame times

📚 Documentation

View the wiki for more information.

🗺️ Roadmap

  • OpenShock integration
  • ButtplugIO integration
  • DG-Lab integration
  • Placement spheres/hints (attempt #2)
  • In-world audio emitters (attempt #2)

💾 Building From Source

Prerequisites

  • Visual Studio 2019 or higher with C++ desktop development workload
  • CMake 3.15 or higher

Build Steps

  1. Clone the repository
  2. Open a command prompt in the project directory
  3. Run cmake -B build
  4. Run cmake --build build --config Release
  5. Install with cmake --build build --target install --config Release

📅 Version History

1.0.3 - OpenShock Support (Beta)

  • OpenShock Integration: OpenShock support equivalent to PiShock
  • Fixed a bug where the default OSC receive port was 9005 instead of 9001 (VRChat default)

1.0.2 - BiteTech support

  • BiteTech Support: Added support for BiteTech devices, including bite detection and disobedience actions.

1.0.1 - Performance & Stability Release

  • VR Performance Improvements: Eliminated potential blocking operations in VR driver main loop
  • SteamVR Crash Fix: Resolved VRApplicationError_IPCFailed crashes caused by IPC timeouts (after headset reconnects)

1.0.0 - Initial release

⚖️ License

This project is licensed under the Apache 2.0 License. See LICENSE for details.

🙏 Acknowledgments

  • Based on the OpenVR driver example
  • Special thanks to all contributors and testers

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published