Monday, November 26, 2007

Macros in a Star Trek MMORPG

Originally Posted by Bean:
A macro in computer science is a rule or pattern that specifies how a certain input sequence (often a sequence of characters) should be mapped to an output sequence (also often a sequence of characters) according to a defined procedure.
With respect to the Computer Science terminology, you're not wrong. I would say your definition was perhaps slightly too specific, since macros can do other things than translating inputs to outputs. For example, if the macro facility includes looping constructs, macros can serve as counters. There's also the old-school understanding of a macro (from its "macroscopic" behavior) as a one-line statement that is expanded by an assembler or compiler into a sequence of native-language statements. In general, however, you've got the right idea with where macros are usually considered to fit into the overall hierarchy of software system complexity.

But I wasn't speaking in terms of our real-world computer science terminology, where I also usually prefer precision in language -- I was talking about how the word "macro" is used by online gamers. For them, the word "macro" has taken on the special meaning of "ways to automate my gameplay." My concern about even using the word "macro" around Star Trek Online is that calling small programs macros could lead current online gamers to believe that because "automating my gameplay" is what the term means in other MMORPGs, they ought to be able to use anything called a "macro" feature to automate their characters' actions in a Star Trek MMORPG as well.

That would be bad.

I'm strongly opposed to character automation in Star Trek Online. I don't think it even needs to be encouraged by the language of the game. Star Trek Online will not benefit from player characters being turned into bots and used for currency/loot farming. Calling little device-control programs "macros," IMO, would lead to current online gamers becoming loudly upset that macros don't work in ST:O like they do in those other games, and to demand that the system be "fixed" so they can bot themselves in ST:O, too. I'd really, really hate to see that happen (even if it's rationalized as "responsive customer service").

This doesn't mean I'm opposed to player characters being able to write small programs to control in-game devices in Star Trek Online. I not only support such a feature, I think it could be an excellent way to generate gameplay that extracts value from the Star Trek license. I've even suggested this feature myself in my Starship Operations in a Star Trek MMORPG essay. The hierarchy of programmed systems you suggested as an example sounds like a lot of fun to me -- I'm not sure how many other gamers would get into it, but I'm one!

The thing is, in the Star Trek universe terms like "program" and "routine" are used somewhat interchangeably (as we do when speaking loosely about programming). If we need a specific term for the kinds of small bits of control code that players might write, I suggest "subroutines." Not only is this usage found in Star Trek (as in TNG: "The Game" and VOY: "Equinox"), I believe it would fit very nicely into the programming terminology hierarchy that you suggested.

I think being able to write little programs to modify the behavior of devices would be great fun for Engineers and Scientists in Star Trek Online. I support making this a feature of the game.

All I'm asking is that we use some word other than "macros" to describe these programs. I like "subroutine," but I'm open to other suggestions.