A few times a year, I sit down with some students from a local community college video game design course and try my hardest to answer their questions without sounding like some sort of pompous know-it-all. There are two reasons I do this. First of all, sharing information and being an inspiration to anybody who might want to do what I do for a living is something I consider an obligation; one that I do willingly and gladly. Second, I wrote the course and I’m always looking for ways to improve the subject material! Since the course started, I’ve sat down with 4 different classes of students and the questions usually consist of variants on the following:
- “What game are you working on?” – Most of the time my current project hasn’t been announced, so I can’t tell them. At this point, the students try to employ the Mustafa rule of three questions with little success!
- “How do I get into the industry?” – I talk about networking, playing games, capitalizing on existing skills, being a nice person, starting as a tester, getting an education, looking for intern positions, etc.
- “How do I become a lead designer?” – I downplay the glamorous fantasy of being a lead and, instead, stress the difficulties of the position and, most importantly, the importance of being a leader rather than a dictator.
At the last student meet-up, there were only three students (according to the teacher, the 20+ people in this semester’s class are a perfect storm of underachievers and slackers), but one girl asked the best question: “what did you do at work today?”
9:00 – Dropped off $40 at Robert’s desk (our IT guy) for a copy of Portal 2 for the PS3 which I had actually sold to him last week when I got the PC version. The PC version crashes on me after chapter 3 whenever I pick up any object, so I bought it back from him with the hope of increased stability and a desire to finish the game. He gets motion sickness from FPS style games, so it wasn’t that big a deal for him. When I’m done with it, I’ll probably just give it to him.
9:15 – Got a glass of water (I’ve recently weaned myself off plastic bottles). I try to drink 8 glasses a day even though it’s actually easier to grab a free soda out of the fridge. While I was there, I put a new roll of paper towel on the dispenser (my wife would be proud!) because I hate the fact that a lot of people just assume that our facilities girl will take care of it!
9:25 – Started up Perforce. Every morning, I sync to the latest content. This takes about 5 minutes. Occasionally I worry that I am actually checking out the entire branch instead of merely sync’ing. I’ve never done this, but I know plenty of people who have. To make matters worse, I’ve got a changelist I’m not allowed to check in because it contains a Willie Nelson song I used during a demo last week. I like to build everything after a sync because I’ll take a look at other peoples’ work to see all the exciting developments with the game! It takes about 15 minutes to do a full build.
9:30 – While I’m waiting for the game to build, I catch up on the morning’s email (work and personal). This morning I’m also taking a look at an animation candidate’s reel who’s coming in for an interview today. The reel looks pretty good and one of his character’s has a low poly comb-over which makes me giggle! I sit pretty close to the kitchen, so I also have to listen to a ton of chatter during the build as people make their coffee. That’s why I own headphones!
10:00 – Usually we have a design department meeting on Monday mornings, but the lead designer is out, so we skipped today. At the weekly design meeting, we’ll talk about what everybody is working on, whether there are any new tools / processes, and what movies we saw or what games we played over the weekend.
10:15 – Today I’m working on level design and some event authoring. The level design portion of my day will entail me creating blockmesh (low polygon blocks which shape the gameplay space) and working closely with the level artist to incorporate event-related geometry. I work in Maya for level design and object authoring / placement. We don’t have a scripting system per se, so everything related to the planning and execution of events is data driven through xml files.
We work in pods. In my case, it’s myself, a gameplay programmer, two level artists, and a texture artist. My level artist got a new computer today, so he’s down for a few hours. In the meantime, I’m building blockmesh off in space above the level. I’ve moved the spawn point for the player to this space so that I can continue to work. When my artist is back up and running, he’ll delete geometry in the space that I need and I’ll transplant the work to that spot. My level isn’t at the top of the priority list right now (there are three levels ahead of me), so I’m missing a bunch of crucial player mechanics and I’ve got minimal support for animation and effects. Without these crucial player mechanics a lot of the level design consists of best guestimates (as far as player-metrics) and intuition (what may be fun). At a later date when the player mechanics are implemented, I will probably have to redo portions of the level design to get the gameplay feel I want.
Today I’m dealing with an area in the level where we want the player to be locked into gameplay for a set amount of time. The problem is that the level is treated like an open-world, so I can’t use one-way doors or sudden force fields or anything. Instead, I’m using the environment to gate the player by having the gameplay objective at the bottom of a pit-like structure which there’s no way out of until the gameplay is finished. It’s not the most awesome solution ever, so I’m spending a considerable amount of time creating some visual storytelling around the pit to sell it as an actual location rather than an arbitrary convenience.
11:30 – I want to use an enemy from another level. In order to do this, I’m working with our enemy AI gameplay programmer to come up with a variant on an existing enemy. This enemy will spawn out of the ground and be tracked to go along with the pit event I’m working on in the level layout. I’ll have to author the spawn point in Maya and set up the necessary data in XML: object name, object group, goal name, world location, etc.
12:00 – “I don’t know” is definitely an honest answer to an interview question, but probably not the ideal answer. Personally, when I interview a candidate I look for insights into process and problem solving.
12:30 – Early lunch run (I usually go to lunch around 1:30) to Chipotle with one of the other designers. None of the people working there seem to remember us even though we go at least once a week. One of them is really chintzy with the portions. She places ingredients into the burrito and then starts removing them. Just leave it there! We take our food back to the office and I work on some sketches for my blockmesh while I eat. When I hand off work to my level artist, I find that blockmesh is best accompanied by some sort of sketch to show what I’m thinking of.
1:00 on – For the rest of the day I work with the gameplay programmer to set up my pit area with rough versions of events to make sure all the gameplay is accounted for. There are various hitches with the tech that I’m able to work through and others that I need additional assistance with. By the end of the day, the block mesh and gameplay events are in a pretty good state.
SIDE NOTE: During every project, I try and accomplish a silly goal of some sort. Today marks the day that the silly goal is created. Myself, the gameplay programmer, and a designer from the pod next door decide to see if we can balance on a Razer scooter for a minute or longer. So far, we’ve hit a record of 7 seconds, but hope to achieve the minute mark by the end of the project next summer!