My Year in the Rift

My year in the Rift

Exactly one year ago, I was on vacation with the wife and kids when I got a text from our wonderful neighbor who keeps an eye on our cat and waters the garden while we are gone – I just got a large box delivered on our porch, perhaps a certain package I’ve been waiting for?

As an avid long term gamer (you should have seen my anticipation downloading the Quake 2 demo on dial-up!) and have always been drawn in by the interactivity. I’ve never been a fan of passive tv watching, and, after our family got an Atari 2600 one Christmas, its been a steady evolution of interactive adventures. Beating “Adventure.” The thrill of solving Infocom’s “Wishbringer,” on our family’s first computer. Being blown away by the graphics of “Another World” on the Amiga. Further blown away when I purchased my first PC, a AT&T Globalyst desktop with a CPU clock in megahertz, no math co-processor and playing Quake 1 running on a 15 inch monitor at the smallest possible resolution and still loving every second of it (I still often play the Quake 1 soundtrack as background noise when I’m working), playing the Half Life series, Thief series and many more hours than I care to claim.

And yet, I still craved more interactivity. I downloaded mods to make games anaglyph 3D. Adding surround sound systems to my gamning rigs. I wanted to mod Wii controllers to implement Johnny Chung-Lee’s head tracking. Still nothing grabbed my attention like the whispers I saw on Reddit about a VR headset that worked. I was instantly hooked and spent a lot of time learning everything about it that I could. When the DK2 was announced, I sold a couple of paintings to purchase it. I think the wife is still a little off put over that decision. And I waited for the day that my shipping notice would arrive.

Of COURSE it had to be while we were on vacation. I gave my neighbor dire warnings on how important this package was. Offers of booze, money, my firstborn child to ensure my delivery was safely in my house, under lock and key until I returned. I’m a safe and careful driver, but the return drive home I fought the urge to floor it all the way home. I found my new toy on the kitchen table and resisted the urge to skip sleeping to play with my new toy, as I had to be up in 6 hours to attend to the kids.

I managed to get a small chunk of free time the next day and hastily set up my Rift and installed the drivers and runtimes and dove right into the desk demo. And gasped. And laughed. And sat there in bewildered amazement, looking all around me – standing up, kneeling under the desk (and losing tracking in the process) and reluctantly tore myself away to attend to the real world. I was ecstatic when the wife offered to give me a night off from the kids and I eagerly dove into every demo I could download. I rode rollercoasters, visited haunted dungeons, went flying. Nothing grabbed my attention like a small demo by Brendan Coyle, he did a simple studio apartment and the moment I stepped into it –

I felt real presence. I was there. This was the small studio I wanted in NYC. I was there and it was sunny and warm out. I explored the kitchenette, the bathroom, tried to read the titles of the books on the shelf. I wanted to open the door, go down the stairs and to the nearest bodega for a bagel and cream cheese. It was that real.

It didn’t take long for me to delve into gaming on the Rift – I was surprised when Quake 2 made everyone else queasy within seconds, yet I could take hour long doses of it, even with a tendency to have vertigo, maybe years of twitch gaming had dulled my nausea reflex. I dove into Half Life 2 with a zeal – stopping to look at the decades old game and the mastery of level design: http://steamcommunity.com/sharedfiles/filedetails/?id=184922180

little details jumped out at me and again, that sense of immersion gripped me tight and I was willing held captive as long as I could afford.

Eventually, I wanted to create my own worlds – to take the ideas bubbling in the aether of my imagination and make them whole and walk through them. I picked up Blender (having a little experience in 3D work, I knew the concepts, just needed to learn a new interface) and picked up Unity – both free options to express myself; with little time and less money, FOSS options were my only choice and I try to support these and other endeavors as much as I can. I dove into making my worlds and the day came when I could cram on my Rift and hit Enter and after that all too familiar Health Safety Warning…

Ye Gods… it was a basic polygon world and primitive texture mapped, no fancy normal maps or SSAO shading – but it was mine. And I could walk through it. All the paintings I’ve done that I wished I could walk through – worlds in my head I wish I could visit, all of these were in my grasp, just yearning for my feeble skills to flesh them out and make them tangible, more cogent…

As I played – as I built, as I worked my way through trial and fumble – other things tickled the back of my head. I’ve always been a political animal and very socially aware of the world around me. Being a creature of New York City, I’ve met many souls from various pockets around the planet, lived with more subsections of race, creed and faith than most meet in a lifetime and have heard their tales – when you hear a taxi driver spill out more truth about the universe than a dozen philosophy professors, it changes you. I’ve always felt that if you could just step into another persons shoes, see what they see – it would do a great deal to improve how our species relates to others of its kind. If a person could see what its like to be told you have cancer, or you just sold a patent worth millions, or have to make a choice that benefits your family but wrecks someone else’s family; to see an opposite political point of view, a different faith, how the world looks if you have autism. I want people to see other points of view, or use this tool to help those with a phobia get over their fears or help people to revisit places lost (can you imagine the joy of being able to walk around your childhood home that had burnt down to the ground?)

