漫谈微信libco协程设计及实现(万字长文) Posted on 2019-06-21 1.libco简介 libco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上,使得微信后端服务能同时hold大量请求,被誉为微信服务器稳定性的基石。libco在2013年的时候作为腾讯六大开源项目首次开源。libco源码地址 ... Read more »
脏标记遍历之极致优化 Posted on 2019-06-21 1.背景介绍 本文适用于所有脏标记遍历功能,提升性能几十倍,本文以游戏中玩家的属性同步作为例子进行介绍。 MMORPG游戏中玩家有大量属性需要从服务器同步给客户端,例如名字、血量、战力、等级、速度等等。每当某个玩家的某个属性发生变化时,需要将玩家该属性的 ... Read more »
服务器内存优化 Posted on 2019-06-21 1.内存统计 在对内存优化之前,需要先确定程序每个模块的内存分配。程序的性能有perf、gprof等分析工具,但内存没有较好的分析工具,因此需要自行统计。在linux下/proc/self/statm有当前进程的内存占用情况,共有七项:指标vsize虚拟内存页数、residen ... Read more »
多进程架构数据同步方案 Posted on 2019-06-21 1.同步的必要性 MMORPG为了满足单服承载更多玩家的需求,往往会采用多进程架构,即k个GameServer负责游戏逻辑以及一个WorldServer负责全局逻辑,如果单服承载n个玩家,则每个GameServer承载n/k个玩家。帮会等公共数据均在WorldServer上加载 ... Read more »
游戏的存储方案 Posted on 2019-06-21 1.存储要求 在游戏中,玩家、帮会等数据需要存到数据库中,这些数据要能快速存储,且存储数据不影响游戏进程GameServer的响应速度,同时要保证服务器重启时加载数据需要尽可能的快,服务器宕机时数据不丢。 2.存储结构 为了让服务器重启时加载数据尽可能的快 ... Read more »
跳点搜索算法JPS及其优化(万字长文) Posted on 2019-06-21 1.引言 寻路算法用途众多,例如在游戏和地图中。A*算法已经众所周知,对于其优化也是层出不穷,然而性能并没有取得突破性进展。本文介绍JPS的效率、多线程、内存、路径优化算法。为了测试搜索算法的优化性能,实验中设置游戏场景使得起点和终点差距200个格子,需要寻路10000次。结果 ... Read more »