CanaFez VR experiment

Recently I did a bit of volunteer work for the Virtual Reality World Congress and being surrounded by so much amazing VR tech and games got me thinking; Has anyone tried making a game with a retro graphics aesthetic in VR?


I couldn’t find any examples of what I had in my head,  so I decided to do a bit of science and try porting CanaFez to mobile in the aim of making a VR prototype using Google Cardboard.

To begin with, I made some adjustments to my existing Unity project to include the necessary head tracking and view distortion using Google’s own SDK for Unity. After a bit of fiddling I was able to achieve the results seen below in the editor.

Here’s a short video showing this in motion

The two most essential components to CanaFez’s visual design, namely the 4 colour palette and low resolution, seemed to be working great here. SEEMED being the operative word. Upon building to android I was greeted with the following view:

Obviously something’s not right with the view rendered here. The low resolution is present, but in my excitement I neglected to think about how the palette swapping shader might work on Android devices. Basically; it doesn’t.

By this point day two of VRWC 2017 had been and gone. My aim when starting this endeavour was to have something ready and workable by the end of the congress, leaving me with only 1 more day to complete what I’d started. Researching exactly what was happening with this rendered view and which parts of the palette shader weren’t functionally properly on mobile AND solving these problems within a day seemed like a pretty tall order. I wouldn’t call myself an expert on shaders and certainly not so when concerning the intricacies of mobile platforms so I opted for a new solution.

I realised early on that input would be a problem with this demo as up until this point, I’d been using a 360 controller as the main control method. The aim being for the VR demo to have movement automated by a script whist the player (viewer?) observed the surroundings and played with the palette options. But then, and idea! Don’t port the entire game over to mobile, just create a 360 video that can be viewed in VR!

The experience for the user would be the same, almost better as gameplay on display would be more varied and nuanced due to recording live gameplay, rather than automating the process through a script.

Using a 360 degree panorama capture prefab available from the Unity Asset Store I was able to record a series a panorama images which could then be assembled inside Adobe Premiere.

An example of one of these panoramic renders

This video when played in a VR video player produced a complete 360 degree view of the world of CanaFez. You can see this in action in the video below:


I will say that YouTube did decided to compress this to a pretty silly degree, a far higher quality version of this video (and another one) can be found on MediaFire here and here.

This implementation was far from perfect. The constant and unpredictable camera shifting proves to be quite a disorientating process and the purposefully low resolution look doesn’t translate well into video. The lack of palette swapping options or any audio are also pretty major drawbacks.

But despite all these flaws, I really enjoyed what was produced in the end. I was able to view this game from a totally new perspective never seen by anyone before.

I’ll leave you with this incredibly out of sync video of me trying the 360 degree video on my Google Cardboard. If you’d like to try this for yourself (and a highly recommend you do if you have a Cardboard sitting around at home) I recommend using this VR player with the video projected onto the inside of a spherical object.

Expect an Alpha of CanaFez to be released by the end of this month on!

Leave a Reply