This new medium might just be the culmination of a lifetime of my interests; art and computers – 3D animation and Photoshop – video games and experiencing adventures previously unimagined. And I’m so thrilled its happening now and I can be a part of it.

Where have all the good times gone?

Some days, I’m fortunate to have a babysitter come and watch the kids for a couple of hours, keep them distracted, amused and on nice days, out of the house while I get a little dev work done. I plan out my agenda, get my assets in order so I can be efficient and get as much work done in my little allotted time.

This was not one of those days.

I woke up shortly after 5 AM, sounds of my youngest fussing and my wife tending to him. We have a deal, she gets the kids in the middle of the night, and I let her sleep in on the weekends. After 15 minutes or so of non-stop meltdown, I got up to see if I could help. The missus informs me that our lil’ guy stripped off his diaper, peed all over his crib, blankets and stuffed animals – and is now throwing a fit because he can’t go back to sleep with his soiled bedstuff.

Since she leaves early for work, I had to take junior and calm him and coax him back to sleep, which sorta worked, until his big brother decides to wake up at 6:30. Oh well – at least the babysitter will be here today.

Except, when she gets here, I can’t focus. I’m dragging. Creative impulses are as useless as logical focused thinking when I’m tired. The best I can do is play around with a bunch of mocap files I got off the asset store, to see if I can incorporate them onto MakeHuman .fbx files and if they’ll play nicely with Mechanim & PlayMaker.  Sadly, I just can’t get it in gear and instead fiddle around in Photoshop, putting together a graphic design idea I’ve had kicking around in my head for a while:

diaperdown copy

Oh well, there is always next week…

 

New look – new VR logo

So, I decided the old layout was too difficult to read and found something that showed off my work in a better light. I’ve also been trying to migrate to Windows 10, having problems with my laptop freezing. Joy.

The editing rig seems to suffer no ill effects (so far!) but it is used less, so when the next birthday video needs editing, we’ll be putting it through its paces. On a brighter note, it does seem quicker and more responsive.

 

lastly – I finally got a decent tutorial on how to make a splash / logo screen in Unity and threw together a sample scene based on an old Truespace project. I like the idea of something I worked on almost 20 years ago can have new life breathed into it and be useful.

Cop Out

Been trying to work out Playmaker schemes in my head, how to make things interact. My big crowning achievement last week was adding a sound effect to the player shaking his cup. My thanks goes out to the kids babysitter, who happened to walk in with a paper coffee cup, that I promptly commandeered to get that ‘authentic’ panhandler sound effect. Since most of my dev time is in the wee hours of the morning, I needed to hide in the basement bathroom to record my sound effect, lest I woke up anyone…

At some point, I’m going to upload a very pre-alpha to /r/oculus, just to get some preliminary feedback, and perhaps a few pointers on Playmaker and optimization. In the meantime, I’ve been working on another idea, working in a police officer who interacts with the player – perhaps using the players gaze as a variable. Stare at the cop too long and he wanders over to tell you to scram. Flip him the bird and *BAM!* You get beat up and arrested – game over.

So, its baby steps – I got this model from Yobi3D, rigged it and animated a walk cycle using this tutorial – I think it needs a little tweaking, but am generally pleased with the results:

Kids-n-Play(Maker)

I realized that the tagline of this blog is ‘Game Dev AND Stay at Home Parenting’ and I’ve done little to document the latter part of that clever little phrase…

Just about every day, I try to get up an hour or more to get some work done, some days, like today, I can plug away at my secondary characters animation. Its nice and quiet, I sip my coffee and try to imagine a well-to-do Upper East Side wench telling off some panhandler on her morning commute, what her posture is like, how she’d thrust an accusatory finger while saying something derogatory.

Other mornings, one or both of my progeny will throw a wrench into the works and wake abysmally early and wreck what I had planned on working on. Just last week I heard footsteps on the floor upstairs. I sighed, made a few quick notes on what I was planning on working on, hoping that after I got the elder child off to summer camp,  I’d catch up later son #2 took a nap. It happens. And if those footsteps are indicative of who they are, its my older kid and we’d get to snuggle on the couch for a bit, watch some PBS kids and have a quiet moment together before the other one woke up. So I wend my way upstairs and gingerly open the creaky door to the kids room…

My son is busy barfing on the floor.

He’s upset, he doesn’t get sick very often and is scared by what is happening. I’m trying to calm him so he doesn’t choke, trying to hold him in a position where anything else that might come out will land on the hardwood floor instead of his playmat, keeping him at a bit of a distance so I don’t get barfed on.

And now the other kid is awake – and screaming because he doesn’t know what is going on.

Yeesh – I just wanted to work on a walk cycle.

