Metakot

Metakot is a custom VRChat world developed by Cybernetic Walrus using Unity and VRChat SDK. The order came from Telenet.

I was the only programmer on the project since no one from CW had experience with VRChat SDK. It was... an experience.

Work

  • Established the base for the VRChat World.
  • Implemented local lobby system.

Early version of the Metakot.

Local lobby system demo showcasing ownership-based button restrictions and player spawning.

  • Implemented synced ping pong ball physics.

Ball standard position syncing from owner to non-owner.

Forced ball position syncing from owner to non-owner.

Final iteration of ball syncing with lerping and delay.

  • Implemented the whole beer pong gameloop.

Game over and resetting the game.

Results

 Syncing physics in multiplayer projects is hard, especially if there are certain strict limitations. I ended up "breaking" some rules of VRChat world development. The point was, that the owner of the ball (the person that touched it last) had the physics simulated and then sent to all other players. The ball was lerping in a slow way with a small delay, since the syncing was so fast that it was outrunning the syncing of other players movement;
○Implementing beer pong logic was generally fun but not without troubles. VRChat is not made for precise physics interactions and there were a lot of bugs with just detecting if anyone has scored anything and syncing the current score among all the players. The VRChat SDK allows handling all the logic with blueprints, just like Unreal Engine, but there were some moments when I had to write some code for custom nodes. And after a lot of trial and error, the result was finally satisfying.
 Warning: in order to become a developer for VRChat - you need to have a certain status on your profile. Obtaining this status might require some days or some weeks. In my case, it was exactly 1 week which I had to spend in VRChat actively during working hours. That was... An experience...