网游中将聊天部分与游戏逻辑分离
来源:互联网 发布:mac 局域网视频广播 编辑:程序博客网 时间:2024/04/29 23:17
考虑到现在的游戏服务器是在多CPU上运行的,为了更好的利用多CPU的功能,设想是将游戏中与逻辑关系不是很大的聊天部分分离出来,成为一个单独的服务器,从而提高游戏的业务处理速度,并且能充分利用CPU资源。
聊天分离后做成一个聊天服务器,使用的策略是用空间换时间。会将所用到的相关数据都放入共享内存中,使用KEY值进行查找/增加/删除。
通常的聊天服务器按聊天的类型可以分为:
全服, 国家, 地图, 同屏, 好友, 组队, 帮派,私聊 其中,对于地图,好友,帮派聊天消息,通过已建好的映射表,就可以快速分发聊天内容。
对于全服聊天消息,将聊天服务器上所有的角色都通知一遍就可以了。不用特殊处理。
对于对于国家聊天消息,如果国家数较少,可以使用循环查找的方法,找到相同的国家的角色则进行通知,否则跳过。
对于对于同屏,组队,私聊的聊天消息,可以通过由client上带相关角色的KEY值,聊天服务器通过查找KEY值进行快速分发聊天内容。
实现:
client在成功登陆游戏逻辑服务器后,聊天服务器会与client进行TCP长连接。这样client就就可以通过此TCP连接进行聊天消息的发送/接收了。
数据同步方面,有两种方法,因为聊天服务器与游戏逻辑服务器之间有TCP连接,所以可以通过此TCP进行数据的同步(安全,需要消耗游戏逻辑服务器的资源)。另一种方法是通过client与聊天服务器之间TCP连接进行数据同步(高效,但不安全,因为不用经过游戏逻辑服务器进行处理)
- 网游中将聊天部分与游戏逻辑分离
- cgame游戏逻辑部分
- 逻辑与界面相分离
- C++ 网络通信和游戏逻辑分离
- web游戏架构中的逻辑与一般请求的分离的初步构想
- 游戏聊天系统设计(客户端部分)
- 表示代码与逻辑代码分离
- 网络IO与逻辑处理的分离
- 逻辑代码与呈现代码分离原则
- 多线程第二步:渲染与逻辑分离
- 界面层与业务逻辑层分离
- 界面层与业务逻辑层分离
- 界面层与逻辑层分离
- Swift之控制器与业务逻辑分离
- 界面层与业务逻辑层分离
- 界面层与业务逻辑层分离
- Netty游戏服务器开发——利用Channel绑定机制 共享聊天服务器与逻辑服务器信息
- 百度酝酿进军网游 或与游戏公司联合运营
- Java自动转发邮箱
- ArcGIS线转面
- 汇总学习Javascript闭包(closure)
- Python杂记
- 理想是只被狼强奸的羊
- 网游中将聊天部分与游戏逻辑分离
- 进程与系统服务之间用event通讯
- 闲置小U盘变身最强大路由器
- 实例说明 sql server 多表级联删除的两种方式
- 批处理第六章
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- 没有找到mspdb80.dll 的解决办法
- GetMessage和PeekMessage