自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 漫谈微信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关注的人

提示
确定要删除当前文章?
取消 删除