Edited: November 20, 2011
There are many things that you have to get right in order to successfully make a game. One of them is having a good schedule. In this post, I’ll use my experience from making “Girl with a Heart of” (GWH) to talk about how to create a good schedule for your indie game. Furthermore, I’ll outline three types of schedules that you should have: overall schedule, monthly schedule, and day-to-day schedule.
Game development process can be roughly broken down into the several stages: planning, prototype, development, alpha, beta, and release. In planning stage, you sit down and write out what exactly you game your are going to make. This shouldn’t more than a couple of days. At this time you should also come up with a very basic schedule. This early in the process you don’t have a good understanding of everything that you’ll need to get done, but that’s okay. The point of the schedule is to give you a guideline, so you can notice when the reality doesn’t align with your estimates. This schedule should include your rough (with granularity of a month) estimates for the length of each stage. The exact break down should depend on the game you are making, but certainly leave plenty of time at the end to polish up your game.
In prototype stage you experiment with your game design. You don’t know what will be fun, so you are just trying things out until you find the nugget of gold. You use minimal art assets and throw-away code. Once you have a good idea of what kind of game you are trying to make, you can start development. At this point, you should have a better understanding of what you are trying to accomplish. Revise your schedule estimate. You should know roughly how many assets you’ll require, and you should know roughly how long it will take to make each asset, so do the multiplication (and make sure to add some additional time to account for overhead and unexpected events).
Development stage is pretty straight forward if you have your design figured out, but very likely you’ll have some adjustments to make here. Once the assets start coming in, see if the rate matches your estimates. If it doesn’t, you’ll have to adjust your schedule. If you are good at planning, and you have a good understanding of what you’ll be making, at the beginning of this stage you can create a good schedule that you might actually stick to.
Edit: It’s actually important to split the development stage as well, since, by itself, it’s too large to work with effectively. Some start with a minimal viable product (MVP). Once that’s done, they iterate on it. Some do a vertical slice, which features a short, but complete part of the game. Others do a feature complete game, where all features you want are done, but the content is lacking. The approach depends on the game you are making.
Once you are done with development, you go through alpha stage (where you polish everything and try to have zero bugs by the end), beta stage (more polish and definitely zero bugs), and finally release stage, where you submit your game, do promotions, marketing, and wrap things up. Unless something really unexpected happens, you shouldn’t have to drastically adjust your schedule here.
The important thing to keep in mind is to always check your current predictions against the schedule that you have written down. If you see that the two differ significantly, you should adjust. You can either adjust the existing schedule (usually by extending it), or you can adjust what you are trying to do (usually by cutting features). Do not erase your old schedules. Keep them as a reminder. This way you can see that you’ve lengthened your schedule three times in a row, which means your current estimate is probably still too optimistic.
Aside from estimating how long it will take you to finish the game, the overall schedule should also provide timings. When will you hire/start working with your artists, musicians, play testers? When will you have someone play your game? When will you have first mission/day/level completely finished? In GWH it took me a longer than I expected to find a background artist. The lesson here is to start looking earlier. If you find someone who is interested, they can probably wait a bit while you get to a point where you can start giving them work. More generally, start everything as soon as you can. If you can start making a website for your game during development phase, there is no reason not to do so.
Each month (though you can think of this as a Sprint, where the length should be adjusted based on your game) you should create a list of what needs to be done. You should determine the order (most difficult tasks upfront) and estimate how long each task will take. There are some tasks that you might not be able to do the entire day, so it’s okay to schedule some tasks in parallel. For example, writing the dialog for GWH was really difficult because I couldn’t do it for eight hours a day. I could only do it for a couple of hours, and only when I felt in the mood to do so. This meant I had to seize every opportunity to do so. If I ever felt like I could write some dialog right now, I would drop everything else and do it, because everything else I could do another time.
I mentioned Scrum, and I would actually recommend adopting it, especially if you have a team. In it’s default state it’s probably a little kludgey, so you should adjust it based on your needs.
One of the most beneficial setups I did to stay productive was to develop a daily to do list. Ideally you do this with a friend who can hold you accountable, but you can also do this by yourself. Every evening your send your friend a list of things you are planning to do tomorrow. (Pick the most difficult tasks.) And every evening you also account for everything you’ve done. If you haven’t done something on your list, you should have a good excuse, and more importantly, you should learn a lesson from it. Perhaps you are trying to do too much daily, perhaps you get sidetracked easily, or perhaps you didn’t realize you had to fulfill certain requirements before you could do the task you listed. In your email, list the reasons you failed, and what you’ll do in the future to prevent similar mistakes from happening. Learn every day!
The primary point of this list is to cull unnecessary tasks. Anytime you want to do something, check with your daily to-do list. Is that task on there? If it’s not, you probably shouldn’t be doing it. If it’s important, put it on the next to-do list. This prevents you from working on fun easy things or going off on a tangent, and instead makes your focus on working on the tasks you know you should be doing.
When you don’t have anyone to be accountable to, one of your greatest enemy is procrastination. If you don’t do any work today, nothing is going to happen, and your schedule will probably be fine as well. The problem with procrastinating today is that tomorrow will soon become today, and the reasons you used to procrastinate today will probably apply tomorrow. Find a way to keep yourself accountable: use a blog, email a friend, post your goals on your Facebook/G+ wall.
I think crunch periods happen because in the last few months it’s very easy to see exactly how much work is left to be done and exactly how much time you have left. This is when everyone suddenly realizes the mismatch between the two, and the crunching starts. Don’t let it get to that stage. Always check your current estimates against the schedule you have written down.