- 博客(6)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 漫谈微信libco协程设计及实现(万字长文)
欢迎关注作者git博客1.libco简介 libco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上,使得微信后端服务能同时hold大量请求,被誉为微信服务器稳定性的基石。libco在2013年的时候作为腾讯六大开源项目首次开源。libco源码地址 libco首先能解决CPU利用率与IO利用率不平衡,比用多线程解决IO阻塞CPU问题更高效。因为用户态...
2019-06-24 12:36:38
1948
1
原创 跳点搜索算法JPS及其优化(万字长文)
欢迎关注作者git博客1.引言 寻路算法用途众多,例如在游戏和地图中。A*算法已经众所周知,对于其优化也是层出不穷,然而性能并没有取得突破性进展。本文介绍JPS的效率、多线程、内存、路径优化算法。为了测试搜索算法的优化性能,实验中设置游戏场景使得起点和终点差距200个格子,需要寻路10000次。结果发现,A*寻路总时间约2.6074x1011纳秒(一秒为109纳秒);基础版JPS寻路总时间1...
2019-06-24 18:14:03
14168
12
原创 服务器内存优化
欢迎关注作者git博客1.内存统计 在对内存优化之前,需要先确定程序每个模块的内存分配。程序的性能有perf、gprof等分析工具,但内存没有较好的分析工具,因此需要自行统计。在linux下/proc/self/statm有当前进程的内存占用情况,共有七项:指标vsize虚拟内存页数、resident物理内存页数、share 共享内存页数、text 代码段内存页数,lib 引用库内存页数、d...
2019-06-24 18:06:45
1859
原创 游戏的存储方案
欢迎关注作者git博客1.存储要求 在游戏中,玩家、帮会等数据需要存到数据库中,这些数据要能快速存储,且存储数据不影响游戏进程GameServer的响应速度,同时要保证服务器重启时加载数据需要尽可能的快,服务器宕机时数据不丢。2.存储结构 为了让服务器重启时加载数据尽可能的快,且服务器宕机时数据不丢,本文采用共享内存的方案。进程异常退出时,共享内存仍然存在,进程再次启动时可以直接读取上...
2019-06-24 18:04:40
1549
原创 多进程架构数据同步方案
欢迎关注作者git博客1.同步的必要性 MMORPG为了满足单服承载更多玩家的需求,往往会采用多进程架构,即k个GameServer负责游戏逻辑以及一个WorldServer负责全局逻辑,如果单服承载n个玩家,则每个GameServer承载n/k个玩家。帮会等公共数据均在WorldServer上加载、存储。因此玩家查询帮会信息时,需要客户端将请求发到玩家所在的GameServer,GameS...
2019-06-24 18:03:04
845
1
原创 脏标记遍历之极致优化
欢迎关注作者git博客1.背景介绍 本文适用于所有脏标记遍历功能,提升性能几十倍,本文以游戏中玩家的属性同步作为例子进行介绍。 MMORPG游戏中玩家有大量属性需要从服务器同步给客户端,例如名字、血量、战力、等级、速度等等。每当某个玩家的某个属性发生变化时,需要将玩家该属性的标志位置脏,在心跳或者其他需要发送的时机,调用同步属性函数,判断置脏的属性并同步给所有客户端。需要注意,不能每次在...
2019-06-24 17:41:50
579
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人