服务器如何工作
服务器进程
服务器启动脚本world.sh为每个服务器进程调用启动脚本,最初加载atavism.server.marshalling.Trampoline类,该类反过来加载读取一组Python脚本的“启动类”(在world.sh中定义)文件)。对于消息域服务器,启动类为atavism.msgsys.DomainServer。对于所有其他服务器,启动类是<class> atavism.server.engine.Engine </ class>。
除Message服务器外,每个服务器进程都运行一个或多个服务器插件。服务器插件是一个扩展atavism.server.engine.EnginePlugin的类。服务器可分为核心基础架构服务器和AGIS插件服务器,核心基础架构服务器为世界提供基础,AGIS插件服务器提供可扩展,修改甚至替换的游戏性和其他功能。
脚本和消息传递配置文件
当它们启动时,服务器进程读取config目录中的脚本,包括atavism_server / config / common目录中的脚本,以及atavism_server / config / world目录(或特定世界的等效目录)。如果服务器进程尝试读取不存在的脚本,它将记录警告并继续。
消息配置
所有服务器进程都读取以下Python脚本以配置消息传递:
- atavism_server / config / common / aomessages.py定义了Atavism消息目录(核心服务器消息)。
- atavism_server / config / world / worldmessages.py,为世界定义其他自定义消息。
- atavism_server / config / world / worldmarshallers.txt注册要传递(或作为)消息的特定于世界的类。
此外,每个服务器进程都会在atavism / config / common / process-name-ads.txt中“公布”它发布的消息。 Atavism在atavism_server / config / common / aomarshallers.txt中定义了一组编组对象。
记录
服务器在atavism_server / logs /目录中生成日志,auth服务器日志显示在auth文件夹中,world登录world文件夹。每个进程都打印出自己的日志,其中包含一个附加日志,该日志将来自不同进程的所有错误汇总在一起。
auth.properties和world.properties文件包含日志的一些设置,例如日志文件的日期,如果它们在达到每个文件的KB值时应该旋转,等等。
域名服务器
Message Domain Server提供了一个消息注册表,使所有其他服务器能够相互通信。它不是服务器插件,而是它自己的特殊进程。
基础结构服务器插件
Atavism基础结构服务器提供其他插件服务器使用的基本服务。他们包括:
登录管理器
处理角色创建和选择。
世界管理
控制世界的地理位置以及PC和怪物能够看到的东西。
代理服务器
处理与Atavism / Unity客户端的所有通信,并将消息发送到其他服务器。
场景服务器
加载和管理世界场景。
AGIS服务器插件
AGIS插件服务器是:
战斗服务器
控制玩家和怪物之间的战斗以及相关功能。运行Combat,Grouping和ClassAbility插件。
物件管理器
创建和管理对象和对象持久性。运行Inventory插件。
怪物服务器
控制怪物和任务。