Headmaster Prototype at The Boston VR Bender

_vr_bender

(Image courtesy of Owlchemy Labs)

This might seem a little odd to be posting so long after this event, but I want to catch you up on what I’ve been doing and this was where Headmaster got its start. Kinda bridge the gap…

So, one of the first things that I did after I quit my studio job was to truck on over to Boston for the Boston VR Bender, a VR game jam put on by Alex Schwartz and Devin Reimer of Owlchemy Labs in June 2014. I was really interested in getting to know indies in my area, as well as dive headfirst into VR. They invited some folks from Unity and Valve to come and the Valve guys brought their prototype desktop VR hardware for folks to try prototyping projects on. Not only was this hardware running at a really high frame rate of 95fps but it was also much higher resolution than the currently (at the time) available Oculus DK1. Most importantly though, it had positional tracking via a camera. It was the closest thing to an Oculus DK2 that existed at the time and so was a great jump start for anyone that wanted to try out that technology. The challenge of the jam was to make a game that took advantage of the positional tracking.

I had an idea immediately. I play soccer. I also like building simple games with easy to learn/hard to master mechanics. Heading soccer balls was a perfect thing to try. I didn’t know if it would be fun but that’s what game jams are for.

So I work for a couple hours and think I have something worth testing. Pop a build out of Unity, put it on the USB key, and bring it to the room where the Valve setup is.

I ran the build and put the headset on. At that point I hadn’t tried their demos, so all I knew was what I saw of my demo on a DK1 and what I was seeing on their hardware and WHHHOOOOA. Even with my fairly ugly two hour prototype of a flat green field and a soccer goal, it was obvious that this hardware was in another league. In hindsight, I’d say it was like a DK2 + 50%. Definitely better than Oculus’s soon to be released devkit.

And you know what? The header prototype, the first time I ran it, was fun. It is not hard to make a ball launch at your head in VR, and just the act of seeing it coming and then moving my head to hit it was really really novel. I think just seeing me flailing my head around got some of the other guys interested in trying it, so Chet Faliszek and Aaron Lieby of Valve, Pete Moss of Unity, and Alex and Devin gave it a shot. I spent the rest of the jam adding a simple scoring system to give us something to compete over and we’d keep trying to beat each other’s score.

I had to cut things a bit short since I was living on borrowed time away from my wife and 5 week old daughter, but I had a mechanic that had a lot of promise. Pete even made mention of it in his blog post about the event for Unity. I went home and put it on the back burner since I didn’t have a DK2 and had no real way of playing it without positional tracking. I figured I’d approach it again once I got my hands on some hardware.

The Story of Independent Ben

Hoooo boy. Here we go. Gotta catch this baby up. This is my first post about what I’m doing in a LONG time. I haven’t blogged since I wrote Detonator in 2009. Let me start from about there.

After writing Detonator and then spending a year or so of game contracting with Infrared 5 and others using Unity, I went back to work for Vicarious Visions (VV) in 2010. This ended up being a fantastic decision. I’ve written about my time at VV in my About page, but the long and short of it is that I worked on some awesome projects in the Skylanders franchise. It was great – great people, challenging work in a big time environment – an awesome experience. After a while though, it became evident that VV wasn’t gonna be my final stop.

I have spent the last 10 years working to learn everything I’d need to make my own games. It’s a lot of stuff! While my work at studios was satisfying in many ways, being behind the safe curtain of a large company insulates you from so much as a gamemaker. I wanted to experience all the fears and freedoms of building my own product. I’ve never organically followed my own prototype to polished experience. I’ve never talked directly to my customers (in games at least) and cultivated a fan base. I’ve rarely been able to talk to other developers about what I’m currently working on. All of these things were growing increasingly important to me as my career went on. Grass is greener maybe? Who knows! But… I wanted to make my own games.

So that’s nice that I want to do that, right? Well sometimes you need a reason to break out of routine and start getting serious about your life goals. For me, this started when I came down with a nasty case of Lyme Disease in 2012. This led to some dark days and a lot of reflection about what is important. Getting better took over a year. I still deal with complications. VV was immensely supportive. I came out of it feeling that life is short and you can’t put off your dreams forever. Get busy livin…

Then my wife Kristin got pregnant in late 2013. (I hate it when people say “we” got pregnant. She got pregnant. Nothing happened to me.) After spending a much of my son’s infant years with my nose down in work at the office, I started thinking about how I didn’t want to repeat that with the new baby. So family was also a major factor in my decision.

We had our baby girl at home in April. It was fantastic and went very smoothly. If you need birth tub tips I’m your guy. Well, except for the time I drained it into the bathroom floor/kitchen ceiling. Learn from my mistakes!

Shortly after the birth, once I came up for air, I put in my notice and started down this new path.

Ironically, I started with a sabbatical that focused on family and warmer weather. I knew that I needed some time to decompress from years of deadlines to figure out what I wanted to make. I stole away a bit of time and did a good 9 hours on Ludum Dare 29 and made a terrible VR game called VR Mowing Hero 2014. I went to half of the Boston VR Bender and started what would become my first project, Headmaster. I helped friends with their projects and worked as much as I could, maybe quarter-time. For the majority of the spring and summer though, I was family Ben. We had a real summer vacation with real relaxation – as much as possible with a baby. I learned to sail my sunfish (poorly). We hadn’t had a real summer… ever. It was awesome.

IMG_0880

Sometimes we even used the sail.

With the family in balance and the brain clear, I got into a project in the fall. Now that I’m getting a bit of traction on that project I’m looking forward to connecting with people by writing on here more often. Follow me on Twitter to get updates of new posts or just drop a comment!

