A VRChat OSC tool made with the intention to allow players to control another players moving, using an existing Physbone component in their model's armature.
Role: Python Developer | Client: Zenithval | Date: September 2nd, 2022
The client, Zenithval, wanted to create a simple tool to increase the interactivity between users within the game called "VrChat".
In summary, he wanted to give users the ability to pull or drag other users around.
This functionality existed for specific "world" instances in VrChat, but only if it was implemented by the world creator.
Zenithval wanted to give users the option to use this ability in any instance.
Therefore, he succeessfully created the original version of OSCLeash; Version 1.0 allowed a user to grab and pull a user.
However, it had a number of issues such as:
After understanding the existing problems in Version 1.0 of OSCLeash, I had dived into researching what modification were needed to complete Zenithval’s vision of the tool. I began by reading VRChat’s documentation on how to use OSC for VRChat. We were given the options of using either Python or C# to use OSC. Since version 1.0 was using the Python programming language, we decided to do the same for version 2.0.
As I was better prepared for this project, we began to tackle each primary problem individually.
To solve this issue, I had suggested adding a simple collection of any existing leashes where only one can be active at any time. All leashes will be grabbable; however, only one will affect the user at any time.
We found that this issue was related to VRChat itself and could not be changed. Therefore, Zenithval suggested emulating controller inputs into the game as it would result in movement that is like the OSC inputs. In conclusion, we decided to implement vgamepad to emulate a Virtual Gamepad through Python.
To include model turning, we had to know which way the leash was facing based on the user’s perspective. We had 4 points of reference that we were using to determine which direction to pull the user. Therefore, we decided to take advantage of those 4 points of reference and allowed the individual user to decide which of those 4 directions they should turn when a specific leash was pulled. These included North, West, South, and East. Additionally, we made this ability optional due to potential motion sickness.
To solve this specific issue, I had implemented the Single Responsibility Principle to the file structure, added error handling and tests whenever possible or necessary, and included a more detailed User Interface within the terminal. This allowed us to quickly find and resolve any coding issues that had arisen during development and user testing.
To address the issues from OSCLeash version 1.0 and align with Zenithval's vision for version 2.0, I implemented key changes based on thorough research. The primary goals were to enhance user control, improve functionality, and create a more seamless experience for VRChat users. By focusing on the technical challenges and incorporating direct feedback from users, I was able to create a solution that not only met the original objectives but also provided greater customization and reliability in the tool's performance.
Interested in working together on a similar project?