开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2233

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 2753|回复: 34

[韩宇飞] 帧同步技术目标总结

[复制链接]  [移动端链接]
3偶尔光临
264/300
排名
14045
昨日变化
5

28

主题

35

帖子

264

积分

Rank: 3Rank: 3Rank: 3

UID
67815
好友
8
蛮牛币
954
威望
0
注册时间
2015-1-12
在线时间
81 小时
最后登录
2018-5-31

专栏作家

QQ
发表于 2018-2-24 12:07:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本文首发于知乎专栏:MACK的游戏开发笔记,欢迎各位关注。

在写一些网络优化总结的时候,翻到了年初3月份写的技术目标。在此之前因为玩法在不断摸索,主要的时间都在独立解决一些问题上,几乎不会涉及到技术任务的分配。但因为4月份版本需要上线测试而且至关重要,但当时的版本还过于Demo化延迟性能等都有不少问题,因此也被委以重任制定技术上下个月版本的技术目标,希望能有所提升。
着实挖空心思了一番!丧尽天良的列出了一大堆优化目标(也厚颜无耻的请教了很多成功项目同事朋友>_<)。。。
经过大家的不懈努力,两个版本之后基本所有的优化点都已完成(游戏功能也在不断开发),之后的版本有了大幅提升,顺利的经过了n轮测试。现在回头看看,真是一个非常痛苦而又快乐的过程,痛并快乐着,我想这就是游戏开发的真实写照。

    • 网络优化:
  • 客户端和服务器立即发消息的收发方式。【优先级高】。现在服务器和客户端有个缓存队列(可靠UDP的机制,改进后我们将使用TCP,可靠UDP,非可靠UDP三种网络方式)消息不回立即发送。降低延迟。
  • 客户端收发协议多线程。【优先级高】。更快的收发包,减少不受客户端帧率影响。
  • 实现非可靠UDP。【优先级高】。当用户网络不稳定丢包时可大幅降低延迟。使用冗余包的方式保证UDP可靠,比现在的ACK保证可靠性流量更大但延迟率低。
  • 网络数据测量分析。【优先级高】。测量纯网络ping值,和游戏真实ping值。定位延迟问题,目前正常ping值在30ms左右,但网络层实际ping值在100ms左右,定位问题和解决方案。实际主要是因为客户端逻辑层和表现层的更新顺序问题。
  • 断线重连。【优先级高】。分析和制定更好的断线重连方案,测试提供测试用例,需要策划配合。review和方案讨论的时间,具体修改方法还需要测试讨论。
  • 将帧协议从protobuff改为二进制流。【优先级低】。针对混战角色较多提升客户端收发包性能。
  • 移动的行为预测,表现层预表现一段时间玩家操作,使用航位预测算法平滑渲染层和逻辑层,降低移动延迟。
  • 协议包的压缩和限制,减小包的大小,忽略部分细微操作。
底层优化
  • 负载均衡机制,因为逻辑层是15帧,渲染层依赖玩家设备和游戏环境但几乎都会高于15帧,通过分摊逻辑运算降低帧率的毛刺。
  • 道具掉落系统的格子算法统一。【优先级中】。目前IO模式使用了新的格子算法,匹配还是老算法。
  • 贴图资源泄漏。【优先级中】。从主城到战斗等场景切换会有些贴图无法释放,导致玩家时间长之后内存膨胀。
  • 堆内存优化。【优先级中】。解决游戏中顿卡问题,堆内存分析优化,通用内存池开发。
  • 性能优化。【优先级中】。分析游戏的性能瓶颈解决游戏中卡,发热,帧率低等问题。已知有图形配置的调整,追帧隐藏场景等。【每次封板前后review,有针对进行优化】【持续】
  • 阻塞加载场景,再来一局同一场景不进行loading。【优先级低】。提升loading速度。
  • UI使用一些插件做一些动画。【优先级低】。
  • 加密。使用关键数据内存加密的方式(仅客户端),使用关键数据上报服务器校验的防作弊方式。
  • 使用IL2CPP取代Mono的DLL加密方式,防止代码逆向并提升性能。
  • 更详细的图形配置测试,获得每个图形配置对帧率,发热耗电的数据提现,针对标杆机型普及率高的机型做深度的推荐配置,让玩家上来就获得最好体验。【优先级低】。(取决于已有机型的数量)
流程优化:
  • 服务器白名单。【优先级中】。这几次测试也有需求开服测试时可以屏蔽玩家,但是可以运行指定IP段提前连入测试,被服务器挡掉的玩家有未开服公告。
  • 热更流程优化。【优先级中】。重构现在的热更代码,和自动构建集成,支持不同服的版本使用不同的CDN配置,支持更新表格和lua,支持更新部分UI资源。【后续更多的资源更新需要对资源做更大的调整】
  • GM工具。【优先级低】。现在只有发公告。
  • 开关服的流程优化。【优先级低】。登陆公告,跑马灯,踢人,封号,关服倒计时,更完善的公告。需要和策划一起梳理。
  • 自动构建的Build号校验
工具优化
  • AI行为树编辑器。【优先级低】。暴露更多的接口给策划,让策划便于编辑修改。【开发中下周】【持续】
  • CMT技能编辑器。【优先级低】。开发可视化的CMT编辑器,优点不需要写代码,缺点无法配置逻辑,不灵活。【持续】
  • 自动的调试菜单更美观易用,支持分页。【优先级低】。
  • 支持本地录像和日志记录功能,支持关键数据校验不同步时实时上报日志供呢个。
重构
  • MainUI拆分。【优先级低】。因为开发了多个模式,很多模式的UI都混在一个预制体,战斗界面非常庞大而且容易出错,性能也差,使用不方便。可以分摊到开发过程中。【持续】
  • 玩家组件系统重构。【优先级低】。纯代码重构。
  • UI使用消息事件系统。【优先级低】。使用消息系统可以使UI结构更清晰减少bug,新的界面使用了历史遗留的一些界面没使用。
  • 帧同步游戏内换人加入优化。【优先级低】。因为IO模式支持中途换人,每次换人的时候需要发送该玩家拥有英雄数据天赋数据非常庞大,优化为只在换人的时候同步换的角色的属性和天赋,否则后期英雄数量的时候会出问题。【是否可以不换人】
  • 状态机重构。【优先级低】。统一目前游戏内的多个状态机,游戏流程使用唯一的一个状态机。客户端2天。
  • 资源管理方式使用引用计数方式。【待讨论】


评分

参与人数 2鲜花 +7 收起 理由
HOH + 2 赞一个!
0度单舞 + 5 很给力!

查看全部评分


回复

使用道具 举报

2初来乍到
112/150
排名
21180
昨日变化
4

0

主题

51

帖子

112

积分

Rank: 2Rank: 2

UID
46326
好友
0
蛮牛币
24
威望
0
注册时间
2014-9-23
在线时间
42 小时
最后登录
2018-5-24
发表于 2018-2-24 15:49:06 | 显示全部楼层
厉害了, 学习一下

回复

使用道具 举报

5熟悉之中
594/1000
排名
4609
昨日变化
1

3

主题

148

帖子

594

积分

Rank: 5Rank: 5

UID
243239
好友
0
蛮牛币
1335
威望
0
注册时间
2017-9-13
在线时间
165 小时
最后登录
2018-6-19
发表于 2018-2-25 09:38:02 | 显示全部楼层
66666666666666666666666

回复 支持 反对

使用道具 举报

7日久生情
2906/5000
排名
2692
昨日变化
10

0

主题

2021

帖子

2906

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
0
蛮牛币
2420
威望
0
注册时间
2017-7-12
在线时间
403 小时
最后登录
2018-6-19

活力之星

发表于 2018-2-25 12:59:00 来自Mobile--- | 显示全部楼层
谢谢分享

回复

使用道具 举报

排名
1031
昨日变化
1

13

主题

1066

帖子

2854

积分

Rank: 9Rank: 9Rank: 9

UID
68430
好友
10
蛮牛币
10180
威望
0
注册时间
2015-1-14
在线时间
767 小时
最后登录
2018-6-15
发表于 2018-2-26 12:01:35 | 显示全部楼层
  虽然干货蛮多,但是 主题 “ 帧同步” 这个东西,没有多讲呀~~,我的项目也是使用它,关键要解决的问题是 两个东西  1,随机数,这个东西只要保证开局前,所有人的随机种子一致就可以做到随机一致,2. 浮点精度问题,简单的一句话就是使用 定点数代替原始浮点,那么这个问题就出现了,就会导致很多 unity 底层使用的浮点模块的,替代了,比如碰撞,刚体~~~~
浮点数就是最大的难点,怎么做到优秀方案替代无法使用的原来精度不高的底层模块呢?那些 unity 原有的功能是可以使用的? 楼主可以总结一下么?

对于游戏项目,2个浮点精度问题是最头痛的要解决的  1》碰撞----刚体,碰撞盒,触发器,精度不够,需要寻找解决方案,使用定点数技术
2》寻路,使用 nav 寻路精度也是只能保证小数 7位,官方没有开放底层,不晓得是否底层使用了定点数,精度不够出现蝴蝶效应怎么办, 使用 A星插件,老外写的东西,说实在的个人看过源码,太TMD 难理解写法了,没信息修改成定点数~~~那么最后剩下自己写 A星算法了,但是问题来了,自己写出来的,整张地图划分格子几万几十万格,一次长距离寻路,耗时真没前面两种方式性能好~~

所以楼主,能否针对您文章标题,切实的讲讲,帧同步技术,如何实现,寻路,碰撞,如何寻找的替代方式?

回复 支持 反对

使用道具 举报

3偶尔光临
264/300
排名
14045
昨日变化
5

28

主题

35

帖子

264

积分

Rank: 3Rank: 3Rank: 3

UID
67815
好友
8
蛮牛币
954
威望
0
注册时间
2015-1-12
在线时间
81 小时
最后登录
2018-5-31

专栏作家

QQ
 楼主| 发表于 2018-2-27 10:55:12 | 显示全部楼层
主题是帧同步目标总结,只是我针对游戏卡顿的一次方案制订和优化的笔记,具体的内容后续可能会分多篇文章讲。
关键要解决的东西远远不止随机数和浮点数,这是最基本最简单的两个问题,浮点精度的可以看我写的https://zhuanlan.zhihu.com/p/30422277 ,你说的物理寻路我们都有用也都有介绍。真正的难点在于网络的延迟优化,快速定位不同步bug,极致性能优化上,如何使用真实3D物理效果上等等。
举个简单的例子,网络这块就用了TCP,可靠UDP和非可靠UDP三种方式,断线重连怎么实现,中途加入怎么实现,超多玩家怎么实现,如何保证上线版本没有一个逻辑bug导致不同步,是否应该加入预表现等等

回复 支持 反对

使用道具 举报

3偶尔光临
264/300
排名
14045
昨日变化
5

28

主题

35

帖子

264

积分

Rank: 3Rank: 3Rank: 3

UID
67815
好友
8
蛮牛币
954
威望
0
注册时间
2015-1-12
在线时间
81 小时
最后登录
2018-5-31

专栏作家

QQ
 楼主| 发表于 2018-2-27 10:56:21 | 显示全部楼层
绝世love情缘 发表于 2018-2-26 12:01
虽然干货蛮多,但是 主题 “ 帧同步” 这个东西,没有多讲呀~~,我的项目也是使用它,关键要解决的问题是 ...

主题是帧同步目标总结,只是我针对游戏卡顿的一次方案制订和优化的笔记,具体的内容后续可能会分多篇文章讲。
关键要解决的东西远远不止随机数和浮点数,这是最基本最简单的两个问题,浮点精度的可以看我写的https://zhuanlan.zhihu.com/p/30422277 ,可以关注我的知乎专栏,你说的物理寻路我们都有用也都有介绍。真正的难点在于网络的延迟优化,快速定位不同步bug,极致性能优化上,如何使用真实3D物理效果上等等。
举个简单的例子,网络这块就用了TCP,可靠UDP和非可靠UDP三种方式,断线重连怎么实现,中途加入怎么实现,超多玩家怎么实现,如何保证上线版本没有一个逻辑bug导致不同步,是否应该加入预表现等等

回复 支持 反对

使用道具 举报

排名
17246
昨日变化
2

0

主题

38

帖子

89

积分

Rank: 2Rank: 2

UID
269725
好友
0
蛮牛币
173
威望
0
注册时间
2018-2-27
在线时间
21 小时
最后登录
2018-6-8
发表于 2018-2-27 13:38:19 | 显示全部楼层
厉害了,学习学习
[发帖际遇]: 枫旅之路 乐于助人,奖励 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
59385
昨日变化
11

0

主题

7

帖子

13

积分

Rank: 1

UID
229512
好友
0
蛮牛币
9
威望
0
注册时间
2017-6-30
在线时间
4 小时
最后登录
2018-5-29
发表于 2018-2-28 15:30:57 | 显示全部楼层
谢谢分享,向大牛致敬

回复 支持 反对

使用道具 举报

5熟悉之中
727/1000
排名
4194
昨日变化
1

0

主题

227

帖子

727

积分

Rank: 5Rank: 5

UID
228538
好友
2
蛮牛币
1079
威望
0
注册时间
2017-6-24
在线时间
188 小时
最后登录
2018-6-19
发表于 2018-2-28 16:15:44 | 显示全部楼层
感谢分享

回复

使用道具 举报

6蛮牛粉丝
1442/1500
排名
1836
昨日变化

3

主题

347

帖子

1442

积分

Rank: 6Rank: 6Rank: 6

UID
159631
好友
1
蛮牛币
3249
威望
0
注册时间
2016-7-30
在线时间
434 小时
最后登录
2018-6-19
发表于 2018-3-1 09:24:25 | 显示全部楼层
谢谢分享

回复

使用道具 举报

5熟悉之中
789/1000
排名
5639
昨日变化
1

0

主题

414

帖子

789

积分

Rank: 5Rank: 5

UID
146677
好友
9
蛮牛币
2623
威望
0
注册时间
2016-4-25
在线时间
155 小时
最后登录
2018-6-19
QQ
发表于 2018-3-1 09:39:37 | 显示全部楼层
支持一下,谢谢分享

回复 支持 反对

使用道具 举报

4四处流浪
404/500
排名
6638
昨日变化

3

主题

91

帖子

404

积分

Rank: 4

UID
229553
好友
0
蛮牛币
1006
威望
0
注册时间
2017-6-30
在线时间
134 小时
最后登录
2018-6-1
发表于 2018-3-1 11:35:52 | 显示全部楼层
向大牛学习学习

回复

使用道具 举报

5熟悉之中
600/1000
排名
4141
昨日变化
2

0

主题

106

帖子

600

积分

Rank: 5Rank: 5

UID
195174
好友
0
蛮牛币
581
威望
0
注册时间
2016-12-22
在线时间
180 小时
最后登录
2018-6-19
发表于 2018-3-1 12:35:59 | 显示全部楼层
6666666666

回复

使用道具 举报

6蛮牛粉丝
1346/1500
排名
2561
昨日变化

1

主题

488

帖子

1346

积分

Rank: 6Rank: 6Rank: 6

UID
220310
好友
1
蛮牛币
2302
威望
0
注册时间
2017-5-2
在线时间
359 小时
最后登录
2018-6-13
发表于 2018-3-2 10:12:09 | 显示全部楼层
[发帖际遇]: Layao 在论坛发帖时没有注意,被小偷偷去了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表