网游中将聊天部分与游戏逻辑分离

考虑到现在的游戏服务器是在多CPU上运行的,为了更好的利用多CPU的功能,设想是将游戏中与逻辑关系不是很大的聊天部分分离出来,成为一个单独的服务器,从而提高游戏的业务处理速度,并且能充分利用CPU资源。

 

聊天分离后做成一个聊天服务器,使用的策略是用空间换时间。会将所用到的相关数据都放入共享内存中,使用KEY值进行查找/增加/删除。

 

通常的聊天服务器按聊天的类型可以分为:

全服, 国家,  地图,  同屏,  好友,  组队, 帮派,私聊

其中,对于地图,好友,帮派聊天消息,通过已建好的映射表,就可以快速分发聊天内容。

对于全服聊天消息,将聊天服务器上所有的角色都通知一遍就可以了。不用特殊处理。

对于对于国家聊天消息,如果国家数较少,可以使用循环查找的方法,找到相同的国家的角色则进行通知,否则跳过。

对于对于同屏,组队,私聊的聊天消息,可以通过由client上带相关角色的KEY值,聊天服务器通过查找KEY值进行快速分发聊天内容。

实现:

client在成功登陆游戏逻辑服务器后,聊天服务器会与client进行TCP长连接。这样client就就可以通过此TCP连接进行聊天消息的发送/接收了。

数据同步方面,有两种方法,因为聊天服务器与游戏逻辑服务器之间有TCP连接,所以可以通过此TCP进行数据的同步(安全,需要消耗游戏逻辑服务器的资源)。另一种方法是通过client与聊天服务器之间TCP连接进行数据同步(高效,但不安全,因为不用经过游戏逻辑服务器进行处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值