Monthly Archives: September 2015

Going Down To South Park

Going Down To South Park

Well, this is certainly exciting.

Gonna Have Myself A Time

Somebody found an Xbox dev kit with an old build of a South Park game that we worked on at Buzz Monkey for several months. If I recall correctly, we were told to make “Simpsons Hit & Run + 20%”, whatever that means. In any case, it was a blast to work on. And while it was super ambitious and we only had several months to work on it from scratch, it actually was a lot of fun to play. The design team had to watch every episode and document every character, location, and item in detail. Not bad work, if you can get it. The programmers and artists did an amazing job in a tough situation, and most have gone on to work on some great games and interactive entertainment.

Mission Overview

Here’s a quick synopsis of the sample mission that they show in the video. It was meant to be a vertical slice demo, which means that all playable elements of the game were to be included in the mission. The basic premise for this portion of the game is that there is a city-wide scavenger hunt happening, and one of the items is a straight jacket.

Exploration and adventure

The first part of the mission has Cartman trying to find his Special Olympics costume so that he can get on the short bus and get a ride to the mental hospital to find a straight jacket. This was to demonstrate the interactivity of the environment, the quest system, character costumes, basic controls. The arbitrary timer was not part of the design. We’re gamers, after all, we knew it was stupid. Let’s just say that sometimes the development team doesn’t make all of the decisions when making a game.


After he collects his costume, he then has to make his way through the backyards of his neighborhood to get to the bus stop in time. This had fences, hedges, gates, and other obstacles. This was to demonstrate the platforming elements and destructible objects, while showing how the 2D town was going to represented in 3D.


Once Cartman makes it to the bus stop, the short bus arrives and he gets on board. There was actually a question about why the user would control the bus if the kids weren’t actually driving. We basically responded with, “seriously”? Anyway, the user then races to the hospital while avoiding other cars trying to run them off the road and beat them to the hospital.


When the bus arrives at the mental hospital, Cartman runs to the gate to close and lock it to keep the other players from getting in to the hospital. Here we meet Towelie, who offers to help Cartman figure out the combination. If you’ve seen the show, you can probably imagine how this plays out. I was going to put Towelie in as many places as I could. Since, you know, “Don’t forget to bring a towel.”


Now Cartman has to search the hospital for a straight jacket, while not being noticed by various NPCs. This wasn’t Splinter Cell stealth. It was more like Hotline Miami stealth. After Cartman finds the straight jacket, he is caught by a nurse and tries to fight his way past her. Since he has no special powers yet, she easily overpowers him. This leads to the cut scene where he is strapped down and given electroshock treatment.


If you’ve seen the South Park: Bigger, Longer, & Uncut, you know about the V-chip, and this turns out to be Cartman’s special power. If you haven’t seen the movie, what the hell?!? Go watch it now! The electroshock treatment reactivates the chip in his head and he is able to shoot lightning bolts from his hands by cursing. He uses this power to fight his way past the orderlies and nurses, exit the hospital, catch the bus as it is leaving the parking lot, and the mission is complete.

Quiet Mountain Town

Here’s a little taste of what you would have been exploring, had this been finished.


I have to say, that as difficult as this project was, and how much stress it caused everyone involved, I’d do it again. And it helped me develop a much deeper respect for South Park, which continues to this day.


He Who Talks Loud Saying Nothing

He Who Talks Loud Saying Nothing

I’m not sure I believe this myself, but I’m actually giving a couple of talks in the next couple of weeks. I should probably be figuring out what I’m going to say instead of writing about the fact that I should be figuring out what I’m going to say. Or something.

In any case, I’m done with my contract work tomorrow, and it’s going to be back to full-time Out Of My Mind VR game development. I’ve got so much stuff on my to-do list, I just kind of shake my head and laugh at myself when I read it.

The Big Mix

This week I’m presenting at The Big Mix. It’s a gathering of people from the local business community and each of the presenters is given 3 minutes to introduce their companies, explain their existence, and ask for whatever it is that they want. This is going to be a good test run for whether or not I can articulate what I’m doing.

Indie Game Con

The big talk is coming at Indie Game Con on Oct. 3. I’m giving a talk: VRooom! Getting Up To Speed With Virtual Reality

I’m going to basically regurgitate a bunch of information that I’ve collected regarding various hardware and software for developing VR experiences. Then I’ll pretend to impart wisdom that I’ve attained from developing the various games that I’ve mentioned on this site, which only a handful of people have actually seen. It’ll be a lot of fun.

Game Progress

On the game front, I’ve actually made some progress. I have standalone builds running for Cardboard and Oculus. I’m going to work on WebGL builds to show demos on my web pages. That seems like a no-brainer now that it has occurred to me. I still have to finish various polish tasks and make the games behave correctly, which is why I haven’t released them into the wild yet. I’ve learned quite a bit from showing them to people. The fact that I have to explain so much to them when they play means that I still have work to do.

I tried using stereoscopic support in Unity, but it doesn’t work on my computer. It only supports DirectX 11 3D, which my video card doesn’t handle. I’m an AMD Quad-Buffer guy, apparently. Perhaps when I get my new computer built, I’ll be able to try it again.

With the Indie Game Con coming up and some free time on my hands, I expect to have the first playable versions of my games available to check out by the end of the month. Whee! Your patience is about to be rewarded. Not that you were actually waiting, or that anyone is reading this besides me, but I’m feeling pretty excited about it.


Google Cardboard

Google CardboardGoogle Cardboard Viewer

Well, since there seems to be a major upgrade of the Gear VR around the corner, I’ve decided to hold off on getting the hardware until it is released. Plus, various issues with the 0.7 runtime and lack of laptop support makes Oculus a bit of a pain to deal with at the moment.