Oculus Rift DK2 OSX + Unity3D Setup

IMG_2130.JPG

(Edited 10/28/14 after Oculus 0.4.3 update)

Here’s my setup that works on OSX in Unity editor. The big caveat is that it will only do 60hz when mirrored, so there will be judder on the Rift. I have only been able to get 75hz in a standalone build on the Mac, and it’s been sporadic at that.

Specifics:

  • DK2 running the 0.4.2 (or 0.4.3) runtime on
  • Macbook Pro 2013 Retina with OSX Mavericks.
  • Unity 4.5.5
  • External Thunderbolt display

Steps:

  1. Make all 3 screens active. Don’t close the lid on the Macbook.
  2. Open the Displays preferences
  3. Go to Arrangement
  4. Set the DK2 to 90deg rotation so that it actually is right side up and in landscape mode 1080p.
  5. OPTION DRAG the Macbook display to the DK2 display. This will selectively mirror those two displays while leaving the other display alone. Set the displays to optimize for Rift DK2. After this the Macbook and DK2 should be rendering at 1080p landscape.
  6. Move the Mirrored DK2/Macbook display stack to the LEFT of the external monitor. It appears that the DK2 only likes to render if it is the left-most display.
  7. Make the DK2/Macbook display stack the primary monitor in the Displays/Arrangement panel by dragging the white bar from the external display to the mirrored ones. This may unmirror the displays. If it does, just remirror them with OPTION DRAG.
  8. Open the Unity editor and place the game window on the mirrored displays. Make it fill the screen.
  9. Set the game window to FREE ASPECT. For some reason 16:9 caused it to go black for me.
  10. Hit play

Now under 0.4.3, the Rift render in the Unity game view always shows up. This makes iterating on my game MUCH more efficient than before, where the view would go completely black at random times. However there are lots of other issues with 0.4.3, so your mileage may vary.

Oculus 0.4.3 Unity Camera Orientation Changes

Well I was brave and figured I’d grab the latest Oculus 0.4.3 runtime + Unity integration and see if it breaks anything too badly. For me, the biggest issue was that they deprecated the OVRCameraController and two methods that it had: OVRCameraController.SetOrientationOffset(Quat q) and OVRCameraController.GetOrientationOffset(Quat q). I used the GetOrientationOffset to interpret user gestures like nods and shakes (more on that later). This one was pretty straightforward to figure out. I started digging around in the new codebase, which now uses a class called OVRCameraRig instead of the old OVRCameraController. Interestingly though, this didn’t have what I was looking for.

Instead, the best replacement I found for getting a single Quaternion of the user’s head orientation was by doing this:

Quaternion quat = Quaternion.identity;
OVRPose ovp = OVRManager.display.GetHeadPose();
quat = ovp.orientation;

OVRManager has some static members, one of them being a handle to OVRDisplay. OVRDisplay has a handy GetHeadPose that returns a wrapper OVRPose. Inside there, you can get position and orientation information.

Ok so that’s how to get the orientation now. But what about setting it? You used to be able to set the offset, which would let you take some control over the camera during gameplay. Obviously you don’t want to go crazy with this and make players sick, but I find that a little bit of camera shake in certain situations can help sell impact.

Well the Unity integration folks at Oculus have made things much simpler. Now you can manipulate the OVRCameraRig gameobject and it just works. Previously I went through some gyrations to set that offset rotation, but now a good camera shake is as easy as

iTween.PunchRotation(_ovrCameraRig.gameObject, headPunchVector, .5f);

And if you want to get fancy you can find a proper vector before doing so.

Do you do camera shake differently? Am I doing stupid stuff? Drop me a comment!

 

Detonator Update for Unity 4.x

Detonator has been dormant for a couple years but I’m starting to resurrect it. First step was to resolve some build and import problems that have cropped up as Unity itself has been updated underneath Detonator’s really old codebase. Version 1.2 is now live in the Asset Store. It unfortunately is set to use minimum version of Unity 4.5.3, which is my bad. I’m resubmitting today but you can just grab the proper version from here: Detonator 1.22 on my Dropbox.

Asset Store Link   |    Unity Forum Link
  • All of the supporting files have been converted to C#.
  • Fixed issue with a few textures getting interpreted incorrectly as normal maps on import.
  • Tuned up prefabs to look better
  • New skybox in test scene
Demo Scene (Unity Web Player) :

Animated Texture Builder

Some engines (Unity, Unreal) support animated textures that are formatted in a grid. However not all engines support converting movies into this format.  After looking around for something that would do this and failing to find anything, I wrote a 3dsmax script to help out with this process. It takes in one or more avi’s and builds a subdivided plane with the corresponding frames mapped to the quads. It then creates a camera. All you need to do at that point is set the render size and render out the camera view.

Download AnimTexBuilder.ms

Animtex_Thumb

Detonator for Unity 3.x and 2.x

(Update 10/26/2010 – A version of Detonator for Unity 3.0 is now available.)

Detonator is an extension for Unity3D that lets you make good looking explosions quickly and easily for your Unity projects. How you use it depends on who you are and what your goals are. Solo coders can quickly get prototype explosions going while artists can stack effects to quickly make complex explosions.

Detonator102shot

Detonator was created originally for the Unity Summer of Code 2009.

Download Detonator 1.3b for Unity 3.0

Download Detonator 1.02 for Unity 2.6

Bug Reports

Sorry, the Unity 3.x and earlier versions of Detonator are no longer supported. Please grab the latest version from here. However feel free to drop notes in the comments as I or other users may be able to help.