Community Garden: A Massive Scale Virtual Reality Simulation

I’ve been very busy building the next release of Community Garden. The first release to Steam Early Access allowed me to test the viability of Improbable SpatialOS on a small scale with virtual reality. The next release takes Community Garden to the next level by increasing the world size exponentially, giving player’s ability to customize their avatar and providing a starter home to player’s in the metaverse. There are still some bugs to squash before I push this release to Steam but in the mean time check out the new trailer. 

Windows Mixed Reality Impressions

I’m super excited to announce that I have a new member of Pixelshot Games: Jennifer Reyes! She’s been helping out with Community Garden by adding procedural generation to expand the city limits. Now that she’s working on VR development with me, we had to get her a headset of her own.

At the local Windows store, we were able to try a few Windows Mixed Reality headsets. The one she ended up picking was the HP Mixed Reality HMD. Here are some of my impressions about it.

Room Scale without External Sensors

The most impressive part about Windows Mixed Reality is the ability for the headset to support room scale without the need for any external sensors. The headset does all the tracking. The only thing you need to have room scale VR experience is the headset and two controllers which are included in your purchase. This is amazing for a number of reasons:

  • No external sensors to mount or setup.
  • Transporting your headset and controllers is so much easier. This means you can do virtual reality development on the go.
  •  

Low PC Requirements

The second thing that really impressed me was the low hardware specifications needed to run the headset. Basic functionality is supported with the following hardware:

  • Intel Core i5 7200U
  • 8 GB RAM
  • Integrated Intel® HD Graphics 620 or NVIDIA MX150/965M
  • Windows 10

This means most modern laptops can at least run some of the VR content available for the headset. Of course, other more graphic intensive applications require higher powered hardware. Community Garden, for example, requires a Nvidia 1060 or higher for the HTC Vive or Oculus Rift but I was able to run it on a Nvidia 1050Ti when using a Windows Mixed Reality headset. This is a huge plus since it will allow for more people to experience virtual reality.

Screen Quality

The screen quality is very high. I was impressed with the clarity of the display and didn’t notice much if any screen dooring.  I would need to see a Oculus Rift again to compare, but I would say it’s the best display I’ve seen to date. This is even more impressive considering the low price tag.

Easy Setup Process

The last thing that really impressed me was the setup process. Installing the updates to the new laptop to support Windows Mixed Reality was the only step in the process that took a long time. Once the update was complete, the installation and setup of the headset and controllers took minutes.

Summary

My time with Windows Mixed Reality has been short but I’m impressed with what it has to offer. This headset would be a good entry for anyone thinking of trying out virtual reality. I will need more time to see if the headset holds up but so far so good.

6 Reasons Improbable’s SpatialOS isn’t ready for Virtual Reality

I’ve been developing with Improbable’s SpatialOS since the beginning of 2016. Being the first developer to use the platform for Virtual Reality, I’ve seen SpatialOS change a lot and had a chance to help Improbable shape the on-boarding process, documentation and design of the platform. Originally, I designed and developed the experience known as MetaWorld but since the beginning of 2017, I shifted my focus to a project that was more realistic given the state of SpatialOS, Community Garden.  Recently, people have been asking me about my experiences with Virtual Reality development on SpatialOS.  Even though Community Garden is currently available on Steam Early Access, VR development on SpatialOS isn’t easy so I decided to create a short write up about the main problems I’ve faced.

Slow Workflow

For those who develop VR games, we all know that making VR games requires a lot of play testing since the medium is so new. If you are developing a VR title for SpatialOS, it will probably be a multiplayer game. Having multiple people test in VR requires multiple computers. Unfortunately, there is no way to host a local instance of SpatialOS that can be shared between multiple computers. You must upload your project to the cloud, start a new deployment and start the client from the Improbable web launcher. This process can take 10-15 minutes depending on your internet connection which really slows down development. I found myself spending a lot of time waiting for builds to be sent to the cloud only to find I missed something. I would then have to make my change and wait again. I ended up needing to batch changes to maximize my time spend uploading.

Update: A member of the Improbable staff contacted me to inform me of the following guide that was made available for v12 of SpatialOS. I’m looking forward to testing this out once I upgrade to that version. Check out the guide here.

Compatibility with VR Libraries

The way SpatialOS handles entities doesn’t play well with many existing VR frameworks. An entity, this includes the player game object, is streamed to the client after the scene loads. Other entities are enabled and disabled depending on the player’s location. You will need to change your framework to handle this since many of them are built with the assumption that scenes are somewhat static and the player objects loaded with the scene.

