This week we started working full time, in an office, on Closure. It's been an interesting experience.
My entire life I've been making games as a hobby. My hours have always been "when I feel like it", which work well in some situations (when I'm motivated) and don't in others (when I have tedious menial tasks to do). Some times I could work unhealthily long days (14 hours of solid work or more), other times I could go months without working more than an hour a week.
With no schedule it was often difficult to work without distraction. I'd set myself down to work for the day, but then decide I deserve a break, so I'd take a break after 15 minutes of work that involved playing games, eating,browsing the web, watching tv, snacking, then realizing that it's 2AM and I didn't actually get any work done that day. It never really felt that way though, since I could always still end up finishing games flash games in relatively short periods of time.
Then came Closure. We began working on a "Full" version over a year ago. I managed to get the game from a blank c++ file to a playable state in a nearly inhuman amount of time. It took pretty much 2 weeks to get the engine working, and another 2 weeks to get the editor working.
Then it took another month to add a bunch of content to it, and a few more to make levels. I managed to get it to hit 30 levels in about 3 months. A year later, the game is still at 30 levels, and not TOO much has changed. What happened? Where did all the momentum we had at the start go? Well, school probably played a part in that, as well as getting wiped out from the early crunch, but that's a story for another time.
We basically decided that we had to work full time, in an office together to get the game done. Well, I finished setting up the office and we started working this week. Our day starts at 10:30 am, we get an hours worth of lunch break to take when we feel like it, and we end at 7:30.
That works out to a standard 8 hour work day. No games during work hours, though we can use our lunch breaks for that if we feel like. A few other self imposed rules like that transformed our work drive from "meh I'll do it when I feel like" to "this is a real job". If someone contacted me while I was working, I'd let them know I was "at work" rather than cutting time out of my day to play a round of starcraft or tf2 or whatever. It worked.
Our office setup is 2 desks, 1 server (my old laptop running svnserve) + networked printer, some whiteboards, chairs and some computers to work on. Our desks face away from each other, and we usually both wear headphones and listen to music while we work. I bought myself a sweet pair of noise cancelers.
I never really listened to music while I worked before, but I never realized how much it helps to tone out the rest of the world and also get rid of the many distractions that usually surround me when I'm hooked up to a computer. I'm a mac person by nature, so on my work PC I didn't bother to set up any of the things that I prefer to do on a mac. This includes: AIM, email and web bookmarks (without them there i'm not tempted to visit most of the timesinks I have bookmarked, and typing in a website's URL manually is just enough of a barrier to prevent me from doing it unless I need to).
one of the whiteboards in our office has the level editor documentation written on it
Oh ya the other rule I have is that we aren't allowed to work outside of work hours. We could stay in the office a little later if we wanted too, but the idea is that we aren't allowed to kill ourselves working overtime since it doesn't really help out in the long run and can result in decreased motivation. A forced break lets us recuperate our creative inspiration.
Anyway the biggest thing I learned so far, is that 8 hours is a really long time to actually work for. If I have a goal that takes that long it goes by quickly, but I don't have that type of task (as a programmer) that often anymore. I finished the "from scratch" part of coding months ago, so most of my coding is now bugfixing, content, refactoring, and small tweaks.
These are all huge things overall, but none of them ever contain single tasks that take more than a couple hours at most to complete. As a result, I found myself really having to dig to fill that 8 hours with work. You know what? There is a lot of work to get done when I force myself to find tasks to do.
All the boring tedious stuff I kept putting off finally has a dedicated time to get done, since if I don't code that UI item now, then I'm gonna have to work harder to find other things to do. Granted I still have to make 100 or so levels and make a lot more mechanics and fix 34 billion bugs and get the game running on other systems and recode the audio and about 400 other things, but all of that stuff has always been "something I don't need to do right now". Well, when I need to fill 8 hours of the day with solid work, I'm pretty much forced to pull from all that stuff that I've been procrastinating for so long.
Here's a time lapse video of me designing a level today.
And you know what? I got a LOT of work done this week. And there's still a day to go. It's just not the stuff that has an obvious visible effect on the final project. Perhaps that's why I wasn't able to continue the huge amount of momentum I had early on in the project. There was a feedback loop then, visible progress is self motivating.
When I reached the point where a lot of work gives minimal results, it's much harder to motivate myself. The environment we've created seems to help get over that hurdle so much, it looks like we could even get the game done way before we estimated [reality says: fat chance!].