Uses This

Interview

What do people use to get the job done?

Kee Chi

Kee Chi

Gameplay programmer (Double Fine)

Who are you, and what do you do?

My name is Kee Chi and I'm a Gameplay Programmer at Double Fine Productions. What does this mean? I smash my fist on the keyboard a whole lot in the hopes that it translates into something fun on the screen, and not compiler errors. I primarily work in player-facing systems, such as missions, AI, boss fights, dialogue, and puzzles. The work involves bringing together the work of the amazing artists and designers that I get to work with to create a fun experience for the player.

At Double Fine, the Gameplay Programmers also get to use their design sense in implementation, which allows the creative side of my brain to flex - wait, do brains actually flex? That would be gross. I've been making video games for the last thirteen years. Psychonauts is the very first game that I've worked on, and I've been involved in many titles since, such as BrĂ¼tal Legend, Stacking, and Costume Quest 2. I've also had the opportunity to lead a mobile game called Middle Manager of Justice.

What hardware do you use?

My setup at work is a Windows 7 desktop with a dual Intel Xeon CPU, 16 GB of memory, and like some gigowatts of SSD hard drive space. So it's a tad faster than my old trusty 386 SX, but there isn't a turbo button on this PC, so let's call it a draw. I have an NVIDIA GeForce GTX 550 Ti, which is connected to dual monitors that send flashy things to my eyeballs. I like using the Microsoft Natural Ergonomic Keyboard, not because I'm crazy about ergonomics - my almost-lying-down typing style would probably cause an ergonomics consultant to burst into tears - but because I really like the feel of the split keyboard, and I don't know why. No preference on the mouse, only that it really needs a trackwheel, and looking at it now, I see that it's caked with years of lint. Ew.

At home, I work on a dual boot 15 inch MacBook Pro with a 2.2GHz Quad-core Intel Core i7 CPU and 8 GBs of RAM. It's hard to work with the trackpad so I use the Apple Magic Mouse. As a mouse it works great, but it hasn't performed any magic tricks yet. I'm very disappointed.

The other part of my setup is dependent on which platforms the project that I'm working on will be shipped on. I've worked with Xbox, PS2, Xbox 360, PS3, Wii, and PS4. While working on MMoJ, I worked with various iOS devices ranging from the second gen iPod touch to the iPad mini, plus a whole range of Android devices, which actually sounds cooler if they were actual Androids that could walk, talk, and perhaps exterminate, but these were phones and tablets that can't perform THOSE functions... yet.

And what software?

I use Microsoft Visual Studio for C++, and Emacs for everything else. While Emacs might not be the easiest editor to use, I started using it in college and have built up so much muscle memory for the commands that I have a hard time using anything else. Also, multiple windows are so convenient to use, and we had an amazing programmer at the studio who wrote great custom scripts for it. I would save a Lua file, which is the scripting language that we've been primarily using since Psychonauts, and pressing Ctrl-C, Ctrl-S, would run the Lua compile, send it across the network to the Xbox dev kit, and send a command to hot-reload all the objects associated with the script. You can also create a lot of split windows, which is my favorite feature.

We use Gmail and Google Drive, but I have to admit that there are some days when I do kind of miss Outlook, and I'm not entirely sure why. Whenever I have to look at 3D art I use Maya, and for 2D art I use Paint.NET. I really like to use a physical notepad to jot down notes. It usually ends up being jibberish that I can't decipher later, but it helps my thought process at the time of note taking. Almost all of my notebooks look like a version of the tattoos on the guy from Memento.

What would be your dream setup?

My dream setup is really less hardware and more software. And by software I mean as robust an API as possible. I think Gameplay Programming is very much like solving an adventure game puzzle. There is a puzzle and you have to search around your inventory and the environment for the items that solve it. In my case, the inventory is what the engine can do, and it needs to be formed into convenient function calls before I can use it. And if those don't exist, I have to write them myself. Having lots of preexisting tools to work with would allow me to work faster, which means more time for iteration and polish. It's unrealistic for any game engine to account for every custom behavior that is needed to make a game, but hey, this a dream setup right?

That, and a lint-resistant mouse wheel. How does one even clean that?