In the meantime, I’m working on supporting the Google Cardboard platform. While the general concept and functionality are similar to the Oculus, the experience is a bit less immersive. The field of view is more akin to a View-Master, which coincidentally is releasing a Cardboard viewer this fall. I love my View-Master. I’ll definitely be getting one.

View-Master Cardboard Viewer

Google Cardboard in Unity

Using the Cardboard SDK for Unity makes it very easy. You basically just need to attach the StereoController to your existing camera. Make sure the camera has the MainCamera tag. You’ll also need the Cardboard component somewhere in your scene.

I’ve had some inconsistent results with making Android builds and the rendering not working. I’ve made some builds with just the above two components added to the scene and the stereo cameras get created at runtime and render properly. Other times, I’ve had the rendering be black, and it only appears when I turn off the VR mode. In this case, I’ve had to create the stereo cameras in the scene in the editor, so that they exist before making the build. I haven’t tracked down the exact cause of this issue, but it would make it easier to switch between Cardboard and Oculus builds if I didn’t have to create/delete the stereo cameras before each build.

Cardboard Viewer


Teefan Cardboard Viewer

I’ve ordered a plastic viewer from Amazon that has headstraps. It looks pretty adjustable, and as good as any of the other headsets I’ve seen. Plus, it does have the magnet controller for single event input.

Ouya Controller

Ouya Controller

I also ordered a tiny Bluetooth gamepad from Amazon. It looks like a passable controller, but I mainly ordered it to get the free shipping. As it turns out, my Ouya controller connects to Android and works just fine. I do need to work on detecting the control scheme and map the inputs appropriately. Put that on the list.

At this time, I’m planning on getting the games customized and working for Cardboard so that I can publish them to Google Play and iTunes. I figure that will be good to work on while I wait for Oculus to be more reliable.


Unity And Blender Files

Importing Blender Into Unity

Since I’m using Blender and Unity for my current projects, I’ve had to figure out a common problem with this integration.

Right-handed… left-handed… up is forward… forward is up… dogs and cats living together.

There are a bunch of posts about importing models from Blender into Unity, and how they always come in rotated incorrectly. Blender is right-handed with (right, forward, up) orientation, while Unity is left-handed with the (right, up, forward) orientation. The primary axes seem to be forward and up, since the objects rotate around the axis that bisects those two.

Basically, you want your Blender model to face forward along the z-axis and up along the y-axis. This causes your model to appear to be pointing up in the Blender workspace, which is not really how you want to work on things. Blender has the ability to distinguish between applied rotation and displayed rotation, which I use to fix this apparent problem.

After researching and experimenting, I’ve decided to use the following method. However, I have not attempted to animate any of my objects yet, so that may not work properly. If animations, or any other feature, breaks this method in the future, I will update this post to reflect the fix.

Blender Workflow

  • In Blender, create your model upright using (right, forward, up) orientation.
  • Rotate the model (-90, 180, 0) using XYZ Euler rotation.
  • Apply the rotation.
  • Rotate the model (-90, 180, 0) using XYZ Euler rotation.

This will apply the corrective rotation, which fixes the rotation in Unity. Then it uses the second rotation to make the object appear correctly aligned in Blender. It just so happens that the complementary rotations are equal, since it’s effectively rotating the object 180 degrees around the (0,0.7071,0.7071) axis.

You could also rotate the model using (0, 0, 0.7071, 0.7071) in quaternions, or (0, 0.7071, 0.7071, 180) in axis-angle notation. It’s up to you. Generally these are safer, since they don’t suffer from potential gimble-lock, but this rotation works fine in Euler angles.

I’ve found that as I join objects together, they remain properly rotated. I haven’t tried anything too complicated though, like multiple objects or joining to a non-rotated object. I’ll test those situations out soon and update this post with any findings.


SEO And Analytics

SEO And Analytics

I’ve had a couple meetings with Nick at the SBDC regarding SEO and Analytics for my web site. Here is a brief overview of what I learned.

First Site Guide

Since I’ve written this post, I’ve come across this site that has many tutorial videos and useful information for setting up and running a web site for small businesses. If you have questions or need a quick refresher on web hosting, web design, online marketing, blogging, registrars, service reviews, and more, check them out. If you’re just starting out, it’s also a good place to learn about how to set things up.

Google Analytics

Use this to track your web site traffic. It’s a free tool from Google, and it seems like it is probably about as good as any other solution. There are plenty of other analytical tools, but I’m going to try this out first, since I’m using Google Apps for Work for most of my web services.

Google Tag Manager

This is a new tool from Google that uses a script on your web pages to dynamically generate analytic events, so that you can change tracking info without having to update the actual page source every time. This seems like it could be useful if you had a lot of traffic and wanted to be able to customize your stats on-the-fly to get more specific feedback.

Google Search Console (Webmaster Tools)

This is a tool from Google that connects to your web site and analyzes it for you to recommend improvements and alert you to any issues that Google finds. There are also tools and information about how to optimize Google’s search results and organize the information that is presented to users.

Yoast SEO

This is a WordPress plugin that helps with SEO (Search Engine Optimization). It analyzes your posts and rates them. It gives detailed information about the rating along with suggestions to improve the rating. It also allows you to directly modify the meta data in your posts to customize your search result data. Apparently it ties into WordPress SEO data, so there are probably plenty of alternatives to this as well.

Yoast Analytics

This is another WordPress plugin that connects to your Google Analytics account and allows you to access some of the data from the WordPress dashboard. I haven’t used it much yet, so I don’t know if it offers anything over Google Analytics aside from convenience.

I haven’t really used these tools to their full potential, since I still need to generate some content and post some links to my social pages. I’ll be doing this soon, since I’d like to have some experience with these tools before my next meeting with Nick.