Battle Fortress Tortoise

DESCRIPTION:

Battle Fortress Tortoise (or BFT for short) is a third-person shooter created for the UDK engine. Players assume the role of the "Gnomeander" who rides on the back of a giant moving tortoise while trying to defend against hordes of villainous hyenas.  This is a capstone game--the closest thing to developing a marketable game that FIEA students get.


DURATION:

About eight months from January to August, taking short breaks between semesters and to finish homework in other classes.


TEAM SIZE:

Twenty one students, a few of those who were actually part of other capstone games for a few months before they were assimilated into our group.


PRELUDE:

Being a capstone game, members of the team presided over the game's development--from the initial pitch to the gold release.  Included in the mix was a vertical slice three months into development (five capstone games became three, with the members of the two cut games joining the other three teams) and plenty of criticism from the faculty at weekly status updates.

Presenting the game had its own set of challenges as did actually making the game.  Since most of the team had never used UDK beforehand (myself included), there were a lot of hurdles for everyone in the first half of the project.  Most of them had to do with locking a bunch of objects onto another  moving object (the deck, cannons, and triggers on back of the tortoise) but that wasn't my particular job.  I had a role in plenty of gameplay related things though the immense amount of homework in other FIEA classes during the first 4 months of development didn't help much!  But nevertheless, we trudged on and it turned out great.


PERSONAL GOALS / ACHIEVEMENTS:

* Learned plenty about using scrums, sprints, and Perforce.  Me and four other programmers had to work together and meet with Lead Producers on a near daily basis.

* Learned a lot about Unreal Script code.  Little syntax things like putting "(Pawn)" next to a variable / struct can mean the difference between everything working perfectly or nothing at all so it was frustrating at first.  Made great use of UDK's Scaleform features and that meant being able to implement Flash Movieclips into the HUD.

* Created the hyena radar that you see in the game footage.  Lots of fancy math, including the distances that each hyena is from you as well as their (and the tortoise's) relative facing direction from the Gnomeander.

* Researched keyboard configuration.  Was able to implement both keyboard and Xbox 360 joystick inputs so the player could use either while playing on PC.

* Added camera states.  Normal behind-the-shoulder view, toggle zoom-in views (like a sniper rifle), periscope AKA "crows nest" view, cinematic camera views during gameplay (ex. viewing the tortoise from the ground below), etc.  Camera was programmed to seamlessly move and fade between switching views.  Config values were provided so producers could tweak the camera speed & distance for each view if they so felt like it.

* Added weapon states.  In the game, there are only two "weapons"--a regular rifle shot and a shotgun.  The HUD crosshair changes depending on the weapon and fades in and out when firing and moving.  Also made config values for ammo clip size, damage, weapon spread, fire rate, location damage multiplier (head, body, leg/arm shot), and camera shake amount for each weapon so producers could modify that too.

* Added pause functionality.  Pause the game and toggle controller sensitivity and joystick inversion.

* Added checkpoint system.  If a player dies or simply selects "Go back to checkpoint" in the pause menu, he goes back to one of 8 checkpoints in the level.  This was done without reloading the map.  All items in the environment were reset.  This meant making the story triggers able to be fired more than once and that meant testing out stuff in the Unreal Editor with the team.

* Implemented a C# database tool to save game metrics to a MySQL server.  Metrics include number of shots fired, accuracy, damage taken, time played, location of death, etc.  I worked on this with two other programmers.  My job was to create a little C# window that ran alongside Battle Fortress Tortoise on the same computer.  That C# window logs into a MySQL database on another computer.  When the player finishes his BFT session, the UDK engine sends a local message to the C# tool.  Then the C# tool creates a series of MySQL statements for things like Player ID, Session ID, Date, Age, and other metrics.  Once the SQL statements hit the database, it's up to another programmer to display those metrics on a easy-to-read webpage for producers to make appropriate tweaks to the game if necessary.

* Cleaned up code and provided advice to make other producers' and programmers' lives slightly easier.


MEDIA:


Final Trailer.



Behind the Scenes Look.


Preview of the Crow's Nest Feature.

An illustration of the C# Playtest Tool.


LINKS: