Featured Blog

Taming the wild west of VR: 5 technical lessons learned making the serious game Art Sort in VRChat

We developed a serious game using Social VR application VRChat to see how well the Unity development process could support serious game development. Here are the lessons we learned about the possibilities and limitations of VRChat for serious games.


Last semester, I partnered up with fellow game design classmate Oliver Page to develop a serious game for the social VR platform VRChat. VRChat is sometimes referred to as the wild west of VR due to the experimental ethos of its development community, but I wanted to explore the possibilities of serious game development on the platform. We learned a lot from the experience, but we also noticed there hasn’t been much research on the possibilities of social VR platforms for serious games. I hope that this blog post spurs more interest in researching the applicability of these platforms for serious game development in the future.

Why VRChat?

The VRChat platform has many characteristics that make it a promising way to develop games. VRChat allows users to upload their own custom avatars and worlds through the Unity game engine for free (although it lacks a way to monetize available content). VRChat is also a cross-platform social VR application where users can play with mouse and keyboard, PC-enabled VR, or on the Oculus Quest. VRChat has a flourishing community development mindset, and there have been some very impressive user-created games already made within the platform.  

Figure 1 – A re-creation of the game “Among Us” as a VRChat world

Serious games usually have smaller teams, a smaller budget, and a shorter time frame of development than most entertainment games. Therefore, asking a serious game team to set up a cross-platform VR experience with synchronous multiplayer may be promising as a serious game experience but too expensive for a serious game client’s budget. By using VRChat, serious game development teams could theoretically use the capabilities of the premade platform to reduce the difficulty of developing a cross-platform synchronous multiplayer VR game for clients, so long as the platform provides the capabilities necessary for the desired serious game experience.

Development of Art Sort

Figure 2 – The title image of Art Sort

To test the challenges of creating a serious game inside of the VRChat platform, I partnered up with a fellow graduate student with an art background to create a very simple serious game. Art history students generally study for their classes by reviewing artworks and ensuring they can specify characteristics about those artworks for their quizzes and exams. Art Sort is a puzzle game where players must solve each puzzle room by picking up artworks scattered around the room and putting them into their specific categories. Once all the artworks for a room are sorted, they can proceed to the next room. The categories that we used for this limited-scope experience were art subject, movement, and culture. By turning the primary study activity of art history into a cooperative social VR experience, we hoped it might provide a companion activity to learning in the classroom and improve motivation for study and discussion in art history students.

Figure 3 – A screenshot of all the rooms of Art Sort inside of the Unity game engine


The total development time of art sort for the code functionality of the serious game took around 30 hours of work. My teammate handled all the art and modeling for the world, which would be a comparable working time to creating content for a non-VRChat game. Prior to developing Art Sort, I had around 1,500 hours of experience developing games in Unity, 100 hours of experience developing VR games using SteamVR, Oculus SDK, and VRTK, and 15 hours of experience developing in VRChat. Therefore, the amount of time spent on a simple game like this might be longer if a developer does not have a similar prior level of experience.

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

4. Cross-platform play does not mean cross-platform capabilities

The VRChat platform allows people to log in with multiple different types of devices, which theoretically makes it easier to develop an experience for multiple platforms at once without burdening developers on the minutiae of cross-platform development. However, when creating a serious game, developers need to appreciate the key differences among the experiences of these platforms to ensure the experience works on all these platforms. For mouse-and-keyboard PC and PC-enabled VR, minor design details may require creative thinking by developers to solve design problems. For example, a key part of Art Sort is the ability to pick up artworks and look at them while they are carried to a category location. In VR, users can rotate and manipulate artworks as they are held, but mouse-and-keyboard users do not have this capability. Therefore, the game was designed to have a default hold location for the artworks that is more suitable for mouse-and-keyboard but gives VR users less flexibility in how artworks are held.

Figure 8 – Artworks needed to be held at a distance for mouse-and-keyboard users to ensure visibility while holding them. VR users can move artworks closer or further away while holding them, but mouse-and-keyboard users cannot.

For Oculus Quest users, developers need to consider even more platform differences. Firstly, uploading a world to make it accessible to Oculus Quest users requires a separate build process, so developers need to upload their world twice every time they make changes. Secondly, a world must be less than 50 MB large to be playable on the Oculus Quest, if the world is larger than 50 MB the SDK will upload the world, but it will fail to open inside of VRChat. The Oculus Quest also has more limitations on user avatars and does not allow embedded videos inside of worlds, a functionality used in Art Sort to provide an introductory video to players. If developers plan to enable their worlds for the Oculus Quest, they need to plan out the content of the world before development begins to ensure Quest users will be able to receive an experience comparable to PC and PC-enabled VR users.

Figure 9 – Two worlds in VRChat: “The Black Cat” supports Oculus Quest, “The Great Pug” does not.

5. Facilitator tools need to be baked into the world design

In a conventionally developed serious game, configuration of the world settings for players usually happens outside of the play experience. However, for games uploaded to VRChat, facilitators will need settings inside of the world that enable them to control the game play for participants in a similar way to how a facilitator in a real-life testing setting would control when participants begin and end a serious game play session.

The way that we enabled this for Art Sort was to use a community-created keypad tool with a secret code. If any user types in the secret code, they gain access to the administrator panel which no other players can see. This panel allows users to prevent anyone from starting the game by hiding the start button, starting the world from the admin panel, or completely resetting all the puzzles. This way, a facilitator can prevent participants from starting the game until they receive an introduction or can restart the experience completely for all participants if additional participants arrive later after the game has begun.

Figure 10 – Admin panel with keypad


There are countless other lessons learned while building this game, but hopefully these five takeaways can give developers an appreciation of the capabilities and drawbacks of using VRChat for serious game development. While the VRChat platform offers ease-of-publishing for cross-platform multiplayer synchronous VR serious games, some designers may find the restrictions imposed by the platform too limiting to satisfy their clients’ visions of their serious game experiences. When developing serious games outside of these platforms, developers can code their way out of issues related to implementing clients’ visions, but by choosing to use a social VR platform, developers are locked into many of the restrictions imposed by that platform. Therefore, while development of serious games in the platform can be done by developers with a broad level of expertise, designers must be well-versed VR game design and able to inform serious game clients of the important cost and capability trade-offs from using social VR platforms like VRChat for their serious games.

Figure 11 – Selfie taken during a playtest session using the VRChat platform camera system

In a future blog post, my teammate will post more details about the game that we made and how we adapted art history curricula into a serious game.


Latest Jobs


Playa Vista, Los Angeles, CA, USA
Senior Level Designer (Zombies)

PlayStation Studios Creative Arts

Petaling Jaya, Selangor, Malaysia
Lead Concept Artist

High Moon Studios

Carlsbad, CA, USA
Technical Designer at High Moon Studios

High Moon Studios

Carlsbad, CA, USA
VFX Artist
More Jobs   


Explore the
Advertise with
Follow us

Game Developer Job Board

Game Developer


Explore the

Game Developer Job Board

Browse open positions across the game industry or recruit new talent for your studio

Advertise with

Game Developer

Engage game professionals and drive sales using an array of Game Developer media solutions to meet your objectives.

Learn More
Follow us


Follow us @gamedevdotcom to stay up-to-date with the latest news & insider information about events & more