服务器设置


Evennia一装好就能运行,不需要事先设置。但也可以通过几个重要途径定制服务期,还可以用自己的插件扩展它。


配置文件

所有文档中所说的“settings(配置)”文件指的都是 game/settings.py。它是在第一次执行 manage.py syncdb 时自动创建的(参见准备开始)。settings 文件实际上是一个普通的Python模块。开始时它几乎是空的,只是从 src/settings_default.py 导入了所有的默认值。

你不应该修改 src/settings_default.py,而是应该把想要修改的变量复制粘贴到 settings.py 中,并在那里编辑它们。这会覆盖先前导入的默认值。

在代码中,可以通过以下方式访问 settings:
    from django.conf import settings
    # 或(更简短的):
    from ev import settings
    # 例子:
    servername = settings.SERVER_NAME
每一项设置都被视作导入的 settings 对象的属性。在 ev.settings_full 中你可以看到所有可用的选项(它还包括了Evennia默认没有使用的高级Django配置)。

需要指出的是,这样导入到代码中的 settings 是只读的,你不能在代码中修改 settings。更改Evennia配置的唯一方法是直接编辑 game/settings.py。在绝大多数情况下,你需要重新启动服务器(可能还需要包括接入程序)才能让配置生效。


game/gamesrc/conf 目录

game/gamesrc/conf/examples/ 目录包含了定制Evennia的模块的模板。与往常一样,你需要将模板复制到上一层目录(game/gamesrc/conf/),编辑该副本而不是原始文件。然后你需要修改 settings 文件,设置变量指向你的新模块。每个模板的头部都有详细信息介绍该如何使用它,以及需要修改 settings 中的什么变量才能让Evennia定位到新模块。

  • at_initial_setup.py —— 这可以让你添加在初次启动时调用的自定义方法,它只会在Evennia首次执行时调用(同时会创建用户#1和虚空)。它可以用来开启全局脚本,或创建需要一开始就运行的与系统或全局有关的东西。
  • at_server_startstop.py —— 该模块包含两个函数,Evennia会在每次服务器启动和停止的时候分别调用它们,这里的停止包括因重新加载、重启或完全关闭而引起的停止。这里适合放置自定义处理程序的启动代码,以及其它必须在游戏中运行但无法由数据库提供持久性的东西。
  • connection_screens.py —— 该模块中的所有全局字符串变量都会被Evennia认为是欢迎界面,在玩家初次连接时显示给玩家看。如果在该模块中有多个字符串变量,则会随机选取一个。
  • lockfuncs.py —— 可以在该模块中存放你自己的“安全”锁函数供Evennia的锁系统使用(在其它许多模块中也可以存放)。
  • mssp.py —— 这里包含了你游戏的元信息。MUD搜索引擎会用到它(通常你需要向搜索引擎注册),用来显示你运行的是什么游戏以及相关的统计数据,比如在线玩家数量和在线状态。
  • portal_services_plugin.py —— 可以在这里将自定义的服务或协议添加到接入程序。它必须定义一个Evennia在启动时调用的函数。在这里可以添加任意数量的服务插件模块,只要定义了就都会被导入。更多信息可见这里
  • server_services_plugin.py —— 与上面类似,但它用于向服务器添加新的服务。更多信息可见这里

还有一些Evennia的系统可以通过插件模块进行定制,但它们在 conf/examples 中没有模板:
  • 命令解析器 —— 可以用来完全替代Evennia默认命令解析器的自定义模块。它所做的工作就是将传入的字符串分割为“命令名”和“其余部分”。它还要处理一些其他事务,如命令不匹配、多重匹配及其它一些事情,这些事可能要比听起来更复杂。默认解析器的通用性很强,所以你最好修改更高层级的东西,而不是直接修改它。
  • 搜索返回处理程序 —— 这可以用来代替Evennia在游戏中的大多数搜索方式(最重要的是命令中的 self.caller.search)。它还需要处理返回错误信息。
  • 多重匹配处理器 —— 这个插件可以替换搜索出多个匹配结果时的处理方式。默认的系统可以通过编号来区分同名的匹配,比如把“2-ball”解释为两个“ball”对象中的第二个。


ServerConf

有一个名为ServerConf的特殊数据库模型,用于存储服务器内部的数据和设置,比如当前玩家数量(为了提供给网页服务器使用)、启动状态以及许多其他的东西。在服务器核心之外很少会用到它,但如果你是Evennia的开发者,最好能知道它。


(原文:https://github.com/evennia/evennia/wiki/Server-Conf    翻译:卢铱俊)