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

来源:互联网 发布:mac 局域网视频广播 编辑:程序博客网 时间:2024/04/29 23:17

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

 

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

 

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

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

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

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

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

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

实现:

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

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

原创粉丝点击