加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

游戏服务器开发如何组织业务逻辑的处理结构?

发布时间:2018-12-19 19:25:44 所属栏目:外闻 来源:游戏技术网
导读:游戏服务器就是对游戏数据的处理及逻辑验证,一般的步骤就是: 1,接收客户端请求的数据 2,根据请求的数据找出是哪个业务的请求 3,处理业务的请求 4,更新被修改的数据。 5,返回数据给客户端。 所以按照以上的步骤,我们现在只关心业务逻辑的处理流程,

游戏服务器就是对游戏数据的处理及逻辑验证,一般的步骤就是:

1,接收客户端请求的数据

2,根据请求的数据找出是哪个业务的请求

3,处理业务的请求

4,更新被修改的数据。

5,返回数据给客户端。

所以按照以上的步骤,我们现在只关心业务逻辑的处理流程,这里设置一个前题,就是服务器的数据都是在内存中的。内存中的数据与数据库的同步由底层的其它系统处理。在内存中,我们创建并缓存一个对象Player,它包括所有模块的数据,比如背包,个人商店(Shop),技能(Skill),武将,副本 等等,Player只是数据类,里面不应该包括任何逻辑方法,所有的逻辑方法操作应该在Manager中处理。比如ShopManager。

游戏服务器开发如何组织业务逻辑的处理结构?

游戏服务器开发如何组织业务逻辑的处理结构?

业务处理流程

比如我们使用netty做为网络层的通信框架,在Channel的Handler中收到客户端请求的数据,根据请求的消息号,调用处理业务的Handler。在业务的Handler中验证参数的合法性,然后再调用业务逻辑的Service层,Service层负责的业务流程的处理,比如购买商品,第一步判断商品是否已卖完,第二步判断剩余数量是否足够,第三步判断是否已购买过,第四步判断钱是否足够,第五步是付钱,第六步是发送购买获得的道具。这里面应该都是方法的调用,而没有任何数据的处理,,数据的处理由第三层的Manager管理。Manager对应中声明一个参数Player,在创建Manager对象时传入,不同的模块数据之间交互都由Manager处理,Manager中的方法职责单一,只负责处理一件事情。每个用户的每个模块Manager对象各一个。用户之间不共享,这样可以减少参数的传入。这样更加方便面向对象的设计。方便对业务逻辑进行单元测试。

游戏服务器开发如何组织业务逻辑的处理结构?

Service层

每个用户的每个模块的Manager实例存储在当前用户业务逻辑处理的线程的LocalThread中的HashMap中,这样方便管理又避免使用锁了。使用一个ManagerFactory对象统一管理Manager对象的创建和获取。

游戏服务器开发如何组织业务逻辑的处理结构?

【编辑推荐】

  1. 如何优化Android异步请求服务器数据?
  2. 你真的了解如何将Nginx配置为Web服务器吗
  3. 酸爽!我用这套无人值守安装系统瞬间搞定上百台服务器
  4. 服务器的 LinuxBoot:告别 UEFI、拥抱开源
  5. 为什么说Kubernetes是新的应用服务器?
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读