8:45 AM I arrive at work and head to my office. At High Moon Studios, most programmers don't actually work in their offices. We work in open space areas, sitting next to designers, artists, and animators. My office is where I drop my stuff, check my email, and make phone calls. I share a large office with five other people, but only spend about 30 minutes a day in there so we are rarely there at the same time.
9:00 AM I have my morning oatmeal, and I am now loading up the nightly build to examine the state of the game. The nightly build is automatically deployed to my development console so it's ready to go in the morning. I notice a couple of animation pops in the AI motion and make a note to ask the team about it later. Today's build looks good, no fires to fight yet.
9:30 AM Time to start programming. At High Moon, we pair program the majority of our tasks. Today I'll be working with Robert, one of our junior programmers. Our pair programming stations have a PC with dual monitors, two keyboards, and two mice. Robert and I sit side-by-side and take turns programming throughout the day.
This may sound strange to some people, but working with another person all day long has some incredible advantages. We are more productive, our code quality is higher, and the code is owned by the team, not an individual. In addition, pair programming helps bring new hires up to speed quickly and allows us to teach them our preferred programming methods, preventing them from developing bad habits.
During my first programming job out of college, I had no idea what most of the code did, let alone where to look for it. Today Robert and I are going to implement locationspecific hit reaction animations on the AI when they are shot. We will be creating new AI logic, playing animations, special effects, and audio.
10:45 AM Time for my first scrum of the day. The daily scrum is where people discuss what they worked on yesterday, what they are going to be working on today, and any impediments to their progress. In addition to being lead programmer, I'm also a scrum master. I'm responsible for the vision of one complete aspect of our game. My scrum team consists of programmers, designers, artists, and animators.
This meeting lasts only 15 minutes and is done standing up. One of the artists mentions that he is having problems with his graphics card. The associate producer makes a note to follow up with IT after the meeting.
11:00 AM Scrum of scrums. All of the scrum masters attend this meeting and discuss crossteam dependencies and impediments. Today there are no impediments to report for my team.
12:00 PM Lunch! Our "studio mom" Samantha makes free catered lunches on Tuesdays and Thursdays, and breakfast and lunch to order the rest of the week. We also have a lot of lunchtime activities at High Moon, such as basketball, surfing, mountain biking, ultimate frisbee, gaming, or going to the gym next door. My activity today is eating Samantha's carne asada burritos!
2:15 PM Some designers in the area are discussing a problem they are having with the AI. Thanks to the open space area, we can hear all about it. The designers ultimately ask us to jump into the conversation. Together we figure out a solution. Since this is a high priority issue for our team, Robert and I start working on it immediately.
I've noticed that when people can see each other, they are more likely to ask questions. If they have to get out of their chairs, they probably won't bother. The open space area facilitates communication between disciplines, and having the team sitting in one area has dramatically improved our productivity. We constantly talk as a team without having to set up meetings or compose long email chains.
2:37 PM I smell smoke, and where there's smoke there's fire. The animators are having problems importing animations onto a specific character. I talk over the problem with our technical director Sean, and we think we know the cause of it. Sean is busy fighting a fire of his own, so I move over to a free programming station and start debugging the offending code. I try to handle problems that fall outside of a specific team myself, allowing the rest of the team to continue uninterrupted. Before I get started, Robert and I have a quick discussion about what he will work on while I'm helping the animators, and then we both get back to work.
3:15 PM The bug is fixed! Since I didn't pair with anybody while coding the solution, Sean comes over and reviews my code changes. He approves my solution. I check the code in, which automatically kicks off a new build of the game. Now I move back over to my previous tasks, and I find that Robert has made good progress on the AI.
3:30 PM Build failure! We use continuous integration here at the studio: each time we commit code changes, a fresh build of the game is created. If one of our tests fails, the build is flagged as a failure and the team is alerted. I open up the build report to see what failed and who made the recent changes. When the build fails, nobody else can commit code until the build is fixed, so it's important to fix the build as soon as possible. Looks like programmers from another scrum team caused the failure. I walk over and discuss the failure with them, and they start working on the fix.
3:50 PM Build fixed. The rest of the teams may resume code commits.
4:45 PM Robert and I are working on our AI changes, and we found a way to optimize an expensive section of the AI logic. We talk it over with the other programmers on our team that sit next to us and estimate a significant savings in CPU time. This type of discovery happens often, and we want to keep track of new tasks so they are handled by the next available pair. We write up a description of the work to be done and pass it along to our producer for bookkeeping.
6:15 PM Time to go home. As a lead programmer I find myself spending more time programming and less time in meetings. I'm constantly being presented with new challenges, and I enjoy coming up with solutions. I get to work with a diverse group of people from around the world developing video games -- life is good.
- Andrew Zaferakis
7:30 AM I roll out of bed and get my daughter some breakfast: pancakes and "serpup" (she's two). After the morning ritual, I hop in the car and head to work around 8:30. I have a great commute. It's really short -- about 10 minutes. The nicest thing about it is that I can run home for lunch or for a quick errand if I need to. I know not everyone gets to do this so I count it as a privilege.
8:45 AM Parking has gotten to be a pain lately as a large data processing company has been taking over our building. It's crazy. They're like locusts. Well, their cars are, anyway. I'm sure the people are very nice.
Once I'm at my desk, I usually spend some time reading emails and getting caught up on the day's news. I might look over a resume or two that's come in. If I'm smart, I'll sit down with my notebook and review all the things I need to do that day. With multiple projects and lots of other miscellaneous things going on, it can be tricky to keep track of things like what meetings I'm supposed to go to, who is waiting on my feedback, or what artwork I have on my plate. The majority of the company gets in around 10:00, so the first hour of the day is usually when I have the most time to myself.
10:00 AM By now, I've met with a level designer and talked over a couple of bugs and assets that are due for the next milestone. Many times, I'll call an artist into the conversation to help sort out what's going on or to help decide the best course of action.
It might be a problem with an animation or a how much texture memory we have left, but many issues end up involving multiple departments -- so the more our artists can work with level designers and programmers, the better.
For an artist, getting artwork created is just the first step. Getting it into the game and making sure it works properly takes an entirely different set of skills. This is where I see most artists, especially junior artists, have room to grow. I'll often end up sitting down with them and going over the assets in question. Artists can get valuable experience through a process like this, so I try to encourage them to learn how to troubleshoot their work and learn from other artists as much as possible.
11:35 AM The current project on the hot seat is our PSP action-adventure game Dead Head Fred. Right now we're three weeks out from gold and Q/A is busy poking holes in the UI work I've done. I have a few simple TRC bugs on my plate I can squash. They don't take long, so while I'm messing around with UI, I'll take the opportunity to fix a few issues I noticed earlier. A font change here, a color change there, and now I'm late for lunch.
12:15 PM Lunch is a good chance to take a break from what's going on. I usually try to make the most of it. If it's a build day or if there's an emergency, I may not get a lunch at all, but I generally make sure I take a full hour to recharge for the afternoon. If I'm going to be staying late, I might try to get home to see my wife and daughter for a few minutes since I'll probably miss bedtime. If not, then I might go to the gym for a quick workout (the first New Year's resolution I've ever kept past January 2) after which I'll stop off at Subway instead of eating the lunch I brought to work and then left sitting in the freezer.
1:40 PM The other game I am working on is very quickly cruising toward beta, so time is of the essence. If things aren't moving smoothly, those wasted hours will add up to some monster overtime, and it's in my best interest (as well as that of the other members of the team) to not let that occur. My most recent efforts for this project have all been focused on getting our non-player characters into the game and working. To do this, I've been working with a couple of artists.
One artist is modeling the characters and doing some texture work on them. We go back and forth a bit on poly counts, texture sizes, and making sure each character matches stylistically with the game. The milestones are always looming so if something's not right we'll work out a plan for fixing it while still keeping us on schedule.
Another artist is modeling and texturing a set of unlockable items for the NPCs. The final step for him has been getting the items in the game and bug-free, so he's been working more closely with the character artist than with me. They're a good team and work with the level designers to get everything into the game. They've both had to learn more about the editor we use for our games, but that's a good thing.
3:55 PM A quick check of my own personal task list shows that there are some cinematic bugs for Fred that have been sitting around for too long. I pass them along to an animator, but taking a look at the open bugs reminds me that I really need to update my bug list. Most cinematic bugs are a quick fix, but some require a little bit of character work. We might need to create a new morph target for a speaking character or tweak the physique on another to get rid of some pinching. The majority of bugs show up after the animation has been done in 3ds Max and it gets put into the game. Again, close collaboration with the level designers gets the kinks worked out, and things are back on track.
Checking the more than 125 cinematics in Dead Head Fred for bugs is a bit of a chore, but I need to get a sense of how much progress we're making. It feels a bit like shoveling the driveway while it's still snowing, but I really like working on cinematics. Fred's turning out to be a fun game to play, so I don't mind it. Like most things I do, I just wish I had more time to devote to it, but I am a very busy guy.
6:30 PM If Fred weren't three weeks from gold, I'd probably be going home right now, but it is and I'm not. We still have work to do. For me it's a good opportunity to double check a few more bugs and review some contract work. It's also a good time to check the schedules I've made, and assess my team's overall progress. Since we're doubling our efforts, it makes sense to be doubly sure those efforts are pointed in the right direction. Because we're staying past 8:30 tonight, I get some dinner at my friend Subway's house. (The guys at Subway know just how I like my chicken teriyaki sub -- and yes, I did just eat Subway for lunch and dinner.)
9:25 PM I spend the evening reviewing spreadsheets and checking bug lists. When I get the chance, I do a little more UI cleanup or do some general playtesting. There's a good chance I forgot to get back to someone about something, but it will have to wait until tomorrow.
On the way out the door, I make fun of a few World of Warcraft-addicted artists I can't seem to kick out of the place. They know I'm just joking -- or at least they do now.
- Ben Lichius
6:15 AM Chances are, I'm the only game designer out there who gets up this ludicrously early of his own accord. There couldn't possibly be more than three of us. But I like my mornings, the quiet before everything happens. Between a good walk and my other morning rituals, I'm rarely on my way to work before 8:45. Today, I get distracted playing Rogue Galaxy and am running a little later than that.
9:35 AM Iron Lore Entertainment is situated in a lovely old brick (former) textile mill building complex, which sports some really long hallways. I'm in the parking lot now, and it will be more than five minutes before I reach our office suite.
9:40 AM The office is still pretty dark and quiet at this hour. We're supposed to be in by 10:00, but not everyone is able to hit that mark. In fact, mornings tend to stay fairly quiet around Iron Lore, at least until 11:00 or so, even after all of us have drifted in. I often take this time to do the focused writing or planning that can be difficult when the company is at full buzz. After checking my email, a few daily web comics, and other web sites, it's down to business.
Today I'm writing dialogue. Knowing that it's just a first draft, that design changes could scrap all of it, and that perfectionism is my enemy, I try hard to breeze through it, getting the gist right even if a few words are awkward. The enemy I can't avoid is research. I hit a detail about the mythos that I'm a bit hazy on and waste more than a quarter of an hour double-checking my memory against Wikipedia and a few other all-too-familiar web sites.
10:00 AM After my first cup of coffee, I'm back to writing, even though by now my office-mate has showed up and I've got emails from programmers and designers to respond to.
11:15 AM I've gotten some good writing done, but the distractions are starting to make it harder.
Normally I'd start looking for something to do that's more multi-tasking friendly, but today, it came to me. Dave, the designer who implements all the content that I plan and write, drags me over to his cube. One of the quests that we had planned, which sounded great on paper, turns out to have some issues in practice. We sit in his cube, looking at the level in our world editor, discussing ways to solve the problems that have come up.
The solution we decide on involves some scripting changes and tweaks to the AI behavior of the enemies in the quest. Dave knows the gameplay database pretty well, but this time we go to one of the gameplay designers, Shawn, to change the units so they work the way we want them to. Dave will make the changes and get it working. Later on, I'll test the quest and give him feedback on how it works.
11:45 AM I update my schedule. What did I just spend the morning doing, again? Why is this part always so hard?
I look over my to-do list and a large planning spreadsheet for the quests and other such content in the project. Sometimes I feel like managing my workload is some kind of spiritual Bust-A-Move. What's coming at me that I have to worry about first? What's farther off that I have to remember not to forget to worry about later?
Of course these mental knots only happen at certain stages of development. When we're closer to finished, everything boils down to testing, polishing, and tweaking. In the pre-production and early production stages, you might have a head full of design ideas you have to sort out, but that generally just amounts to too many Word docs, or Post-It notes, or dry-erase board charts, depending on your process.
I end up spending the time before lunch updating the quest planning chart and talking briefly with our producer about impending localization deadlines.
12:05 PM Mondays, Wednesdays, and Fridays I'd be trundling off to the gym (conveniently around the corner and downstairs), but it's Tuesday and the weather is gorgeous, so a couple of us go out to lunch.
1:05 PM At my desk again, I quickly read through the rest of the web comics that I'm addicted to. Back to work!
While playing schedule Bust-A-Move before lunch, I realized that I need to coordinate with our map guys and art team before they build a quest-sensitive part of the game. I walk down to the cube of the lead content designer, Tom, and start talking to him about how the area needs to work. This area features a large setpiece, which is built by our extremely talented art team. The two of us wander over to see Mike, the art director, and as we discuss what we need, he sketches examples with his markers on a sketchpad.
1:35 PM I confer with Dave about some other art I think we'll need and make sure it's properly described on the art schedule. Then I check with the artist who will be making it and edit our quest-planning documents to describe the use of this object properly. Finally, I skim back over the art schedule to make sure that there's nothing else we missed.
3:00 PM The Coffee Train. I brought this tradition to Iron Lore, which hails to my Stainless Steel Studios days. Every day at this time, a bunch of us walk to the café down the street. It's a break that gets our blood circulating, lets us focus our eyes on real 3D objects, and, most importantly, gives us time to joke, complain, and process the tumultuous phenomenon of more than 30 people working hard to build a video game.
3:15 PM Second coffee in hand, I skim Slashdot, Gamespot (news and reviews only), and Gamasutra. A designer must stay informed!
Some feedback has come in from our publisher's creative liaison. Much of it is on the quest and story content. I take my time reading it over carefully. I email my response to the design team. An email discussion thread develops where we go over the feedback. I work on the quest-planning spreadsheet while reading this email thread, which updates every couple of minutes. By 4:00, we've gone over everything, and I draft my part of an email response. We'll compile responses per department and send them to the liaison.
4:05 PM I go back to writing dialogue. Although I'm not nearly as focused as I was this morning, it needs to get done. I plug away at it and make some progress.
5:30 PM My brain is a little frazzled at this point. Since I need to check in on Dave's work, not to mention see how our map team has been coming on the areas where certain quests take place, I decide to do a little play testing. Of course, it's still work -- I keep my notepad by my keyboard and pause frequently to share bugs, ideas, and other feedback not just with Dave, but with the rest of the design team as appropriate. In my humble opinion, this sort of internal feedback can be as valuable (in its own way) as outside tester feedback. A good design team stays in excellent communication with itself.
I type up the feedback and email it to all designers.
6:50 PM We're in mild crunch this month. Crunch is a fact of the game industry. Even in studios that try hard to avoid it, crunch still happens. It actually hits me before everyone else. Because voice over editing takes a while, the dialogue needs to be thoroughly done before a lot of the other content. I worked much harder last month (mid-milestone). I'd be on my way home by now, but I know there's a lot to do before our milestone deadline.
So it's back at spreadsheets -- every quest needs rewards. I'm adding a list of what rewards are needed where and writing notes in each cell so that one of our gameplay guys can pick appropriate rewards that won't spoil the balance in game, which is what would happen if I chose them.
7:20 PM I wander back over to Dave's cube and we spend more than half an hour talking about how to handle several high-level quest issues we see coming down the pipeline.
7:55 PM I find some responses to my earlier feedback in my inbox. I respond to each and shut down my applications. I toss my bag over my shoulder and tell Dave to go home already. He won't. Then it's back down the long, long hallway, to the parking lot, into my car, and the night ride home.
- Ben Schneider