World creators can already do a lot with triggers, standard assets, built in components, and final IK. But a major issue that I run into time and time again is how to interact with the player. Some of my best worlds completely ditch the vrchat player and give you a new one, whether that be a big robot, a racing vehicle, or a tiny platformer. But the problem with these is that I always end up locking the player in place and giving them pickups. While this has some benefits in the social aspect of hearing nearby players, there is a certain level of disconnection that ruins immersion. If we had better interaction with the player, this could be improved significantly to build these complex systems directly on top of the vrchat player rather than replacing them.
First of all, we need a trigger that will activate based on what device you are using. It could be future proofed by letting us type in a string, checking it with the XRDevice, and if they match then fire the trigger. Or it could also be matched against more generic terms like VR or Desktop.
Second, we need hand and root tracking. Just a simple script that sets the transform of an object to copy the transform of your vr hands. This would allow for much more immersive connection between the player and the world, such as with menus or touchable buttons.
And third, a script that takes analog inputs from the player and writes to an animator float. X and Y of left/right directional inputs. Animators are the basis of complex world logic, and the more information we give them the more we can do.
But here's the thing: none of this needs to be networked. These scripts can and should be entirely local, and if the world creator decides, they can use objectsync. This is exactly what broke datastorage and made prop api so difficult to deal with (not that it was even intended to be used in the way it was). We don't need more fine-tuned complicated scripts that do a dozen different things behind the scenes and break after 6 months. We just need a few simple, generic ways to bridge the gap between the player and the world.