Game Career Guide is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Get the latest Education e-news
  • A Student Experience: Making A Serious Game In VRChat

    - Nathan Hahn

  • Lessons Learned

    1. VRChat serious games are fun to test, but hard to analyze

    There are two ways to test games in VRChat, pre-planned testing sessions or randomized testing. After developers create a world, they can find test players in the real world and invite them through a link to join the world and test it, or they can visit random worlds in VRChat that are already populated and ask strangers to come to their world through a portal. As a serious game developer, the possibility of having testers test the game at any time is fantastic for ensuring playability of the world when planned testing is difficult to organize. In addition, because developers are inside the world as their testers play through the game, the social aspects of the platform contribute to the testing experience. That means their introduction to the world and discussion after the experience can all happen inside the game space, rather than taking the participant out of the experience after it is complete.

    Figure 4 - Screenshot of a playtest session

    However, serious game development usually depends on some form of data collection or analysis to ensure the experience delivers on the desired outcomes. When using VRChat, developers will need to set up their own data analysis system for the data they want to collect within the limits of the VRChat platform. This will result in an extended development time because of the lack of data collection tools baked into the VRChat platform. Some ideas that our team had for Art Sort, but have not yet implemented, were a timer to see how fast participants can solve each of the puzzles and a tracker to see how many times participants attempted to place artworks in the wrong category.

    2. Development setup may take longer than you think

    Because VRChat development uses the popular Unity game engine, some developers may think that it would be easy to get their environment set up to make VRChat games. However, beyond the downloading of the VRChat development SDK, there are two main roadblocks developers will run into when setting up their development environment. 

    Firstly, in order to upload worlds to the server, developers need to obtain the "New User" permission rank from the VRChat platform. In order to prevent malicious developers from spamming low-quality content on the VRChat platform, VRChat implemented a permissions system where users gain higher permissions ranks by playing in VRChat worlds and adding friends inside of the platform. Therefore, developers may need to spend over 10 hours playing in VRChat before they can be granted the level of permissions necessary to upload their world and make it playable online.

    Figure 5 - The user permissions ranks

    Secondly, as of December 2020, VRChat games must be developed with Unity 2018.4.20f1. The VRChat platform will not prevent developers from working on their world in other Unity versions, but if they attempt to upload their world with another Unity version, it will not be visible inside the application to select. While some developers may be familiar with using the older version of Unity, other developers may need to learn how to develop without functionality provided by later Unity versions.

    3. Pay attention to your world state synchronization strategy

    There are three ways to have synchronization in VRChat worlds. The VRChat platform gives developers an easy way to create objects which can be picked up and moved around the world by attaching a pre-made script to an object, but the platform also provides for complicated interactivity through their Udon flowchart scripting system. Synchronizing advanced functionality with Udon scripts uses one of the following two methods: event calls or synchronized variables.

    Inside of an Udon script, a server message can be sent to all users on the server. In the case of Art Sort, when the "Start" button is pressed in the first room by any user, an event message would be sent to all players. That message would open the door and play a sound for all users in the world, triggered by the event message.

    Figure 6 - Example of an event call script implemented by the author

    The other way to handle synchronization is through synchronized variables. When a synchronized variable is set up, if the variable's value is changed for one individual, it will be changed for all individuals. This can be useful if there needs to be a world state that is consistent for all users regardless of what time they arrived in the server. However, there is complicated logic involving object ownership that needs to be accounted for when using this pattern to ensure values are changed consistently for the design of the experience.

    Figure 7 - Example of counter incrementor script implemented by the VRChat team


comments powered by Disqus