Too many new versions

I started using SpatialOS at version 3 in early 2016. Since then there has been 9 new versions. That’s a new version every 2 months or so. Some versions required complete rewrites of existing code (one update required me to port my scala code to C#). If Improbable supported these older versions, then this might not be a big deal but unfortunately this is not the case. At most Improbable will support 2 versions behind the current version. This means you will be force to upgrade every 6 months. For a small team like the one building Community Garden (which currently is myself and my friend part time) this can seriously limit progress.

Always behind on Unity Version

Unity is evolving very quickly. Each new version provides big improvements and new features that help improve VR performance. Also, plugins like Nvidia VRWorks require the latest version of Unity to work. Unfortunately, using SpatialOS means you won’t be able to take advantage of those newer things. SpatialOS is often a major release or 2 behind Unity. This can also be problematic if you are thinking about using an asset from the Unity Asset store. If the asset requires a newer version of Unity then SpatialOS supports, you won’t be able to use it.

Bugs

Yes, SpatialOS is technically in Beta but the amount of bugs or inconsistencies makes working with it pretty challenging. I’m basing this on version 9 of SpatialOS so the newer versions (versions 10, 11, 12 at the time of writing this blog) may be better. The issues I’ve encountered range from errors when running spatial build to unexpected behavior when using the SpatialOS API. Simple bugs are normally fixed quickly but some are more difficult to prove and may take a long to get a fix. Even critical, show stopping bugs might take months to fix. When I was building MetaWorld, this often made any sort of progress impossible. With Community Garden, I still face many issues that sometimes take weeks to figure out.

Difficulty with Precise Interactions

VR requires very precise manipulation of the objects in the game world to create a fun experience. Picking up objects, throwing them and using them to interact with other objects is expected from any VR title. SpatialOS doesn’t handle these type of interactions very well. Collision detection is finicky, collisions between fast moving objects causes problems and using the VR controllers to manipulate an object’s position is not straight forward. If you plan to use an existing framework like VRTK or NewtonVR then you will need to make changes to source code significantly to work with SpatialOS.

Improbable Not Focusing on VR anymore (Bonus)

I’m hoping this will change in the future but Improbable’s focus isn’t on VR (or so I was informed) like it was in 2016. The company has decided to shift marketing focus to “Virtual Worlds” rather than “Virtual Reality”. I’m not sure why the change since the potential for VR could be huge but this will make developing for VR very difficult. New versions of SpatialOS won’t be tested for VR compatibility and the improvements required to create a platform that is easy to use with VR might not be addressed.

Even with all this I still believe that SpatialOS can be huge for VR. I will continue to work towards vast scale with Community Garden in hopes to build a place for players of the VR community to come back to over and over again. A place that feels alive and full of possibilities. If you have a Vive or a Rift you can try Community Garden now right Here . I’m always looking for feeback.

My Personal Status Working on MetaWorld

Last year, I began the journey to create MetaWorld. Being one of the first developers to use SpatialOS and being the first using it for virtual reality was a huge challenge. Documentation was sparse and Improbable was tied up growing their company. After a 3-4 months we had something to show to the world. The response was good, people who tried MetaWorld really connected with the world.

Unfortunately, after the press showing, I ran into a number of issues with SpatialOS due to required version upgrades and bugs with SpatialOS itself. Improbable was busy with other things so they were unable to help. I slowly worked through some of the problems but progress was slow. I started to feel that making a massive VR experience wasn’t going to be possible. At our current trajectory it would just take too long.

I still wanted to create something that allowed people to be able to visit a living world together from around the globe. To get there we would need more support from Improbable and a much bigger team. Funding efforts weren’t going well because investors wanted to see more before investing. The time required for one developer/game designer and a designer to create what we need would just take too long, we needed more help which costs money. This became a contention point between me and my business partner. Eventually I just didn’t see a future in continuing the way we were. I decided to stop working on MetaWorld and focus on a new title called Community Garden. Community Garden would start small to prove the viability of building persistent VR worlds in SpatialOS.

I was surprised when I found out my partner had started an IndieGoGo fund. To avoid confusion, I wanted to make it clear that I’m not currently working on MetaWorld and I don’t know how my partner plans to deliver on the promise of the fund. If you plan on donating to the IndieGoGo fund, please note that none of the work I produced for the MetaWorld you see in videos like the one above is what will be delivered.