Tiny Town

Project Type:  Student

Release Date:  Never

Resources:  None

Role:  Graphics Programmer

Details:

Tiny Town is the (lack of) result of months of bad decisions and an unwillingness to admit defeat.  And it was a huge learning experience, too.

Most people transfer out a semester of senior game class via their summer internship and then really phone in the remaining semester so they can just graduate and move on.  And that’s a smart move that’s working for the majority of people.  I, however, managed to convince a bunch of my friends to go all in, develop a brand new engine from scratch, and then build a ridiculously overambitious game in it.  Don’t ask me how I did that, it still doesn’t make any sense in hindsight.  Hell, Roy wasn’t even in the second semester but he still architected the core engine.

Roy and James built a crazy reflection system, which we used to bind C# as a scripting language.  That gave us a bunch of neat features: we could put breakpoints in scripts, script breakpoints would unwind all the way down into native code, scripts got intellisense support, and it opened up scripting our level editor and using WPF as a GUI solution.  That had even further implications because it meant we could use AvalonDock on WPF, and then our level editor basically looked like Unity.  James and I built a shared surface queue so that my DX11 renderer and WPF’s DX9 renderer could pass targets back and forth.

Xiao put together our build system, and actually physically built a CI “farm” in our teamspace.

I built a launcher that also acted as a watchdog thread.  When the engine crashed, it would detect it, give the user a bug report prompt, and when the user hit send that would generate a ticket in our bug tracker with crash dump attached.

Rendering-wise, I took my base tech from Evac, cleaned it up and refactored it into a standalone library, separated out a render thread, implemented a job system on deferred contexts, transitioned lighting and materials to a more (but not fully!) physically based system, implemented instancing for all drawables.  I was actually generally happy with what I built here senior year, so that’s a bright point in this story!

We had big plans to include networking support, a patching system, and all sorts of things we viewed as real world tech that we didn’t see happening in student games.  However, other systems lagged behind, people couldn’t continue to dedicate their time to a class they didn’t even need to be taking, and designers were overly frustrated that they couldn’t really build the game we were supposed to be making.  Which, right, was an open world survival bumper car racer, called Bump.  Yeah, we’re not even to Tiny Town yet.

At some point in second semester we all decided that things just weren’t coming together and decided to disband the team.  It was heartbreaking, but probably the right call.  Definitely too late, but the right call.  Some of the team stuck together to build a Unity project, but our physics programmer and I weren’t interested because that didn’t further our learning or showcase potential.  So the two of us decided to salvage the work we’d done for Bump and move it into a new, bare-bones engine and just get something out the door.  What we settled on was a game where you toss a ragdoll into a town, trying to hurt the player and/or the town for points.  We then got the great idea that this should be based on Tiny Town from the Mr. F episode of Arrested Development, which is where the game’s name came from.

So, now we’re going to make a game that’s all ragdolls and inside jokes.  Seems great, except our team is just the two of us, we have no assets, and the physics programmer is more concerned with his other classes then finishing out our game.  Which, again, is understandable.  I somehow conned him into this terrible idea.  But he agreed, and I thought we were pushing something out the door.

In the final week, the physics programmer convinces our game teacher to let him just submit a tech demo for his project and take the easy out, which leaves me high and dry.  Because of the situation, I also get to submit my work as a tech demo and call it done.  I pass the class, but it’s still frustrating on multiple levels.  I learn a lot about scoping, realism, and reading the signs when it comes to people that over-promise and under-deliver.  Bump would have been an amazing game.  Tiny Town would have been an amazing game.  I didn’t make either of them senior year.