Seven Basic Tools

Snipehunter's picture

When I was a kid, I used to watch MacGyver all the time. In a very real way, he was my hero - a guy who could make anything from anything and who did so for the betterment (and wonderment) of everyone. As a kid, I really wanted to be that guy. I mean, I didn't want to be an obviously Canadian would-be spy, but I wanted to be a builder - a guy who could make what was needed when it was needed using only the razor sharp talent of his mind.

And you know what? Flash forward 25 years and I sort of am that guy, at least when it comes to game design and content production. I mentioned in an earlier blog that I think of myself as something akin to a watchmaker and that MacGyver aspiration has a lot to do it. I take the very basic things we have laying around (as a content designer, our game tools) and I strive to build the impossible out of them. The feeling lead me to joke once that with only a few basic tools, I could build anything.

The first 7 of those tools were:

  1. A variable/Counter - Something that can hold a number which can be incremented or decremented by an arbitrary amount and allow me to act on it when it reaches some specific number ("When the counter hits 2, do something").
  2. A timer - something that can keep track of time elapsed which I can start, stop, reset or pause and that will allow me to act on that timer reaching some designated value (e.g. "Do something after 7 seconds")
  3. A trigger - Something that can detect when a player or other object has entered a specific area and allow me to act on it (e.g. "do something when the player steps through the door")
  4. A text channel - some way to push text that I designate to players (e.g. "When the player steps through the door, display this text")
  5. The ability to detect player interaction - A way to react when the player clicks on an object or speaks to an NPC (e.g. "when this button is pressed, do something")
  6. Conditional Filtering - The ability to restrict something from happening if certain conditions aren't met (e.g. "When the player steps through the door, display this text, but only if they're holding the grail.")
  7. The ability to make an object appear or disappear - Usually this involves "activating" a pre-placed object to make it appear in the world or deactivating to make disappear from the world.

There are other tools that make things easier or that make very specific and specialized things occur, but generally those 7 tools are enough to at least approximate anything you could do in a game world. You'll note that my examples tend to be best suited for RPGs or MMOs, but it applies elsewhere, too.

For example, I came to work for a studio a few years back that was working on a run and gun 3rd person action game, using their proprietary engine. Amongst other things, I was tasked with being the design authority on the engine's dialog system, which meant creating test levels and experimenting with the system to help debug it, determine if it met our needs, etc. I had never used the engine's tools (my job on that project was mostly management or on-paper design spec writing, up until that point) and I was suddenly asked to create a test level where our engineer could see a game character delivering one of any random number of phrases whenever he interacted with the character, to test the facial morphing and phoneme matching features of the engine. That toolset actually makes that task very easy, but the other designers watched on with a sort of anticipatory glee - they expected I'd fail because of my lack of experience with the tools.

Understand, I'm not saying these guys were mean or anything of the sort - they were awesome, but I was the new guy, hired straight in as a senior designer and I'd done no in-the-trenches work yet. They had every right to be skeptical of my abilities; I still had something to prove. And honestly, were it not for my 7 tools and my MacGyver sensibilities, I would have failed. The tools felt thick, obtuse and inscrutable. I didn't understand the paradigm they were created to work with and like most pro tools - there was no documentation what-so-ever. However, in looking at the palette of available tools, I noticed that all of my basic 7 were possible, which was actually more than I needed. Once I realized that, I set to:

  • First, I placed my NPC in a new level.
  • Next, I added a counter and set its value to 0.
  • Then, I added a timer to the world, and set it up to increment the counter by 1, every time it counted up to 2 seconds.
  • After I did that, I entered in each of the lines of dialog, as text (the phoneme matching was "automatic" once the text was added and dialog audio was attached to the text), spoken by the NPC.
  • I then set the counter to reset itself to 0 once it had reached a value equal to the number of lines of dialog the character could speak (I think it was 12, but I don't recall)
  • Finally, I configured the NPC to speak all of the lines of dialog at once, whenever it was interacted with, but I filtered each line of dialog to only be delivered if the counter was equal to its ID (so if the counter was equal to 1, only the 1st dialog line would play)

The result was that for every second, the NPC could only say one specific line since the counter's value would change ever second and its value was used to conditionally filter which line of dialog was delivered. Since each line of dialog was more than a second long, that "change value every second" counter and timer combination was enough to provide a sense of randomness to the dialog the NPC would deliver. The whole task took me all of 10 minutes to do, too.

Flash backwards through time a little, and I'm working on Auto Assault - a game with severely limited tools. Depending on how you looked at it, we could do very little... or we could do anything we wanted to. It was the first time I realized that the problem in most of the projects I'd worked on was not "the lack of great tools" complaint I make and hear all the time, but rather an issue of "scope of vision" -- the truth is that, despite how I felt about the tools on AA, they could do nearly anything, with a little work and a little creative thought. I simply had to make the paradigmatic break from "if the tool doesn't do it automatically it can't be done" to "The tool is a mode of expression; I need to learn how to express myself through it." Once I did, I did some pretty incredible things.

For example, and this is the example I'm most proud of: Using the 7 tools outlined above, plus one more (the ability to add, remove and detect items in the player's inventory) I was able to implement Player Housing, the beacon system and the 1st version of outposts, on my own, over the course of a few weekends of spare-time effort.

It was incredible how liberating it was. Our tools were still severely limited and they were still incredibly painful to use, but I felt like I could do anything - that the tools didn't limit what I could do, only how I did it and making that realization literally changed the way I looked at the world around me. From that point on, every toolset was an opportunity; every game was the chance to find a new watch to build.

I'm a few years older now, and I've been using this paradigm shift in my work. I'm a much better designer now than I was before, even though I'm effectively just using those same 7 tools I've always used. Unfortunately, it's also the source of most of my dissatisfaction with this industry. I've reached a point in my personal development where I'm almost entirely unfettered by the restrictions of my projects. I know it sounds corny, but it really is transcendent. The problem, the source of my dissatisfaction, is that I am fettered by the people who have not yet made the same realization.

That's why it's so frustrating for me to talk to younger designers, sometimes. I look at them and I see the incredible potential each of them has locked inside and I lament the restrictions in their thought that prevents them from realizing that potential. Across the internet, in meetings and in discussions on the web, I hear fellow developers lament how little they can do. I hear things like, "Subtlety is impossible in games" or "our tools couldn't even begin to allow us to make THAT idea..." all the time, from people in studios as "noble and glorious" as Blizzard and as tiny and unknown as NetDevil. The thought that our tools limit us or "make the work too hard to justify doing" is so pervasive that it almost can't be fought against. We rail against having to do things in anything but the simplest way and we conflate complexity with negativity. K.I.S.S. is a good thing, right?

I mean, I don't know about you but I sure want my games to be as simple and as simply made as possible.

Wait, that's not true -- I don't want that at all! That's the exact opposite of what I want!

All I can do is throw up my arms and feel sorrow - I can't force people to look at the world, or my craft, the way I do, nor can I make the paradigm break for them that I made on my own. I've tried at more than one studio. It's a realization you have to come to for yourself, I guess... Or something. Hell, that's part of the problem too -- why does talking about it sound so corny and new age? All I really did was realize it's not about the castle, it's about the bricks it's made of... but that's somehow made profound because of how few people I've worked with have made that realization in the 12+ years of my career. Isn't that a problem?

MacGyver was a hero - everything he had at his fingertips was a tool for him to use and he was never stopped by how few or how simple those tools were. Why can't content creators be as free and innovative, too? I want to be a hero... and I think I only really need 7 basic tools to do it.

- Snipehunter

Technorati Tags:Technorati Tags: