Why I've Started the Vancouver VR Community

25 April 2017

Vancouver VR Community Launch Animation

For the past year or so I’ve been a part of an amazing local community of game developers called Indiepod. Each week we meet up to discuss our progress. The numerous things I’ve shared with the group and learned from them has been instrumental in helping me release my first game, find work in the burgeoning Virtual Reality (VR) space, and stay on track during my transition from app to game developer.

Earlier this year I realized that there was nothing similar to this in Vancouver specifically focused on VR games, content & experiences. A few events seemed focused on the standard lecture format, and cost anywhere from $15 - $40 to attend. A free, tight-knit community built around VR was something I was missing from my life.

In light of this I decided to team up with a few fine folks here, and we’ve been chatting with (and taking cues from) some neighbouring VR communities (VR Austin, Seattle VR) on how to run a healthy community. We’ve also been in talks with many local VR companies on how we can promote the benefits of Virtual Reality as a whole.


I’m happy to announce that I’ve banded together with a few fine folk here in Vancouver to create a new community for VR developers, enthusiasts, artists, etc. Radical inclusivity and transparency are the key tenets of the new Vancouver VR Community’s modus operandi. For instance, if you’d like to be involved in the direction, our #mods channel on our Discord chat server is public and open for anyone to participate.

We’ve been hard at work putting together a list of resources, featured VR projects being developed in Vancouver, and keeping track of current & upcoming events.

We will be at the upcoming Consumer VR Convention (CVR) in a couple of weeks, so make sure to come chat with us or just stop by to say hi.

Lastly, to celebrate the launch we have two giveaways on right now. You could win tickets to either this weekend’s YVRFF film fest, or Sunday tickets to CVR. Find more details here: http://vancouvervrcommunity.com/

To The Future

One last thing, we are currently seeking out space for our inaugural meetup (penciled in for Tuesday, May 16th). If you know of a space that could host 20 - 30 people, and ideally already has a Vive or Rift setup (or other VR goodies) then drop us a line! Cheers. 😄

And a big thanks to everyone who has provided the news of this community with a warm reception so far. I love when I see everyone banding together to create a terrific ecosystem such as this for all who want/need it. I’ve got a feeling 2017 is going to be a fantastic year.

Vancouver VR Community on FacebookTwitter

The Internet Effect or: My First Taste of Reddit Glory

20 March 2017

A super interesting thing happened the other day. I took a very simple action which was seen by hundreds of thousands of people, possibly millions.

I was browsing the ol’ tweetstack and one jumped out that I thought was hilarious albeit super geeky. And their followup tweet just added to it. I had just woken up, was barely alive yet and thought “I wonder if /r/programmerhumor would like this?”.

I snapped a screenshot, unchecked “msg my inbox with comments/replies”, posted it on reddit and went on with my day.

About 8 hours later I was looking at reddit and came across the post. Turns out the answer was a resounding “yes”. The post had legs. There was roughly 2,900 upvotes on it, and it was at the top of /r/programmerhumor. I stumbled upon this bit of data that I forgot I had cross-posted from one public forum to another in the early hours of my mornin’.

The strangest bit to me was that it wasn’t my original content. In fact, it only took me roughly a minute to snap the screenshot and post on reddit.

I messaged a friend and let her know about it, then went on with my day. A few hours later it shot up again, and this time it was over 10,000 upvotes.

I’m guessing it ended up on reddit’s frontpage, because the uptick was crazy. At the time of writing this, it now sits in /r/programmerhumor’s top 10 of all time.

I wanted to share this experience with you as I found it so bizarrely fascinating, that something someone can do these days can affect millions everywhere instantly. Knowing that is one thing, and experiencing it is another. I’m absolutely hooked on the feeling, and looking to recreate it. But next time, it’ll be different. Next time, it will be with something I created.

Reddit Post - Original Tweet

How I've been spending my time

6 March 2017

WARNING: this post is a bit of a brain dump of everything I've been working on and dabbling with. Consider yourself warned!

I've been working on a culmination of various projects since Justin and I released Astervoid 2000 a few months ago, and I wanted to put it all in one place to share what I've been up to as well as create some sort of organized record of just what the heck has been eating my time.

Strap the Virtual Reality controls to your legs! ShatterStomp, one of my favourite recent projects


