Evennia介绍
MUD(最初是 Multi-User Dungeon(多人地下城),以及后来的变种 Multi-User Dimension(多用户维度)和 Multi-User Domain(多用户域)),发音为/mʌd/,是一种主要使用文字描述的多人实时虚拟世界。MUD游戏结合了角色扮演游戏、砍砍杀杀,PVP(玩家对战玩家)、互动小说和在线聊天等多种元素。玩家可以阅读或查看的房间、物体、其他玩家、非玩家角色,并在虚拟世界中执行动作。玩家通常靠键入类似自然语言的指令来和其他玩家或世界互动。
—— 维基百科
(以上是英文维基百科的解释,中文维基百科的解释可见这里。——译者)
如果你正在阅读这篇文字,你很可能正梦想着建立并运行一个独属于你的以文字为基础的大型多人在线游戏(MUD、MUX、MUSH等)。你可能只是刚有这样的想法,也可能建立个完美游戏的想法已经萦绕在你脑海很多年了。。。你知道如果它能构造出来会有多么美好。我们知道你的感受。这就是为什么Evennia会出现的原因。
Evennia原则上是一个MUD构建系统,有一个基于Python的代码骨架,并且可为各种类型的游戏提供高度的扩展性。“骨架”在这里是指我们尽可能少地提供与具体游戏有关的东西。这样是为了便于我们提供基础的构建材料,比如物体、角色、房间、管理及构造游戏的基本命令等。我们不预设任何战斗规则、敌人AI、种族、技能、以及其他会在不同游戏之间有差异的东西。可能在将来我们会提供一些类似的系统,但这些只是可选的项目。
不管怎样,我们所做的是给枯燥的数据库、网路连接、幕后管理等那些不论何种网络游戏都需要的东西提供一个坚实的基础。Evennia可以为游戏提供充分的持久性支持,这意味着在游戏中你丢在地上的东西在经历了多次服务器重启之后依然会在原来的地方。通过Django我们支持众多不同的数据库系统(如果你使用缺省设置,系统会为你自动建立一个数据库)。
我们的服务器借由充分发挥Python的力量而具备一些显著的优点。你的所有代码,从物体设定、自定义命令到AI脚本、经济系统,都是由普通的Python模块完成的,而不是使用专门化的脚本语言。游戏脚本使用的就是编程所用的高级语言,这一特性使你可以构建出非常个性化的游戏。
服务器带有一套类似于MUX命令集的玩家命令集。我们的目标并不是要建成一个MUX服务器,但我们总得有一些缺省的设置(看这里以了解我们最初的动机)。想要添加或删除命令都很容易,或者可以模仿其他系统建立命令规则,如Diku、LP、MOO等。或者为什么不自己建立一套更新更好的命令系统呢?
我能试试它吗?
这里有一个Evennia的演示:你可以直接用你的浏览器连接到http://demo.evennia.com(国内可能无法正常访问——译者),或者如果你喜欢用第三方的mud客户端,你可以连接到176.58.89.89,端口为4444。
有不少基于Evennia的mud正在开发,不过他们还没有上线。如果你想试着安装Evennia(这并不难),它有自己的教程:它演示了一种构建方法并且建立起一个简单的单人任务给你试玩。这个教程只需要一句游戏命令就可以安装(需要先安装好Evennia,然后在游戏中执行一句命令。——译者),详情看这里。
这里是Evennia的截屏。
特性的简要介绍
技术
- 游戏开发主要是通过服务器加载的普通Python模块完成的,特殊的服务器功能通过重载特定的钩子来实现,服务器引擎会在适当的时候调用它们。
- 游戏中的所有东西都是简单的Python类,他们在幕后处理与数据库交互的事物,你不用操心这些事。
- 命令集保存在独立的物体(也包括角色)中,可提供特定的、与物体相关的命令。命令集在线更新、修改,可以在玩家联机游戏时扩展或限制玩家可输入的命令。
- 脚本可以提供异步或定时执行功能,脚本也可以持续执行。有简单的机制处理线程,特别是长时间运行的线程。
- 游戏内的交流频道是模块化的,可以为任意功能做修改,包括邮件系统、所有消息的完整记录。
- 服务器可以完全地重新启动、重新加载而不会造成玩家掉线。
- 玩家可以自由地与游戏中的对象建立连接或断开连接,这为实现多角色系统和傀儡系统提供了便利。
- 任何玩家都可以在不切换账号的情况下同时控制多个角色或物体。
- 可以给不同地区或不同分组的物体添加标签。
- 所有源代码都有丰富的文档。
- 拥有单元测试组件,包括对缺省命令和插件的测试
默认内容
- 物体、角色、空间、出口的基类。
- 基础的登录系统,为了简化,将用户的登录名作为他们游戏内角色的名字。
- 类似MUX的命令集,包括管理、建造、傀儡、频道和社交等功能。
- 游戏内建有教程。
- 可选的捐赠目录中附有代码,包括其它的登录方式、菜单、角色生成等。
支持的标准和协议
- 针对mud扩展的Telnet协议(MCCP, MSSP, TTYPE, MSDP)
- ANSI,xterm256色
- SSH
- SSL
- TCP/Comet,包括了JavaScript的浏览器客户端
- HTTP,网站由内建的web服务器提供支持,和游戏连接的是相同的数据库。
- IRC/IMC2 外部的IRC或IMC2频道可以连接到游戏中的聊天频道。
- RSS频道可以同步发送到游戏中的频道。
- 支持多种不同的数据库(SQLite3、MySQL等)
如需要更详细的信息,请看这里。
使用Evennia所要掌握的知识
假设你已经让Evennia运行起来了(参见快速开始),而且已经启动了服务器、连接了你选的客户端,以下是按不同的技能和需求所要掌握的东西。
我不懂(或者不想做)任何的编程,我只想运行游戏!
Evennia自带有一套缺省的命令集,可供Python的新手或需要立即上手游戏的人使用。缺省的Evennia足够运行一个简单的“Talker”(一个兴起于80年代的网络聊天系统——译者)类型的游戏,你可以新建、描绘房间及基本物体,建立聊天频道,做表情以及其他适用于社交类、自由形态类MU游戏的东西。战斗、敌人以及其它游戏元素没有包含在内,所以如果你连一点代码都不想写的话,你只能拥有一个非常基础的游戏。
我有一些基础的Python知识,或我愿意学习
Evennia的源码有充足的文档并且可以在线查看。而且我们有内容丰富、带有很多例子的在线手册。但即便Python是一种公认的非常容易上手的编程语言,如果你是编程的新手,你仍需要花力气学习。你可以从Python的初学者教程开始(如果你搜索一下,在网上多的是),这样你至少可以了解你正在看的东西。在我们的链接页面中也有一些阅读建议。想要用Evennia高效地编写你梦想的游戏,你并不需要成为Python的专家,但你至少需要能够阅读示例代码,包括至少以下一些Python基础知识:
当然,你熟悉的东西越多,你就能越快地掌握。只要具备基础知识,你就能够定义你自己的命令、创建物体、而且通过使用基本的脚本让你的世界活动起来。你可以通过Evennia提供的例子建立起一个完整的高级个性化游戏。
我很了解Python,而且我愿意使用它!
即使开始时你只是一个Python的初学者,在做了一段时间的游戏之后你就很有可能达到这样的水平。具备了丰富的Python知识之后,你就可以充分运用Evennia的强大功能。除了能够修改命令、物体、脚本之外,你还可以建立各种东西,从高级的对手AI到经济系统、从复杂的战斗和社交游戏到重定义命令、玩家、空间和频道的运作方式。由于你是通过导入普通Python模块来编写游戏的,你做起事情来受到的限制很少。
如果你碰巧还知道一些网络编程(HTML, CSS, Javascript),那你还可以玩玩网页实现(有一个网站和一个mud的网络客户端)...
现在,你可以继续浏览在线文档以更多地了解Evennia,或者可以跳到教程开始上手写代码。如果你想继续阅读,这里有一篇更长的关于Evennia的文章,在电子期刊Imaginary Realities(虚拟现实)的第1期第5卷。