Skip to content

This Just In (Again): Designers Should Code

June 25, 2008

The nutshell of the post: go learn Actionscript or some kind of scripting language. It will make it oh so much easier for you to get a gig or get a better gig than you already have.

I’m pushed to post this by three things:

  1. A recent design grad who’s working in the industry called to say, “Man, am I glad I can code,” and filled me in on other details of his first week at work.
  2. An industry icon and fellow designer recently spoke at a conference and noted to the students in attendance, “I couldn’t break into the industry today, not the way I broke in years ago.” He was referring to his inability to code.
  3. The truth.

As artists (and by that, I mean cognitive artists, not visual artists), we need to express ourselves in the preferred medium, and in the video game industry, that medium happens to be code.

Many game designers, particularly aspiring designers and designers already in the industry, don’t have a natural desire to learn code. I get that, sort of. In my college days, I actually took assembler and liked it, and I practically had a WoW-level obsession with Pascal (an early C precursor) when it surfaced. I loved to code, and would pretty much code anything if I had to do it more than three times. I remember writing a program that automatically printed addresses for me and did all kinds of useless things. I’m sure I spent more time writing and debugging the program than I ever would have spent doing all the things it was allegedly designed to take care of. In a monumental act of redundancy, I once wrote a whole program to print character sheets for my Wizardry characters because I wanted to. The fact that Sir-tech already had one called Wiziprint was trivial. In short, coding was a game.

You don’t need to learn C++ or C#. While familiarity with that code is good, a few courses is only going to get you that – familiarity. The hardcore coders understand so much more beyond the code – mathematical and logical structures, physics and other things that go bump in the night. With Actionscript or any scripting language, you effectively harness a middleman and become the translator between hardcore coder and player experience.

The irony in this post is that I’ve just had $1000 of board games and approximately 2000 2×2 wood tiles delivered to my office.

