An Experiment in Rapid Game Development

I love game development! I’ve done it as a hobby for years, but I’ve never completed anything I’ve wanted to share with people. I’ve contributed to mods for other games like Civilization 4 and 5. I’ve worked on some open source projects, and I’ve made some pretty simple games for myself that have proven entertaining. A couple of weeks ago I decided it was time to change all that. I challenged myself to spend a long weekend on creating a fully playable game in 4 days. Ridiculous right? Well, not with the proper tools.

The Proper Tools

I decided that to do this I would have to play to my strengths. I know and love and hate C++ with as much passion as the next developer, but I knew that to get a game going I’d have to be quick and use my strongest language: C#. Next I had to choose an engine. As fun as engine development is, when you only have 4 days to make a game, it certainly pays to get all the guts “off the shelf”. Most of the engines I have experience with are C++ engines so my knowledge of C# engines was a little rusty. I knew about Unity3D and had used it to play around with before and they’d released a new version, and they’re also free. I also considered XNA Framework, but since I was looking for rapid development I ended up choosing Unity3D since it has a rich feature set, excellent creation tools, and most of the features I wanted. It would require a lot of learning, but it seemed to me the engine would be relatively easy to pick up. Now all I needed was an idea.

An Idea

Like most aspiring designers/developers I have a design document describing my Magnum Opus. I took this, found the most basic features that would make the game a game, and began plotting. I ended up throwing the idea out because it just wouldn’t do the game justice. And all my art is the epitome of “Developer Art”, so, I came up with a new plot. I decided to design a game based on the old games I used to waste hours and hours on. One that wouldn’t need a slew of graphics, and could have compelling game play in a matter of days. With a humble beginning and proper architecture a small idea like this could easily grow. I based my new game on the old Trade Wars games that populated the BBSes of my youth. Next I needed a design.

A Design

Rather than writing an entire document for a game that would be developed in 4 days (getting closer to 3 by this point) I decided to use Pivotal Tracker to jot down my ideas in the form of stories, and a spiral bound notebook to draw out gameplay screens. I described a target set of features that I would need to have the game be playable (and marginally fun) and worked out the systems that would need to exist to support these gameplay elements. With a set of features, a layout of screens, and a collection of stories on Pivotal Tracker I was now ready to dive into coding.


I expected to spend a lot of time learning how to accomplish tasks in Unity3D so I decided to start with making the behind-the-scenes systems (business logic) first in Visual Studio and creating a dll that I could reference from Unity3D. As a web developer I’m deeply committed to the separation of model from view. ūüėÄ I developed the basic objects that would be needed in the game, modelling them as simply as possible and creating a preliminary set of basic game data in Excel and writing a quick program to export that data into XML and thereby make it easy to load and save objects. I then created the systems to act on those objects and handle simulating the game world. I didn’t go for Test Driven Development in this project but I did create a simple test project that would at least run through the basic features and make sure nothing was glaringly wrong with the game library. By the second day I had most of the systems in place to consider this a game. Now I just needed to tie it all together with user interface and hook Unity3D to my dll. I ran into a few snags integrating the dll to the Unity3D project, but nothing that was strange or badly documented. I got a little giddy when I realized how ridiculously simple Unity3D’s GUI system was and in matter of hours had all of my hand scrawled screens in the spiral bound notebook and a game state manager in Unity3D. It wasn’t pretty, but it was a user interface! I worked my way through the user interface scenes one at a time hooking up the placeholder interface to the code that lived in the dll I created. By the end of day 4 I had a playable game with all the features I originally intended plus a few more with a nasty prototype user interface, random 3D models from TurboSquid, my very own Developer Art 2D icons, and all the tools I needed to expand the game to add features later. Mission accomplished. On to the future!

The Future

So now I’m excited, I’m motivated, and I’m driven. After accomplishing a feat like that, what can’t I do? Since I accomplished this challenge I’ve added more features. I’ve added a modding system, added a bit of polish to the user interface and started work on online play features. I may even add a page to this website to track progress of the game since some folks have expressed interest.

The Tools

So here are the tools I used to rapidly develop a game.


The Benefits of a Zero Based Budget

I’ve been in debt for several years now. ¬†I’ve been paying back not only student loans, but idiotic mistakes I made when I became old enough to abuse a credit card. ¬†A few years ago I decided to get out of debt and found an excellent method of staying motivated and making progress on my debts. ¬†One of the key components to this system was to make a 0 based budget every month. ¬†What is a 0 based budget? ¬†This is a kind of budget that takes all anticipated income for the upcoming month, lays out all anticipated expenses, and assigns a category to every single dollar, resulting in $0.00 remaining at the end of the month. ¬†This does not mean that you never save any money, it just means that you are making your money do what you want it to do. ¬†My wife and I sit down at the end of the month and review the budget. ¬†In our house I’m the budget nerd so I make the budget, we discuss the assumptions and make adjustments and agree on the final budget. Click here to download the Excel spreadsheet I use in this post. The first sheet is a blank template you can use to follow along or create your own budget, and the second is one that has all the assumptions and numbers I use in this post.

Here’s an example of a budget I created to help myself with this process.

0 Based Budget Layout

I’d like to walk through how I use it, since it is a rather confusing and intimidating thing, especially for a non-Excel geek. ¬†We’ll use next month, August 2012 as an example and use numbers based on the average income in Kentwood, MI where I live and the average income for a person at the rank I hold for promoting ViSalus.


