April 29th, 2022

Recap

Let's go over what we accomplished this month!

HRtoVRChat_OSC

This month, HRtoVRChat_OSC had numerous QOL updates and improvements to not only the software, but the UI and Prefab!

Prefab v2

Prefab v2 brought numerous improvements to how the Heart Rate counter is set up on an avatar. As opposed to the previous method, where pre-made prefabs are merged into an avatar using Avatars 3.0 Manager by VRLabs (thank you for this btw).


The previous method restricted customizability greatly, allowing a user to only have the prefab be under one specific bone (without having to redo animations), and required the use of three integer parameters, which in all honesty, is a waste of storage.


Now, with the new prefab, dubbed Prefab v2, users control all of the customizability. Here's some of the things you can customize:

  • Materials

    • Can be set for each individual number slot!

  • Where the prefab should be at

    • The prefab can now be moved anywhere you want under the root avatar, without having to redo all the animations

On top of customizability, it also introduced numerous improvements, such as:

  • One HR Parameter

    • Instead of the legacy three parameters, the new convention is now just using one integer; lots of more space!

  • Optimized Animators

    • Animators now run way more optimized than previously. Animators will:

      1. No longer use Any State transitions

        • This saves tons of time since you don't need to check hundreds of if conditions before transitioning

      2. Write Defaults Off

        • Having Write Defaults Off is the recommendation by VRChat for all Animator Transitions, so now we're up to standards.

Finally, not only that, but setting up can be done in as little as 10-15 minutes (5 if you're speedrunning) thanks to the automated install process in the included Unity window.

A preview of the Prefab v2 and it's features

SDK

The SDK enables users to use their own HeartRate devices in use with HRtoVRChat_OSC. This opens numerous options up to people who do not own any of the supported devices and do not wish to obtain one of those devices.


The SDK was designed to be incredibly lightweight and use with all-platforms (Windows, macOS, Linux) and for all software (.NET Framework 4.8 and .NET 6.0). The protocol used was TCP, with use of jchristn's SuperSimpleTcp, and messages being serialized and deserialized with protobuf-net, all messages will be small, compact, and are guaranteed to be delivered to the endpoint (no promises!) An SDK connection can be created (in a .NET environment) in as little as 30 lines of code (maybe even less).


The SDK is extensively documented here, and I am eager to see what other devices can be supported! If you'd like to submit an SDK to be featured, then reach out to me on discord!

A simple demonstration of the HRtoVRChat_OSC_SDK previewed in the UI Helper

HRProxy

Remember this guy? Yeah he handles a lot of the third-party HeartRate provider's data, haha!

Complete Rewrite

Because of how unstable our current C# implementation of HRProxy is, we've decided to switch over to using Node.JS instead. This has been slightly tested and seems to work fine, however, there are a couple of issues, especially pertaining to WebSocket clients not closing properly on the Server's end. For the most part, however, the server works completely fine, and will be transitioned soon.


To the lucky few who have documentation for this service: no documentation will be changed; you will need to make no updates to your software to support the rewrite.

Pulsoid?

Currently, the method for grabbing data from Pulsoid is really unreliable and has the potential to cause a lot of issues. We're looking into fixing that and officially supporting Pulsoid. As of writing this, we're waiting for the OAuth2 interface to release out of beta, and we will switch to that. This will provide more user-control for being able to prevent their HeartRate from being used for malicious reason by malicious third-parties and pertain support for any backend updates Pulsoid may have.

Open Source When?

I do plan on open-sourcing HRProxy for it to better and for people to help upgrade, however, because of our current Pulsoid implementation, we have decided to keep our code closed-source in respect of Pulsoid. While I've seen numerous GitHub repositories use our same method, we prefer to keep our code for this private, until we upgrade to their OAuth2, which will finally allow us to Open-Source!

FitbitHRtoWS

Only tiny changes, for now...

Security Improvements

With the recent Server Backend Upgrade, we've improved the security of not only the server, but connected sockets. This does degrade reliability slightly, however I've been using it for weeks since the update, and I've noticed little interruption.

Forks

I'm going to stick one in an electrical socket (my arch nemesis)

BinaryParameterTool

I added the implementation to be able to automatically add Parameters to an Avatar's Expression Parameters!

Check it out at BinaryParameterTool, by regzo2

(hi azmidi!)

HRCounter

I made it so the counters in HRCounter are independent, no longer requiring the use of Counters+ (but you can still use Counters+ if you wish)

Also redesigned the logo, and not to pat myself on the back here, I think it looks pretty nice.


Check it out at HRCounter, by qe201020335

Cool update tweet

Plans and what I'm Working On

What will I do? Read and find out lol

HRtoVRChat_OSC

While I'm not saying I want to give up on the project, I want to move away from it this upcoming month and focus on other projects. Sure I'll still implement fixes, improvements, etc. however I want to focus less of my time on this project, and gear towards others (that I think everyone will love)

HRtoVRChat

No this isn't a misinput, for any who don't know, HRtoVRChat was the original. It brought your HeartRate into VRChat, however over the usage of a mod, rather than OSC. Obviously, this was developed before the OSC update. Because of how this terminates VRChat's ToS, I plan to start deprecating it, then making it obsolete and available on other platforms (maybe like GitLab, or just archived somewhere). My plans are not laid out yet, regardless, I plan to remove it soon.

FitbitHRtoWS

Hopefully, I get some time to plan out and develop a new app which performs better than our current, and brings the optimizations as the failed v1.6.0 tried to, but with even more!

HRProxy

As stated earlier, I plan to fix the current issues with the HRProxy rewrite and get it released on the main server.

Closed-Beta Testers?

Might need some Closed-Beta Testers for something I'm working on... If you want to have a chance, be sure to join the discord

Growth

Grown quite a bit, huh?

As of writing, our discord has ~155 members, and HRtoVRChat_OSC, being my most popular project, has ~1.3k downloads! This is an incredible amount of support shown by our community, and I thank all of you for making this possible, and continuing to help me learn and provide you all with useful software!

Monthly Photo

Here's a cool photo I took, just wanted to share it

Photo of my new Protogen Avatar, base by @triwavebz on Twitter

Closing Notes

Everything's gotta come to an end at some point

Currently, I'm busy a lot, like a lot a lot, which you can blame on school sure, but you could also blame on procrastination, and numerous other things, however one thing is for sure: I really do enjoy having the opportunity to be able to sit here, write this article, and be excited for maybe a handful of people read it. It's really what gets me out of bed in the morning, so thank you for giving me this opportunity. Let's see what we can achieve this month!

200Tigersbloxed

Software Engineer and Reverse Engineer