Offer calming noises to the youngest, strip the older one, grab a handful of paper towels to clean the floor, grab both kids to hold them, sit down on the bed and calm them and try to remember if I’ve got the summer camp number saved on my phone and if I don’t, where might it be – because I’ve gotta call and lat them know my kid ain’t coming today.

Some days are like that. Other days its full on Thunder Dome where I’m trying to send a simple message on Reddit asking where is a good place to get feedback on my pre-alpha build and the two of them are leaping off the furniture Crouching Tiger style with chainsaws, locked in gladatorial combat…

kids-memes-16

Anyway – I’ve just recently added PlayMaker to my arsenal, and while it took me a bit to get, it looks like it could radically change my game for the better. Now excuse me, my youngest is kicking the side of his cage, I mean crib, demanding release…

 

Rigging the game

As I wend my way further into this VR experience, the more complicated things become. I was lucky enough that a talented voice actress recorded a few lines of dialogue for me – I’ve been trying different methods of getting more advanced animation, especially facial expressions, into Unity. I tinkered around a bit with the .MHX2 file format – but it seems getting it to work with Blendshapes in Unity is a real Gordian Knot to untie.

But – even as one problem gets stickier – another is getting easier. I’ve decided to add a police officer as an antagonist. Possibly trying to set up a mechanic where if the user looks directly at him, he’ll get aggravated and harass the user. But that is down the road – I’ve been busy working on one of my favorite parts of 3D – Rigging!

Thanks to Yobi3D for the model!

cop model
cop model

 

Push Forwards

I’ve been encountering difficulties with the Rift SDK – my project wouldn’t play in the editor and my builds would crash. Since its new tech, getting help is a bit of an uphill battle since everyone is still figuring it out.

Out of the blue, Valve announces their own SDK plugin for Unity (with UE4 support next week) and I thought I’d give it a shot. Well, its a win / lose – I can play in editor (and in VR!) but my builds only play a black screen (but it plays without crashing!)

Also – I saw on reddit a generous VO actor offering to record some dialog for free, and I pitched my idea and she accepted it! So I’ll have a few disparaging lines from a snooty secretary type to mess around with. Which means I’ll have to explore the .MHX2 option for Makehuman export, as the regular .MHX gives me a single jawbone to try and lip sync with…

Success! and a setback

I finally overcame the problem of animating Makehuman characters and getting them into Unity. More or less the problem seemed to resolve itself when I upgraded to Unity 5. And now my token booth clerk walks, talks and cusses – thanks to dialogue I recorded at 6 AM when my voice isn’t exactly spry.

Only now, I can’t quite get the Rift integration to work – there are a bunch of coding references I don’t get – and one unhelpful person over at /r/oculusdev suggested I ‘learn to code’ to fix my problem. Yeah pal, as soon as I see a programmer start drawing proportioned, balanced and properly shaded figures or demonstrate how they can make texture maps with alpha masks…

Anyway – neat side note: The texture glitched on my guy, and he has a neat cyberpunk-ish feel about him, if I ever do something in a sci-fi setting, I will definitely re-use him.

boothdude

Model + Paint

Modelling out the token booth for my VR experience “BUM.”

While, I don’t consider myself that great at modelling, I feel I get the idea across and am learning every time I make something new. Blender has proven to be a bit challenging, since I’m used to modelling with polys, and it constantly wants to convert things to n-gons. Still, I can see the merit in loop cuts and the knife tool – it’ll just take a bit to learn and implement effectively. It’s also helpful to be converting my old Truespace models over to Blender, and how my skills have improved.

What I do truly enjoy is the texture painting – a long time ago I got a copy of 3D Paint, and while it was very basic in its toolset, it did open my eyes to a new way of textureing 3D objects. I like to get my basic UV layout and color areas established in Blender, then pull my texture maps into Photoshop to work out details, then back into Blender for shadows, dirt and other bits of wear.

The UV maps, plus live preview of the texture in progress.
The UV maps, plus live preview of the texture in progress.

While my overall look is to emulate the classic NYC booth, I did need to make adjustments, since a seated character wouldn’t be visible to the player (since the player is sitting on the floor of the subway station) and eliminated some extra details such as a card swiper, as to avoid ‘dating’ my booth.

More WIP shots and in-engine pics to come.

Attack of the Cousins: Special Edition

I was originally inspired to do this by the dad who did VFX shots of his kids – the original was simply comping lightsabers on the kids and a photo of the remote from Ep. 4. moved in Premiere.

Then I discovered camera motion tracking in Blender.

It was rough, as this shot was very shaky, jerked around a lot and had no similar markers from the beginning to the end. I managed to bust it up into smaller clips and track those – but even then, they were atrocious to work with. I’m particularly happy with the pit and vaporators at the beginning of the 2nd clip, I like that Blender added in motion blur to match the shot – now if I could figure out how to make the shadows more intense…