If you can express a game to a computer (through the act of programming), then there must be a language (as in a language produced by a generative grammar) that can describe that game and all games that can be similarly expressed. You could say that such a language is a programming language—which is true—but we can clearly make a non-programming language that can succinctly and precisely express game mechanics of any game that can be programmed into a computer.
A game, as it exists and is played, is just billions of ones and zeroes on your harddisk. All of the game assets and compiled code that resides on your machine expresses a game to your computer. Your computer reads and interprets these chunks of binary data to put certain pixels on your screen at a certain time depending on a myriad of game rules and your input. The compiled code and assets on your machine represent everything that the game can be, as an entity. They are a complete expression of the game.
All modern computers (computers that use the von Neumann architecture) are simply glorified Turing Machines. A programming language is a way to tell that overgrown Turing Machine what to do. Any problem solvable by a computer can be expressed as a Turing Machine whose behavior is specified by a recursively-enumerable language. Programming languages are nothing more than recursively-enumerable languages.
Games are simply creative expressions of problems through the use of programming languages, graphics, and sound. If you can program a game into a computer, there must be a simpler language you can invent to specify games directly.
Let’s call this universal game language GLang. Here’s what we know about GLang without even doing any heavy lifting:
- GLang will be no more complex than a Turing-complete programming language (a recursively-enumerable language) like C, C++, Java, Python, Ruby, Perl, etc.
- The expression of a game in GLang will be shorter (probably by several orders of magnitude) than the code of the game, because games have to have a lot of code that manages assets such as graphics and sound, runs the server, and does all kinds of non-game-mechanic-related stuff.
- A game expressed in GLang will be specified in a clear, precise, unambiguous, machine-readable way.
- A specification in GLang can be verified as a complete expression of a game. Unfortunately, it’s not certain that you’ll be able to verify that it’s a complete expression of the game you want to express—that’s a chicken-and-egg problem, really.
- Though the terminology different game designers use to describe their designs won’t all match up, we’ll have a distinctly and precisely defined set of terms for each game by the nature of the specification of that game in GLang. It doesn’t matter what you or I specifically call something (“stat” or “attribute” for instance), the game mechanic will be operationally defined by its relationships to other mechanics.
It’s clearly possible to make GLang a reality—it’s just a matter of applying ourselves to the problem and doing thinking damn hard for a damn long time. Forward-thinking designers like Raph Koster and Daniel Cook have begun work on ways to succinctly and clearly describe games. Koster has Game Grammars and Cook has Skill Atom Chains, and there's also Stéphane Bura's attempt. I’m fascinated by this concept; I’ll be giving it a shot myself.