Uses This


What do people use to get the job done?

Victor Thompson

Victor Thompson

Programmer (Caper Academy)

Who are you, and what do you do?

I'm Victor Thompson, a freelance programmer for games. Recently, I've also been building input devices and enclosures for games that will be installed or displayed in public locations.

My most recent (and current) work has been engine programming for the recently-released West of Loathing. It's been a bit daunting for me to come from an earlier career working with teams of programmers, and now be the only person writing and repairing the engine code for the games I work on.

Zach Johnson (no relation to West of Loathing's Zack Johnson) and I built and maintain the Donutron, a free public multi-game arcade cabinet. We created it specifically as a place to showcase locally-made games, usually projects that might go unfinished or aren't intended for commercial release. I won't go into ALL of the motivation behind it here, but feel free to ask about it if you meet me sometime. It's a whole thing.

I'm also half of the team that created Please Stand By. With other half Jerry Belich, we made a series of themed puzzle-like interactions that are played using the controls built into the vintage television cabinet that is showing the game.

What hardware do you use?

I'm currently writing on my main development computer, a 2013 13-inch MacBook Pro. It's a little under-powered for some software, but that keeps me from pushing the processing and graphics needs of West of Loathing beyond our minimum system requirements. I also like that I can carry it around in a vary small backpack or shoulder bag, or fit it on a co-working table that already has a bunch of computers on it.

At home, I connect the laptop to a 27-inch Apple Thunderbolt Display, full-sized split keyboard, and Microsoft mouse. I got used to this desktop setup years ago, and it's still the most comfortable for me.

High-quality audio is not a huge thing for me, but I keep headphones on my desk for testing mixes and occasionally for blocking out sounds from the printer or the street below my window. The current pair is low-end enough that they didn't bother to print a model number on the product.

For testing games on other platforms, I have a tower PC that I built in either 2008 or 2009. It wasn't high-end then, and it's showing its age now. It has Windows 7 installed, and I boot into various flavors of Linux using a collection of USB memory sticks.

When I'm building a physical project (recent ones are an arcade deck for Joggernauts and an outdoor credenza), I use a combination of simple hand tools - hammer and chisel, an inexpensive block plane from Stanley - and electric tools - various corded drills, a portable table saw, a random-orbit sander. I'm very pleased by the quality of battery-powered hand tools these days, and the most-used tool in my shop is definitely my Hitachi impact driver. It's incredibly useful, runs for days on one battery charge, and cost me about half of what I paid for less-capable power drills five years ago.

For taking notes, minor project planning, and simple layout design, I like to have a whiteboard very close by my desk. There's a lot of problem-solving and task management that I get done on the whiteboard, because I've found that it doesn't go as fast if I try to do it in my head or in software. I think it's partly the rubber ducking effect and partly the fact that slowing my thoughts down to handwriting speed lets me understand each step on its own.

And what software?

Almost all of my computing happens under OS X. I've been using Unity for the last few years, for West of Loathing and for several other projects. This is a complete replacement of my setup five years ago, which was a Windows machine and various self-built game engines. I still write my own low-level code for a personal project here and there, but any time where I'm accountable to other people it seems unconscionable to take the extra time.

For editing code, I use Microsoft's VS Code almost exclusively. The integration of Code with the Unity engine really cemented that for me, as I was never comfortable using Unity's included editor, MonoDevelop. When I can't use VS Code (such as when I need to inspect giant JSON files), I fall back on Sublime Text 2.

There are very few minutes in the day when I'm not somehow available on Slack. I communicate with the West of Loathing team, other local gamedevs, and few other groups. Since we both use Slack a lot for our work, my partner and I created a team that we use to communicate during the day and move files around. It's the best thing since IRC.

I don't generally do physical design in software, but I have used SketchUp for, well, sketching. Mostly as a way of checking what rough size the project and its pieces should be. It still feels better to me to grab a ruler and a pencil and draw out or revise the design, and the vast majority of my designs live in my head.

What would be your dream setup?

For software work, I'd love to have an office space that's about 50% more sound-proof (I'm not sure if that's in decibels or some kind of normalized units). I think that my desk setup is acceptable, and my development environment desires are so changeable that I can't say if any existing products could improve it. If a new laptop would significantly improve the speed of stepping through code while debugging a Unity app, I'd like that.

For physical builds, I'd like to have a few more large machines, probably along with a bit more dedicated space. The basic machines would be a band saw, a drill press, and a thickness planer. For bonus points, add a prosumer-grade CNC setup like a ShopBot. Integrated collection for dust and fumes would go a long way toward making my shop area safer and more convenient. I'd also add a decently-outfitted electronics bay so I could make purpose-built devices out of cheaper components instead of using general-purpose devices that are sometimes only partly suited to my needs.

Alongside the things, applications, and processes I use, a huge part of what makes life either pleasant (or not) is the variety of work that's in front of me on a daily basis. Currently, let's say I spend 80% of my work time on the laptop, 10% planning at the whiteboard or on the phone, 5% in the shop, and 5% meandering while talking to myself. I'd love to be able to drop the laptop time to 60% and raise the shop time to 25%.