A.R.I.


DESCRIPTION:

* A.R.I. is a story-based adventure game of a six-wheel moon rover with a cute girly voice (thanks Esther!!).  It was designed in Unity.  Players use an Xbox 360 controller to drive through the martian landscape collecting CDs of past transmissions detailing the last words of a doomed spaceship crew.  But more importantly, players pick up the tools of the trade like the turbo booster, an air brake that stalls the vehicle in the air, laser guns to blow up shoot rocks, and a flame shield to protect from meteorites.  Fun stuff!!!


DURATION:

* Two weeks.


TEAM SIZE:

* Five people--one artist, three producers/designers, and me the programmer.


PRELUDE:

* This is another one of FIEA's fabled rapid prototype games.  Design a game in two weeks with a team of five randomly selected people.  Even though this was my first time in Unity, I enjoyed working on this game since we all pitched in equally, made something solid, and had a lot of laughs along the way.  Plus I also like car games so that's great too!


PERSONAL GOALS / ACHIEVEMENTS:

* As the "car guy" on my team, it was my job to take the six-wheel A.R.I. vehicle and make it a blast to drive.  Even though Unity has built in vehicle functionality, you can't just throw the car together and call it a day--it needs to be perfect for a moon rover in a rugged, low-gravity excursion.  The original idea pitched by the team was to pilot it like a tank--the left joystick spins the left set of the wheel and the right joystick spins the right side of the wheels.  Programming-wise, this wasn't too hard--apply torque to these wheels (the "wheel colliders") depending on the joystick input.  Problem was it just didn't feel right.  A.R.I. could not turn or brake at regular speeds without flipping sideways under the slightest steering.

We scrapped the tank idea and started tweaking further, overriding Unity's default car code with ours in the process.  I learned late in the project that Unity's wheel colliders have a "brake" variable and that meant more convoluted logic to get the wheels to brake then spin backwards when the joystick is pushed in reverse (brake to a dead stop, then accelerate in reverse).  I also implemented different drivetrains (rear-wheel, all-wheel, front-wheel, middle-wheel), weight and distribution (front/rear/middle engine).  This required plenty of experimentation but we were content with the handling we ended up with--floaty yet stable handling at high speeds.  Lots of fellow students enjoyed taking A.R.I. for a spin!

* I also worked on A.R.I.'s turbo and air brake powerups.  The turbo is interesting since the only way to speed up a car in the code is to apply more torque to the wheels (no kidding, right?).  Problem was the tires weren't always touching the ground so accelerating wasn't always as effective as it should be.  This meant tweaking the wheel colliders' suspension & ride height in such a way that it looks respectable without screwing with the handling.  The air brake gradually stops A.R.I. in mid-air, eliminates roll, and applies downward thrust.  Good for landing on a dime or landing in the right places over hilly terrain (think dirt bike races, how they always land going downhill).  As always, constants allowed all of us to tweak the variables for balance purposes.

* Added a checkpoint system.  Since the game has a linear path the player must follow, if A.R.I. falls or get stuck, simply press the "restart" button to warp to the last checkpoint Star Trek style.  Each checkpoint is an entity that is set to A.R.I.'s current checkpoint as you pick up powerups and proceed through the story.  All the producers need to do is with each item pickup, set a pointer to a checkpoint entity in 3D space with a specific angle (direction A.R.I. faces when respawning) and let them run wild with the level design.

* Also helped out in the sound department.  Found mounds of .wav files of lasers, gizmos, and gadgets, chopped them up with Audacity and GoldWave (my personal preference), and put them in the game and let others know what they thought.

* Later in the semester, me and a few others made a "second pass" on the game.  While these changes were practically scrapped (we didn't like where the game was going and we were busy with other assignments) I was able to add a damage system for A.R.I.  Collision boxes determined where A.R.I. was hit which is useful since landing wheels-down should not cause damage but every other hit should.  A.R.I. starts emitting darker, more dense smoke the more damage is accumulated.  A.R.I. explodes if taking too much damage, lets out a death scream (that was good for a laugh), and respawns.  It was a nice feature but didn't work out as well as it should have.


MEDIA:


Game Trailer.


Gameplay footage, starting from the first "mission."


LINKS: