接入程序和服务器


Evennia由两个进程组成——接入程序和服务器,你既可以在游戏里也可以在命令行中控制它们,详见这里

如果你不明白为什么要这样做,一分为二的主要目的是让玩家连接到接入程序,而让MUD在服务器上运行,这样我们就可以在不断开玩家的连接的情况下重新启动、重新加载游戏(服务器部分)。

接入程序和服务器的布局

服务器和接入程序通过AMP(异步消息协议)连接在一起,它可以让这两个程序无缝通信。


接入程序和服务器的会话

主要文档:会话

接入程序会用它能够理解的协议(如telnet、ssh、webclient等)接收并处理新玩家的连接。当新连接建立时,会在接入端建立一个接入会话。会话对象会依所用协议的不同而有所不同,但一些最基本的属性是所有会话都通用的。

这些公共属性通过AMP从接入程序传送到服务器,通知服务器有一个新连接建立了,服务器端会为此建立一个服务器会话。服务器会话的类型只有一种,不管用户以什么方式连接,服务器会话的样子都一样。

至此,AMP两端的服务器会话和接入会话建立了一一对应的连接。抵达接入会话的数据会发送给对应的服务器会话,反之亦然。

在某些情况下,接入端和服务器端的会话是“同步”的:
  • 当玩家关闭他们的客户端,终止了接入会话,接入程序会和服务器进行同步,以确保对应的服务器会话也被删除。
  • 当玩家在游戏中退出,终止了服务器会话,服务器会和接入程序进行同步,以确保彻底关闭接入会话。
  • 服务器在重新启动、重新加载、关机时,服务器会话会复制到(“保存到”)接入程序中。服务器重启后,这些数据再由接入程序返回过来,这样它们就再次同步了。这样做可以让玩家的登录状态及其他重要连接信息在服务器重启时不会丢失(当然,接入程序不能同时停止运行)。


会话处理程序

接入程序和服务器都各有一个会话处理程序负责管理连接。这些处理程序掌握了通过AMP桥传递数据的所有方法。所有类型的会话都保存了指向各自处理程序的信息(该属性名为 sessionhandler),使它们能够传递数据。如果想要添加新协议,请参见协议文档获取详细信息。


(原文:https://github.com/Evennia/evennia/wiki/Portal and Server    翻译:卢铱俊)