更新你的游戏


很幸运,通过GIT可以很容易地让你的Evennia服务器保持最新。如果你还没有安装它们,请参阅“准备开始”让一切都运行起来。有很多方法可以让你在更新时得到通知:你可以订阅RSS源或手动检查http://www.evennia.com上的源,你也可以加入Evennia提交记录群(国内无法访问),它会在服务器更新时给你发电子邮件。

当你想要更新本地程序,假如你已经有命令行客户端,只需 cd 进入你的 evennia 根目录,然后键入:
git pull
如果你使用的是图形化的客户端,你很可能需要定位到 evennia 目录,右键单击并找到客户端的pull功能,或者使用菜单中的pull功能(如果有的话)。

你可以用以下命令查看最新的变化
git log
或使用图形客户端中等效的命令。你也可以在这里在线查看最新的变化。


迁移数据库架构

当我们改变了上游的Evennia数据库结构(比如增加了新功能),你将需要迁移现有的数据库。当发生这种情况,git log 的信息会明确地指出来(它会写一些诸如 “执行迁移”之类的话)。数据库的更改也会在Evennia的邮件列表(国内无法访问)中公布。

当数据库架构发生变化,你只需要前往 game/ 目录并执行
python manage.py migrate
这将会使用 South 将数据库迁移到新版本。就是这样。即使没有变化,执行迁移也是安全的。


重置数据库

如果你想让一切从头开始,没有必要重新下载Evennia或类似的东西,你只需要清空你的数据库。一旦完成,你就可以回到“准备开始”第2步中所描述的状态。

首先要停止正在运行的服务器
game/python evennia.py stop
如果你使用的是默认的 SQLite3 数据库(要改变这个你需要编辑 settings.py 文件),数据库实际上只是 game/ 目录中一个名为 evennia.db3 的普通文件。简单地删除这个文件——仅此而已。

无论你使用何种数据库系统,你都可以通过 game/manage.py 来重置你的数据库。由于Evennia包含了许多独立的组件,你需要清除所有组件的数据:
python manage.py reset server typeclasses objects players scripts comms help web auth
如果想要更直接的控制,Django提供了一个简单的方法来启动数据库自身的管理系统:
python manage.py dbshell
例如使用MySQL,你可以这样做(假设你的MySQL数据库名为“Evennia”):
mysql> DROP DATABASE Evennia;
mysql> exit


关于架构迁移的更多信息

当Evennia更新了数据库架构(也就是修改了数据存储在数据库中的方式),你必须相应地更新现有的数据库以匹配变化。如果你不这样做,更新后的Evennia会报错说它不能正确读取数据库。虽然随着Evennia日趋成熟,数据库架构的变化会越来越少,但这有时仍然会发生。

一种处理方法是使用数据库命令行手动将更新应用到数据库。这通常意味着需要添加或删除新表或字段,并可能需要转换现有的数据以符合新Evennia版本的要求。很明显,这容易变得繁琐且容易出错。如果你的数据库不包含任何重要数据,最简单的方式可能就是重置数据库并重新开始,而不是很麻烦地去转换它。

进入South。South会跟踪数据库架构的变化并且为你自动应用它们。基本上,只要架构发生变化,我们都会随源码发布名为“migrations”的小文件,这个文件可以告诉 South 该如何实施迁移,这样你就不必手动执行操作了。


(原文:https://github.com/Evennia/evennia/wiki/Updating Your Game    翻译:卢铱俊)