将MUX作为标准


Evennia是一个可高度定制的代码库,很多命令的结构和样式都可以修改。比如你喜欢DikuMUD处理事务的样式,你可以用Evennia模仿它,变成LPMud或MOO的样式也可以,你甚至可以设计一套全新的风格来配合你梦想的MUD游戏。

不过我们会提供一套默认的样式,默认的Evenniad的设置类似于MUX2以及它的亲戚PennMUSHTinyMUSHRhostMUSH。在默认情况下,用户界面和建造命令都是在模拟这些“Tiny”派生版(MUX2、Penn等等)。我们认为这些代码库已经在建造和管理方面探索出了一套不错的方法,我们也希望从这些社区转来使用Evennia的新用户能够对此感到熟悉。

然而,在管理员如何扩展、改进游戏方面,Evennia采取了完全不同的立场。所有的游戏扩展都是通过Python模块完成的,这和Evennia的其余部分一样,而不是去建立一套特定的游戏语言(软编码)。因为可以充分发挥python这种成熟高级语言的力量,管理员在扩展游戏方面的能力几乎是无限的。在这里你可以看到我们对MUX软编码看法的更详细的讨论。


文档规范

默认命令集中所有命令的文档字符串都有着类似下面的格式:

      """
      简要说明

      Usage(用法):
        关键字[/开关, 如果有的话] <必备参数> [<可选参数及类型>]

      Switches(开关):
        开关1 - 描述
        开关2 - 描述

      Examples(示例):
        用法示例及结果输出

      命令的详细说明

      """
所有默认命令的文档字符串都用两个空格缩进。如果没有开关和示例,和它们相关的部分可以省略。以下是昵称命令的例子:

      """
      Define a personal alias/nick(给一个人加别名/昵称)

      Usage(用法):
        nick[/switches] <nickname> = [<string>]
        alias              ''

      Switches(开关):
        object   - alias an object(给物体起别名)
        player   - alias a player(给玩家起别名)
        clearall - clear all your aliases(清除所有的别名)
        list     - show all defined aliases (also "nicks" works)
                   (显示定义的所有别名(效果和"nicks"一样))

      Examples(示例):
        nick hi = say Hello, I'm Sarah!
        nick/object tom = the tall man

      A 'nick' is a personal shortcut you create for your own use [...]
      (“昵称”是你给某人创建的、仅供自己使用的简短名字……)

      """
对于需要参数的命令,如果输入命令时没有带任何参数,我们的做法是它应该返回用法说明。因此,对于这样的命令,命令主体应该包括类似下面的处理方式:

    if not self.args:
      self.caller.msg("Usage: nick[/switches] <nickname> = [<string>]")
      return


用MUX会怎么样?

最初,我们创建默认命令的方式是以MUX2为基础建立命令语法规则,因此许多默认命令有着与MUX命令类似的语法和参数。但是它们在系统性、可读性、可用性方面有着太多的差异,最终我们还是放弃了(说实话,MUX语法的某些地方实在难以捉摸)。所以现在的默认命令集可以看作是一种“类似MUX”的语言 —— 整体感觉相似,但具体细节差别很大。