There is a trend in my development process for programming game mechanics. It begins with an idea for a mechanic. For example, a game with a ship firing different bullet types in any 2D direction. The first step is to take the idea for the mechanic and write some code to bring it from the notebook to the screen. The first version of this code always makes use of a lot of random variables and the simplest visual properties like size and color. In the example, the first version of this code would have bullets, represented by circles of random size and color, firing continuously in random directions outward from the ship. I do it this way because random variables and these basic visual properties are some of the easiest tools in the game programming toolbox, and it allows me to get some code working as quickly as possible.
Next, I incrementally remove the bits of randomness from the mechanic and replace them with specific behaviors according to the design of the game. The process of modifying code incrementally is the standard process for all iterative software development, and it works exceptionally well for game programming. In the bullet firing example, one iteration might be to change the random firing direction to always fire toward the position of the player’s cursor. Another iteration might be to replace the random bullet colors with three specific colors which represent three different weapon types. Iteration continues until the code matches up with all of the game play ideas, and then usually continues further as changes and refinements are made to the game mechanics. This process lasts until I am satisfied that the game produces the desired player experience.
I am hypothesizing that this trend is not specific to my own process of developing games, but it is indicative of something more general I call “game design entropy”. Entropy is a concept from a few different branches of science, and generally refers to the measure of disorder in a system. When the mechanics and interactions of a game are first created in computer code, the pervasive random variables result in systems containing a lot of entropy. As development continues, some or all of the entropy is deliberately removed by the creators in order to craft the best possible game experience out of those systems. In this way, the process of constructing a game can be viewed as removing entropy from a system. If it was possible for humans to remove entropy from physical systems, we would truly be masters of the universe.