One of my most deeply-held beliefs recently gelled for me. Throughout my career, I have devoted my most serious design efforts towards working out the algorithms that form the foundation of my games. My thinking here is so deeply held that only recently have I realized that other people don’t think that way. They think about games or interactive storytelling in terms of graphics, mechanics, user experience, gameplay, and all manner of other minor details. They seem to think that game design and interactive storytelling are just a matter of putting all the right features in place.
To make my point, I’ll use an analogy based on the Frankenstein meme. The basic strategy used by Dr. Frankenstein was to stitch together a lot of pieces of the body (features) and then ‘animate’ them with electricity. To him, a human being is a collection of pieces: arms, legs, kidneys, lungs, heart, brain, and so forth. Just put them together, give them a jolt of electricity, and you’ve got yourself a human being.
That’s entirely wrong, and it could never work, because the human body is not a collection of pieces; it’s a system of processes. To build a human body, you start with the most elementary processes: cell metabolism. Once you’ve got the biochemistry of a cell working, then you have to design lots of specialized cells: muscle cells, cells that manufacture and secrete special hormones, nerve cells, blood cells, and on and on.
Once you’ve developed the ability to manufacture all the different kinds of cells, you need to start assembling them system by system rather than piece by piece. Perhaps you start by putting together a skeletal system, then adding a circulatory system, a nervous system, musculature… things get very complicated here. But the key point is that you build it system by system rather than piece by piece.
In exactly the same manner, games and interactive storytelling are not assemblages of features, they are systems of processes. People do build Frankenstein games by just stitching together a bunch of features, but the results are as clumsy and stupid as the Frankenstein monster was. If you want to do it right, you’ve got to stop thinking in terms of the conventional features listed above and instead think in terms of the processes that you will build into the design.
Those processes are expressed as algorithms. And in fact, algorithms comprise the true content of ANY piece of software. A word processor is NOT a window full of text; it’s a system for organizing your keypresses and mouse clicks into a good document. The Internet is NOT a collection of servers with mountains of data; it’s a system for moving information. A game is NOT a collection of images, animations, and music; it is a system of simple causes and effects. As you play a game, you learn the relationships between your actions and the effects of your actions. You adjust your behaviors to master the game. The appeal of the game lies in the relationships between actions and effects: in other words, the algorithms.
The realization that algorithms comprise the true content of software explains why educational software (or ‘serious games’) have performed so dismally. I remember 40 years ago when there was so much excitement about the educational potential of computers. During the last four decades, computers have revolutionized so much of our lives, but their impact on education remains startlingly weak. A modern office looks very different from offices 40 years ago, but modern classrooms look pretty much the same as they did back then. Almost everybody who works in an office spends much of their time on a computer, but students in classrooms spend much less time using computers.
Why has educational software failed so miserably to live up to the glorious visions we anticipated so excitedly? I think that it’s because designers don’t think in terms of algorithms; they think in terms of facts. They frame the problem in the same terms used by the old non-interactive methods of yesteryear. When you insist on thinking of an automobile as a “horseless carriage”, you automatically limit your thinking in a way that makes it impossible to appreciate the true potential of the invention.
The paradigm shift required to properly utilize the vast educational potential of the computer is to shift from teaching facts to teaching processes. Courses should be centered on systems rather than subjects. This is fairly easy to grasp with a subject like biology. I would replace the current curriculum with a series of courses based on biological systems: metabolism, locomotion, nervous system, circulatory system, evolution, and so forth. Yes, students would still have to learn the facts that apply to the systems, but they would learn those facts in the context of their usage. There’s no point in learning the size of the heart until you appreciate the relationship between heart size and circulatory capacity.
The Centrality of Algorithms
Now I come to the main point of this essay: that the true content of all software lies in its algorithms. All that other stuff — user interface, graphics, data structures, animations — is merely the window dressing placed around the algorithms to make them digestible. The algorithms are the core of the software.
We have been slow to accept this realization because algorithms are expressed in mathematical form and we all (except for a few twisted minds) hate mathematics. Most people would like to forget mathematics; to them, it was a torture they had to endure back in school, and never wish to cross paths with again. This is what is holding back the computer revolution. Until we get a corps of designers who are comfortable designing algorithms, our software will continue to be bland nothing-burger pap. We won’t have genuine software auteurs until they can speak the language of processes.
I suspect that few people will truly grasp the importance of this essay. My fear is that, because this all seems so obvious to me, I am cutting corners on the explanation that will leave many readers unconvinced. I would greatly appreciate constructive criticisms on this point. Please use the contact form at the top of this page.