Skip to content
changnet edited this page Nov 11, 2020 · 5 revisions

模块

设计该服务器的时候,功能是按模块来做的,而不是微服务。比如技能模块、背包模块、好友模块...

模块的构成

  1. xxx_cmd.lua(处理协议回调)
  2. xxx_header.lua(宏定义文件)
  3. xxx_mgr.lua(对象管理文件)
  4. xxx.lua(逻辑文件)

Lua本身是没有面向对象的写法的,而本服务器则是按面向对象来设计的。因此在协议回调这一块,没有太好的方法能让底层直接回调到正确的对象。xxx_cmd.lua就是处理该模块协议回调的,同时作为入口文件,引用对应的逻辑文件。

xxx_mgr.lua作为管理文件,在做一些不以玩家为中心的复杂系统才需要。比如公会,需要管理各个公会对象。以玩家为中心的系统,通用是由玩家管理的,不需要这个文件。这个文件也是以对象来设计的。

xxx.lua逻辑文件需要采用面向对象的写法,文件数量和命名则没有规定,根据需求来做。

是否需要面向对象

对于大部分模块来说,都是有自己的数据的,用对象来做比较合适,比如邮件。但是有部分模块,尤其是一些零碎的小功能,本身只有逻辑(或者把数据存到其他模块上了),那么用过程就比较合适,因为过程只是一个函数,可以直接注册协议、事件回调。

总之,各有利弊,用哪个具体分析,也可以混合使用

Clone this wiki locally