DESTRUCTION!!!

This is something I've been dying to sit down and play with forever.  Now that things are far enough along on my other two projects, it's time to crack the last piece of the puzzle for this third project.  I've been using Blender for years.  It's an amazingly powerful, versatile tool, which apparently ships with an equally powerful and versatile destruction simulation toolset.  It's hidden away on the plug-ins menu, and not "On" by default, which just feels plain wrong.

After tinkering with sim settings for a bit, I'm getting some really nice results.  More importantly, porting these modified assets straight into Unity is a breeze.

Porting "Car Jumper"

In light of all that's happened in the Unity scene with the release of Unity 5, and the announcement of the Unite 2015 conference in Boston, now was as good a time as any to drop everything and port our OUYA build of "Car Jumper" to the iPhone 6.  My goal, by the end of August, is to have multiple demos running on the device, so that I can spend the bulk of September simply polishing what's already stable.  In an effort to have something running and playable as quickly as possible, I've dragged-and-dropped the assets into a new Unity iPhone project, gutted out all of the OUYA controller wrapper code (well over a thousand lines across 3 scripts), and started rewriting and reintroducing elements one at a time.

This is has been a brutal experience. 

Starting with the basic mechanic of jumping cars for point, I stripped out all of the character control logic and started from scratch to introduce touch input.  I took this time to completely remove the useless ability to "Run", and rebuilt the vehicle rigs to accommodate actual suspensions and wheel physics(the spinning wheels were strictly decorative before).  Seeing as this is a mobile build, I introduced a timer to increase the number of play sessions and tighten the gameplay loop, as it was possible to play a single session for several minutes on-end without a time limit.

Same OUYA exterior (for now), but pretty much everything behind the scenes has been gutted and rewritten/rebuilt from scratch.

Same OUYA exterior (for now), but pretty much everything behind the scenes has been gutted and rewritten/rebuilt from scratch.

Once that was all working, it was time to tackle something I'd been putting off for the entire life of the project: efficiency.  From its inception, "Car Jumper" was always going to employ a randomized element to keep gameplay interesting.  My initial prototype and subsequent OUYA release, however, utilized a brute-force Instantiate/Destroy method of randomly populating the game.  This worked as a proof-of-concept, but consistently caused performance hiccups(Even on my Mac Pro).  I finally sat down and implemented an object pooling system for the iPhone version, in an effort to maintain the element of randomness, without killing gameplay or battery performance.

This proved to be an interesting challenge, because each randomized element required a different implementation.  Background elements were the easiest, because I could just randomly populate a list and the repetition wouldn't matter.  Power ups and vehicles, on the other hand, still required weighted randomization, due to certain power ups and vehicles being more valuable than others.  

After the core pooling was set-up, it was time to start reintroducing powerups.  The "Score" and "Jump" boosts were basically untouched, save for a few changes to accommodate a modified character controller and a completely new API for the GUI.  The formerly useless "Bullet-Time" power up was replaced by a power up that adds time to the clock, which allowed good/lucky players the opportunity to push their scores even higher.

Complicating matters was the fact that I had to figure out how to make the "Berserker" power up work with object pooling.  I wrestled for a while with a convoluted pairing system where a vehicle and its corresponding wreck were instantiated together and a "Berserker" collision would just toggle the active/inactive objects, but finally said, "Screw it", and added a pool of random wrecks.  Now it's possible to run a "Berserker" into a motorcycle and produce the flaming husk of an SUV(and vice-versa).  It's so stupid, it actually works. 

The only thing really lacking from this otherwise very functional OUYA-to-iPhone port is visual feedback on powerups.  Due to the new GUI system introduced in Unity 4.6, all of the powerup-related GUI elements need to be rebuilt and rewritten.  That will have to wait, as it's currently "Good Enough" to leave alone for a while as I start porting my top-down shooter prototype to iPhone next. 


I'm going to UNITE 2015!

Just booked it.  Last years conference in Seattle was beyond anything I could've imagined.  The experience was hugely informative in a number of ways, and provided a huge confidence boost when real-life professional developers all lit-up every time I pitched "Car Jumper" to them.  Unfortunately, George and I really had no clue what we were doing, but because we'd shipped "Car Jumper" to OUYA, we thought we'd give the conference a whirl.  Unfortunately, all we had to show was a grainy Youtube video (that didn't always load, especially when talking to a publisher).

I'm setting a goal right now: 3 prototypes, on my phone, by the end of summer.  Specifically, by my birthday at the end of August.  "Car Jumper" first, followed by that shooter prototype, then, if there's time, a third thing that I've been dying to explore.  Should be an interesting couple of months...

Bathroom WIP

Currently working on a reproduction of a bathroom, and it's far enough along to start showing off.  The goals of this project are: accurate reproduction of the physical space with clean model topologies and UVs, physically-correct materials with (where appropriate) entirely procedurally generated textures, and a final render with accurate reproduction of the lighting conditions in the real bathroom.

BathroomWIP1
Outlet
ToiletWIP1
ToiletWIP2