10 Comments leave one →
  1. Olick permalink
    June 26, 2008 9:12 am

    You talk a lot about what someone who was a designer first should do about code, or relating to programmers, but what about if you got into programming first, but your goal is to aid in the creative, design parts of a game?

    That being said, as someone who knows how to program, a designer would be immensely more helpful to a programmer if he knew the basics of how programming worked, and the general realm of possibilities of programming. This probably goes just as well for artists and musicians.

  2. Jeff permalink
    June 26, 2008 11:20 am

    I think the big advantage of learning coding for designers is logic. At some point in the design pipeline you have to translate from the theory of your design into an actual working model. It’s the “How?” of it all. Sure you can decided that you want a specific game play experience, but how are you going to get there?

    And I don’t think this just stops with computer based game play. The logic you’d learn from programming also helps with other game play design theory, such as board games.

    Of course, the idea behind all of this is to get a job. And as you said, the number of companies that will hire a entry level non-programming game designer are very, very, very, very rare.

  3. June 26, 2008 1:37 pm

    I’d say that designers are curious by nature, and given that, they’d probably explore other areas within the industry. I’m surprised this has to be said.

    I do a lot of programming, and I’ve tinkered with design, created audio (learned piano, and how to use Fruity Loops software), and improved my artistic skill (Using Photoshop on a daily basis, Playing with Maya). While I’m no artist, or composer, I have an understanding of how it works — which was the goal.

    For what it’s worth, this is still a relatively tight nit process, and crossing boundaries to experiment is incredibly simple to do.

    All in all, anything you can do to improve your stock is great. Limiting yourself, just makes things much harder for your personal development and career objectives.

  4. Daniel Cassar permalink
    June 26, 2008 3:07 pm

    I think you’ve understated the relationship between coding and design. Programming and game design are, at heart, the same thing: both are about designing dynamic, interactive systems. A good programmer understands the implications of how one small change in one part of a system can affect the rest of that system, much the same way a good game designer does. Software QA and playtesting are almost exactly the same process.

    I would think that a designer who can’t code at all will have a very tough time competing.

  5. June 26, 2008 3:57 pm

    @Daniel – I think that’s an excellent observation.

    @Olick – When Ian gets finished with his festival du boardgaming, he will probably answer that for you. That was precisely his road into design.

  6. June 26, 2008 7:41 pm

    Don’t be intimidated. Programming can be a pain in the ass but it is extremely rewarding when it works. Even getting through a tutorial is exciting and makes me celebrate. Creating something new on your own knowledge will instantly end whatever frustrations you have and may even give you a laugh. Well… at least that is the experience I’ve had so far.

    I’d recommend these books because they are related to making games and are actually kind of fun:

    Learn C++ by Making Games – Francois Dominic Laramee

    ActionScript 3.0 Game Programming University
    – Greg Rosenzweig (My Favorite, such a fun book)

    I plan to discover more about UnrealScript in the next few months. The new book for the Unreal 3 Editor has yet to be released(Nov 10th 2008) so I suppose I’m just going to buy the older version.

  7. June 28, 2008 11:44 pm

    I agree with Brenda, a good designer should understand programming. Game design is about communicating a concept to other people. One major audience for game design documents is programmers, so knowing how to reach them by talking their language is important.

    However, a big problem you run into in many companies is factionalism, because each group wants to protect “their turf”. Often programmers don’t like it when designers try to program. Just as designers sometimes get protective of the design when “the tech geeks” try to provide their input. It’s stupid, but it’s the way some people work, sadly. This can be an issue for large companies, too, since they sometimes have strict pay scales depending on job title, so having a designer who codes sometimes becomes an underpaid programmer or an overpaid designer.

    In the MMO blogosphere, there was a big to-do about “No Designer Scripting”, stating that designers shouldn’t be doing any programming on an MMO project. I don’t agree with the sentiment myself, but that may be because I do both programming and design.

    @Olick: But, to answer your question, look above. As someone in the same position, I’ve had a hard time straddling between two worlds in larger companies. I don’t get excited about assembly coding like “real programmers”, but I didn’t want to take the pay cut to be a “designer” in title.

    As I said, Designers tend to be wary of programmers that think they are creative. Richard Bartle had an insightful comment about this. In response to someone saying (paraphrased) “Programmers used to do all the game design,” Bartle replied (paraphrased, again) “No, game designers had to be programmers back then to implement their designs.”

    There are a few options to move your career forward as a programmer/designer:
    1) Work on a small team. When I was working on Meridian 59, the team was incredibly small so we all had to pitch in. I could influence design directly when I sat down with my other 2 co-workers on the project. The downside is that 3DO pretty much ignored our group so we didn’t get many resources, etc.

    2) Start your own company, or work for a startup. Having multiple disciplines has helped me a lot in working at smaller companies. Being able to program and design means I don’t have to hire someone else to fill one of those roles (although I don’t want to have to do *everything* myself, so some redundancy is good.)

    It’s often about how you position yourself, too. To people at larger companies, I try to explain that I’m a “technical designer”. I can write a document, then turn around and bang out code. It mirrors the role of the “technical artists” you sometimes see in some organizations.

    But, honestly, it’s going to be a long, uphill battle for you. It has been for me. Good luck. 🙂

    Hope that helps.

  8. July 1, 2008 10:58 am

    @Olick: Good news — many companies have positions called “gameplay programmer” or similar. It involves implementing the rules of the game, so you work VERY closely with game designers, certainly moreso than (say) graphics or networking programmers. Ideal if you consider yourself a programmer/designer hybrid but a programmer first. This was my first industry job, and I was lucky to be working with a designer who was open to suggestions (both in terms of my original mechanics, and adjustments to her own proposed mechanics that would be easier to code).

    @Brian: absolutely agreed about the factionalism. I’ve worked on one team where I wasn’t allowed within ten feet of a C++ compiler (even though I had more professional programming than game design experience!) simply because I was hired as a designer. I was on another team — at the same company, even — where the lead programmer actually made a namespace for me to create my own custom C++ callbacks so I wouldn’t have to bug the programmers when I needed a new script function.

    I suspect you’re right about small/large teams. In a smaller company, there’s not enough staff to go around, so everyone HAS to wear multiple hats, and people tend to be more accepting if someone else offers to do some of their work for them.

    The other difference I’ve noticed is the attitude of the leads (in larger projects). Some team leads are more territorial than others, and that attitude bubbles down to the rest of the team. I happen to actually think “multi-class” developers become more valuable as team size increases, because they enable communication between sub-teams. So in theory you could do well in a really large team… provided that you find one that understands the value in hybrids.

  9. Brian Shurtleff permalink
    July 5, 2008 10:37 pm

    Also, both design and code are about problem solving, an observation that’s easy to make at my job once again teaching at the game development summer camp.

    My students are developing their ability to think creatively in terms of game design based around what they can figure out what they can and can’t make the scripting language of our engine do. I suppose it helps that we’re using an engine with a painfully, painfully limited…
    When I tell them that (sadly) the engine/language can’t do what they had hoped, they have to scramble to think up a creative work-around. Sometimes the results are design-centric, and sometimes based in code. Sometimes it’s hard to tell which.
    In helping them out, I get to suggest such cunning solutions as well, building MY problem-solving skills.

    It reminds me of what you said once in class before about game design being at times like performing magic.
    In order to solve a student’s problem I suggested a script at one point that deleted one version of a character once the player left the room, and make a new copy right before the player returns. The switcheroo all happens off screen so they don’t even know one took place, just like in “movie-magic” and the like.


  1. Game Maker « Gamer Brasilis

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: