一 小结
之前陆陆续续记录些优化的总结,总的来说,性能提升很明显。去年初写了个lua性能分析工具,C++写的,大概一千多行。当时简单用了下,虽然不是那种很好看的图形化,但是能看出函数调用链和时间次数信息,后来没有仔细再深入的看看。今天查看的时候,发现有个问题有点郁闷,后来打开调试发现,建索引的时候因为lua中尾调用的设计没有考虑到函数所在文件名的冲突,导致复用了索引,出现统计异常,后来修复了;还有个就是尾调用取不到当前函数debug关于函数名的信息,导致不能正常显示函数名。
新项目立项,开发进度还可以,然后这几周在测试流量和cpu相关的数据,出了四份性能数据报表,两台性能不错的测试机(线上配置那种,可能更好),压力测试的时候,开了十几个线程,看了下cpu方面,基本没有上下文切换,然后上了四千人同时战斗,看了下上下行数据包量和大小,以及负载情况,发现优化的工作还是很多的,目前cpu整体负载大于90%,流量平均每个人每秒大概6kb,当然这里视野调整了大小。
这两周优化五六处实现,为关键路径,优化后对原来的实现分别提升50%以上。大概是把原来的高频每次操作进行三遍循环改成常数时间;使用函数调用在某些条件下才成立的情况替换走事件通知的方式;优化获取数据源的逻辑;还有某项参数的问题,之前上三千人同时战斗cpu负载就大于90%,后来修改了这个参数,多了一千人;其他的热点调整的地方比较大,后面再慢慢列出方案。
二 荒野乱斗杂谈
今天准备聊聊这款游戏,算是我入行游戏以来,玩的时间比较长的一款;还没上国服时就在关注一些视频,和早早的预约;虽然我玩的游戏不多,也很少氪金,但这款我目前已经充值大概五百元,虽然不多,但也很难得这样。
个人感觉,这款游戏还是挺有趣的,比较喜欢里面的吃鸡玩法和天选之子,游戏中的玩法虽然不多,但设计的比较好(我程序出生);我从程序的角度列一下我所看到的细节和思考到的。
开始匹配的时候,按钮置灰再亮起,这里实时更新匹配到的人数;因为请求的时候,可能刚好匹配上,防止玩家取消先置灰,每次更新人数时会同时更新钮置状态,这里算是简单处理;游戏中,锁定宝箱后,如果此时有其他玩家偷袭,对于手残党来说,跑路加释放技能,是无法自动从宝箱切换锁定敌人,导致很可能挂掉,这个有点坑;对于匹配机制,一场十人的战斗,可能会出现好多不同的英雄,导致打不过他们,只能躲起来待部分英雄被送出场景后,才能出来,当然可能是自己不够强大。
游戏中,会有一些玩家结合起来,比如通过英雄的转圈和一个微笑表情,表示不会攻击对方,这样导致几个人一起打其他的人;最后剩下的这些人,要么选择性牺牲,要么谁先出手这样;游戏中能隐藏自身的草,也挺有趣,可以偷袭别人,当然适合近战;早期挂掉的英雄释放宝箱,比如有七个,那么释放出也是七个,这样可能出现的问题是,几个人打那个宝箱多的英雄,后期已经修改掉,不再是七个,可能是两个,可能是三个这样;有些场景会出“小瓶”,拾取后相当加个buff,但貌似不叠加的,当然也可能出现英雄躲在旁边的草中,等其他英雄过去后,立即拾取并攻击跑过去的英雄;英雄获取奖杯数量越多,如果越早挂掉,失去的奖杯也越多。
有些传奇和史诗的英雄,貌似比较难通过乱斗宝箱开出来,要花钱买。
网友评论