Computer Programming and Game Design

For years I would say that computer programming was like a game for me. There was a goal I needed to reach, and a good program would get me there. I had to follow rules and develop strategies, and often I would win. If pressed, I would admit that it was more of a puzzle than a game, but still fun.

Now I have had some experience designing games and have realized that programming is more like game design than like a puzzle. Both are creative processes that, for me and many game designers I know, follows a similar path and a similar strategy. I should not be surprised that my favorite game designers are also excellent computer programmers.

A good computer program is simple and flexible, adaptable to a variety of situations. It should be a considered work, with a clear direction and intention, without unnecessary code or odd work-arounds. Good programming is hard, and for me comes from careful discussion and reflection, testing and retesting, reworking and major paradigm shifts. A completed program that I feel most satisfied with is elegant, as simple as possible, and very effective at current and future processes. I find creating such programs very satisfying.

A good game has all of these qualities and requires all of the effort. Good game design is hard, requiring discussion and reflection, testing and retesting, reworking and major paradigm shifts. The thrill I get from creating a good game feels identical to that I have creating a good program. It is a feeling of creativity, of starting something that will make me and others happy for a long time. I love it when people find my programs useful, and I love it when people enjoy playing games I have helped design.

Both feelings are very different from the joy of winning a game. Winning a game is essentially a destructive action: destroying your opponents, limiting their choices, limiting your own choices to those most effective, and using up all the time and resources you have to bring the game to the desired end. A master game player sees each game as a script to be followed, putting into motion his plan that will inevitably lead to the victory he foresaw. Clearly I do not enjoy playing a game where my victory is assured, but I do enjoy creating a strategy that is very likely to lead to success and prove my strategy to be better than others. It is fun, but not in a creative way.

Rarely have I enjoyed an activity as much as I have enjoyed creating new computer programs and new games. Since they follow a similar path, I have found my abilities at each to have improved while I have worked on the other. My most recent programs look much better because of the work I have done on creating Gnostica. I believe I still have much to learn about both, and I will enjoy them both all the more for it.

Now I need to program a game.