The first thing I do when I sit down to fill out our budget worksheet is to work on the fun and hopeful side of things: ¬†I work on the income projections for the next month. ¬†Our fictitious household has 1 adult pulling in an income and 1 adult staying home taking care of 1 kid. ¬†This household gets paid bi-weekly on Friday. ¬†They also pull in weekly and monthly paychecks from their ViSalus business. ¬†So, lets start filling in information. ¬†The average Region Director with ViSalus makes between $1,000 and $3,000 a month so we’ll go with an average of $2,000. ¬†ViSalus sends paychecks¬†out weekly on Monday for some activities and monthly on the 15th for others. ¬†The average income in Kentwood, MI is $48,335. ¬†This amounts to paychecks of ¬†about $1859.04 every two weeks. ¬†We’ll take all of this information and deposit it into lines at the top of the sheet in the order it arrives.

Zero Based Budget Income Header

Laying out each paycheck like this shows a progression of income and lets you plan out how your money comes in and goes out logically. At the top it also displays the total income for the month. Obviously this is a nice month of income. August has 5 Fridays which usually means 3 paychecks if you’re paid bi-weekly. ¬†The column that’s titled Income 9 is a placeholder for more income sources. ¬†Take a look at the bottom of the sheet. ¬†You’ll see that the worksheet copied the numbers entered at the top to¬†¬†the bottom. ¬†This is a running total of the money left to spend for that check. ¬†Since we’re making a Zero Based Budget, we want the number at the bottom of this column to equal $0.00! ¬†As we assign amounts to the columns these numbers at the bottom will decrease.


Next we need to spend all this money. ¬†Take a look at all the categories along the left hand side. ¬†These are a few categories I suggest, but there are spaces for new categories as well. ¬†The very first category on this sheet is Giving. ¬†In my opinion, giving is the highest purpose of wealth with the possible exception of investing in business to create more wealth to give away. ¬†It’s at the top for a reason, so lets take out some of each paycheck to give away. ¬†As a Christian, I firmly believe in the principal of tithing, or taking the first 10% of income and giving it to others. ¬†Lets assume our fictional family believes the same way. ¬†We’ll deduct 10% from their gross check. ¬†We’re assuming a 25% payroll¬†withholding¬†so the gross check is $2478.72. ¬†10% to the nearest dollar is $248. ¬†The ViSalus checks have no withholding so they are just straight 10%. ¬†The next category that is important right now is Housing. ¬†This is where all the costs for housing goes. ¬†This could be¬†mortgages, rent, association dues, car port rental, or whatever. ¬†Fill in the amount you have to pay that month in the Needed column. ¬†The needed column lets you know how much you need that month. ¬†Each category has a sub-total and the bottom of the budget has an overall total. ¬†Lets assume these folks have a $800 a month rental fee. ¬†Now we fill out all of the expected expenses for the month. ¬†Base these¬†on realistic values and expectations! ¬†An unattainable ideal is just as useless as no budget at all.One more specific thing to this budget that I should note. Since ViSalus does not take any withholding, we need to plan for taxes. Set aside at least 25% of the business income for paying taxes in a separate bank account. Add dates for when items in a category are due to the comments column.


The last category in the budget is debt. ¬†In this section we lay out all the debts owed by the family in order from smallest to largest. ¬†Some people like to pay off their debt from highest interest to lowest, but I feel that getting out of debt is very psychological, much like losing weight. ¬†If you don’t see progress, you’ll give up. ¬†If your highest interest debt is also your highest amount owed, you’ll spend the first few years paying on that one debt and see no changes. ¬†If you roll up your debt from smallest to largest you can also take the minimum payments you’re paying on the smaller debts and roll those into the next debt as you pay off the smaller one. ¬†That adds momentum and traction and motivation. ¬† For this section half of the Notes columns has become a Remaining column where we enter the amount still owed on the debt. ¬†In the notes I enter the due date. ¬†In the Needed column I add the minimum payment due.

Spend It!

Now that we know how much we’re planning on spending, lets actually assign money from each paycheck. ¬†You can do this however you want, but I assign all the monthly costs to the first check and all the recurring costs (from each paycheck) to each check. ¬†See the example below to make this clearer.

Notice that the total at the bottom of the first paycheck is now a negative number as indicated by the “()” around the amount. That means we need to spread out $558.96 from the first check to other checks. Next I hunt down either the biggest cost that can be moved to a different check, or the cost that is just big enough to make the number at the bottom a positive number. The only thing larger is Rent. Since rent is due on the first, and was¬†considered in the last month’s budget, we can move it to a later check. I like to find the next earliest paycheck this expense can fit into and place it there. The next one is the paycheck coming on the 17th so we place it there. Now all the numbers along the bottom are above Zero, so we’re ready to start saving money and paying off debt. The very first thing to do is make sure we have enough money saved up that if some emergency happens, we’ll be okay. A little cushion of $1,000 can keep most terrible things that happen from becoming a food-or-lights-crisis, like needing to fix the car, or take a kid to the doctor. Notice that there is a budget item for car repairs, but the emergency fund is for things above and beyond the planned for. So, the first thing to do is to get the emergency fund to $1,000. Back near the top in the Savings category there’s an item called emergency. Add the remaining cash from each paycheck to emergency fund until there’s $1,000 in there. In this example that runs us up to the ViSalus check on the 15th. Now we’ve zeroed out 3 checks! Only a few more to go.

What do we do with the rest of the money? ¬†Attack debt! ¬†Start with the smallest (or the highest interest rate, if I wasn’t able to convince you otherwise) and throw all the remaining money at it until it’s paid off! ¬†In exactly the same way we assigned all the money to the emergency fund category, we’ll assign it to the debts. ¬†At the end we have this:


We’ve zeroed all the columns. We’ve spent all of the money for the month of August and it isn’t even August yet. We’ve intentionally told the money where to go, and what to do and at the end of the month we have $1,000 in the bank, 2 debts paid off, and are making great headway against a 3rd. According to the bottom of the budget we have about 5 months left until we’re debt free and we can live on $3,614 a month while maintaining a great lifestyle!