2016 was huge. I decided to focus the entire 2nd half of it on making Astervoid the best damn game I could make. Needless to say, I learned a ton. Business and marketing, Unity (C#) / graphics programming, sound design ... On top of that, I composed around 15 tunes for the Astervoid 2000 soundtrack, and we worked with memorecks to add his terrific styling to the OST. You can listen to it on bandcamp.

After tasting what working on games was like, I realized I craved something new. Making web apps in Rails & JavaScript just wasn't interesting anymore.

Time for a change

Switching to the vast world of videogames has been challenging. Respecializing has proven more difficult than anything I've done over the past five years. It's pushed me to to learn a boatload of new skills. I realized quickly that having only one successfully launched 2D title under my belt makes it tricky to land work in this more competitive landscape.

I started 2016 with the idea of making a psychological thriller VR title. After meditating on it some, I realized the amount of story I'd have to write, 3D artwork and animations and scripted content I'd have to create would be a tremendous amount of work for something players may only get a couple of hours of gameplay out of. After hearing Ryan Clark preaching about doing market research prior to starting projects, I've shelfed that idea with plans to come back to it later. I have a new concept for an awesome VR title that will be more easily shippable in a reasonable timeframe, and will provide players with more replayabilty. I'm aiming to complete this project in the next year or two.

On 3D modeling and animation, I realized I was quite in the dark about this necessary component of creating VR games. I had dabbled in Blender and MagicaVoxel in 2016, but went hard on learning those skills earlier this year. I felt compelled to take a really rather gaudy 1970's scene and re-create with a modern realism feel in Blender. Here's the end result:

70’s den scene, modernized. Modeled, rendered & composited in Blender

Around the same time, I felt compelled to learn low poly character creation. I set out to create a fox I could add a skeletal rig to and easily create animations for. This creature has found itself playing an interesting role in a VR music video I am nearing the end of crafting for the HTC Vive (and time permitting, Oculus Rift).

LoFiFox – Glass. Modeled, rigged and rendered in Blender

Complementary stuff

In graphic design, I pushed myself to design multiple logos to better my design skills. However, this project got cut short when I accepted a full-time contract. I realized how beautiful the symbiosis of logo design with 3D rendering is, and am lackadaisically creating some animated 3D logos to level-up and have fun.

A collection of logos I’ve worked on lately

I created identity and a site for our local Vancouver indie game dev scene, Indiepod.

10 of us from IndiePod created Shatter Stomp in 48 hours for the 2017 Global Game Jam. One player straps the HTC Vive VR controllers to their feet while the other player attacks them with a laser-equipped satellite from the comfort of their remote satellite laptop computer.

Also, I wrote and recorded a metal tune for a client in Calgary creating a space-themed real-time strategy game. I'll share that track when it's possible.

Up and coming works

I've started working with Mythical City Games on a new VR title which is coming along superb. It's looking as though it will provide both a unique and relaxing experience to those seeking something in VR other than another zombie shooter. I'll make sure to share details on it when it's further along and we've announced it properly.

My friend Candice shared that she creates some of her own jewelry through a 3D printing SaaS called Shapeways. I'm exploring various options of creating figurines, jewelry and memorabilia using their services.

Lastly, Justin and I recently received our Xbox One dev kits and are starting a new quest of releasing Astervoid 2000 on the Xbox platform. Accompanying that, we aim to release the game in different regions by supporting a few new languages.

A bit more personal

I'm getting married in September to an illustrious woman. On top of that, she landed the placement she was hoping for which means we're not being shipped off to some third world city such as Toronto or Ottawa. (jokes, jokes! I love Toronto) 😉

Blending songs together on an album using Ableton Live’s ‘Resampling’

23 December 2016

Recently, I found myself wanting a simple way to blend 2 tracks in Ableton Live together. There’s tons of different ways to pull this off. I came up with one quick way that had pretty good results.

I opened up the 2nd song, created a new track (naming it “# Resampled”), then armed it for recording:


Find a section in the 2nd song you want to tie into the previous song (I usually took the first 4 bars), press ‘Record’ and blammo! – you have a new audio file (made up of any tracks that were playing) that you can copy from this tune and paste in at the end of the 1st song.

Listen to the last part of the track “Ballast” fade out while the pre-intro and finally intro of “Euphoria” blends in:

Modifying Unity’s Camera ImageEffects values at runtime

5 July 2016

A couple of months ago I was mussing around integrating noise, vigenette, chromatic aberration, and other image effects into Astervoid 2000.

I found it wasn’t enough to just throw the image effects on the camera, I also wanted to change them at runtime depending on various events happening in the game.

Example of chromatic aberration offset & bloom intensity changing over time.

While coming up with a solution, I didn’t find this as straightforward as I had hoped it would be in Unity, and wanted to document and share the technique I devised for fellow game devs to use.

I started with the interface I wanted our team to use. Essentially, it’d be nice to call a method from anywhere in our codebase (an event handler, when a certain GameObject shows up, etc). I came up with a 1-liner solution like so:

// Kick up noise intensity to 1.5 over 0.8 seconds DynamicCameraEffects.BringTheNoise(newIntensity: 1.5f, duration: 0.8f);

`DynamicCameraEffects` is a C# class inheriting from MonoBehaviour that is added to camera. This camera also needs Unity’s ‘Noise And Grain’ ImageEffect from StandardAssets.

Once the noise has hit it’s desired effect, the callback `RemoveNoise()` pulls out the effect after a random amount of time has passed.

One gotcha, I needed to reference the Unity ImageEffects namespace via `using UnityStandardAssets.ImageEffects;`

Also, we rely heavily on DOTween to simplify changing values over time (Similar to MCTween for Flash, ‘member that?). It has a ton of helpers to clean up your code and provides a bunch of easing equations, but you could also re-write this with a typical LERPing implementation.

The whole class for affecting Noise looks something like this:

using DG.Tweening; // remove this if you're not using DOTween using System.Collections; using UnityEngine; using UnityStandardAssets.ImageEffects; ///  /// An extension class for dynamically adding noise to the camera easily at runtime ///  public class DynamicCameraEffects : MonoBehaviour { private static NoiseAndGrain _noiseScript; private void Start() { _noiseScript = GetComponent(); } public static void BringTheNoise(float newIntensity, float duration) { DOTween.To(() => _noiseScript.intensityMultiplier, x => _noiseScript.intensityMultiplier = x, newIntensity, duration) .SetEase(Ease.OutCirc) .SetUpdate(true) .OnComplete(RemoveNoise); } private static void RemoveNoise() { var duration = Random.Range(0.2f, 1f); DOTween.To(() => _noiseScript.intensityMultiplier, x => _noiseScript.intensityMultiplier = x, 0.45f, duration) .SetEase(Ease.InQuad) .SetUpdate(true); } } 

Download/Gist - Raw

You could control the effect manually by deleting the `RemoveNoise()` function, and the `OnComplete(RemoveNoise)`.

This also makes it easier to create effects loops where every X number of seconds effects are added and pulled off the camera, breathing life into your game and making every playthrough unique.

Happy game dev'ing!