Tuesday, December 16, 2008

Notion: Creation-time versus Play-time

In computer programming, there is the difference between compile-time and run-time. To create a program, the author first writes the instructions in a particular programming language. But a computer does not understand those instructions directly; they must be translated into binary machine code relevant to that particular computer hardware. The translation from the author's source code to executable machine code is called compiling. Once an executable program has been compiled, it can then be run. It is during run-time that the program actually does what it was written to do.

While compiling, the compiler can do a lot of error-checking--making sure that the syntax is correct, confirming that the data types for different variables are correct, etc. It can also link in other libraries or modules. It can optimize the program so it runs more efficiently. Generally, the more error-checking done at compile-time, the fewer errors encountered at run-time.

Not all programs are compiled in a separate stage like this, however. Some are interpreted: translated into machine code line-by-line from the source code at run-time. (This is a spectrum, of course: many modern languages compile to an intermediate form and are then interpreted from that form at run-time.)

The point of all this is: there's stuff you can validate at compile/creation time, and then there's stuff you validate at run/play time.

This is the same for RPGs. Something like D&D is like a compiled language: it takes hours to translate levels and skill ranks and equipment lists into all the particular modifiers listed on a character sheet. This is not necessarily a bad thing: character creation and optimization can be a very enjoyable activity, especially for power-gamers. And, as with programming, the more error-checking of modifiers you can do beforehand means fewer errors during play time.

On the other hand, a game like Risus is rather interpreted. There's still some authorship beforehand, but characters are represented as cliches. How those cliches then translate into particular skills or feats is actually determined during game time.

Overall, I'm a fan of compiled over interpreted, both for my programming languages and my RPGs. There's an initial overhead, but things seem to run smoother if as many details as possible are composed and validated beforehand. But this is just a preference.

Hopefully this difference/metaphor proves useful when considering RPG design.

No comments: