开发者专栏

关注:2175

当前位置:足球投注 技术专区 开发者专栏

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

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

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

[复制链接]  [移动端链接]
3偶尔光临
260/300
排名
13715
昨日变化
1

足球投注 www.zjrxh.com 27

主题

34

帖子

260

积分

Rank: 3Rank: 3Rank: 3

UID
67815
好友
8
蛮牛币
943
威望
0
注册时间
2015-1-12
在线时间
79 小时
最后登录
2018-4-10

专栏作家

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模式使用了新的格子算法,匹配还是老算法。
  • 贴图资源泄漏?!居畔燃吨小?。从主城到战斗等场景切换会有些贴图无法释放,导致玩家时间长之后内存膨胀。
  • 堆内存优化?!居畔燃吨小?。解决游戏中顿卡问题,堆内存分析优化,通用内存池开发。
  • 性能优化?!居畔燃吨小?。分析游戏的性能瓶颈解决游戏中卡,发热,帧率低等问题。已知有图形配置的调整,追帧隐藏场景等?!久看畏獍迩昂髍eview,有针对进行优化】【持续】
  • 阻塞加载场景,再来一局同一场景不进行loading?!居畔燃兜汀?。提升loading速度。
  • UI使用一些插件做一些动画?!居畔燃兜汀?。
  • 加密。使用关键数据内存加密的方式(仅客户端),使用关键数据上报服务器校验的防作弊方式。
  • 使用IL2CPP取代Mono的DLL加密方式,防止代码逆向并提升性能。
  • 更详细的图形配置测试,获得每个图形配置对帧率,发热耗电的数据提现,针对标杆机型普及率高的机型做深度的推荐配置,让玩家上来就获得最好体验?!居畔燃兜汀?。(取决于已有机型的数量)
流程优化:
  • 服务器白名单?!居畔燃吨小?。这几次测试也有需求开服测试时可以屏蔽玩家,但是可以运行指定IP段提前连入测试,被服务器挡掉的玩家有未开服公告。
  • 热更流程优化?!居畔燃吨小?。重构现在的热更代码,和自动构建集成,支持不同服的版本使用不同的CDN配置,支持更新表格和lua,支持更新部分UI资源?!竞笮嗟淖试锤滦枰宰试醋龈蟮牡髡?li class="tbnj">GM工具?!居畔燃兜汀?。现在只有发公告。
  • 开关服的流程优化?!居畔燃兜汀?。登陆公告,跑马灯,踢人,封号,关服倒计时,更完善的公告。需要和策划一起梳理。
  • 自动构建的Build号校验
工具优化
  • AI行为树编辑器?!居畔燃兜汀?。暴露更多的接口给策划,让策划便于编辑修改?!究⒅邢轮堋俊境中?li class="tbnj">CMT技能编辑器?!居畔燃兜汀???⒖墒踊腃MT编辑器,优点不需要写代码,缺点无法配置逻辑,不灵活?!境中?li class="tbnj">自动的调试菜单更美观易用,支持分页?!居畔燃兜汀?。
  • 支持本地录像和日志记录功能,支持关键数据校验不同步时实时上报日志供呢个。
重构
  • MainUI拆分?!居畔燃兜汀?。因为开发了多个模式,很多模式的UI都混在一个预制体,战斗界面非常庞大而且容易出错,性能也差,使用不方便??梢苑痔娇⒐讨??!境中?li class="tbnj">玩家组件系统重构?!居畔燃兜汀?。纯代码重构。
  • UI使用消息事件系统?!居畔燃兜汀?。使用消息系统可以使UI结构更清晰减少bug,新的界面使用了历史遗留的一些界面没使用。
  • 帧同步游戏内换人加入优化?!居畔燃兜汀?。因为IO模式支持中途换人,每次换人的时候需要发送该玩家拥有英雄数据天赋数据非常庞大,优化为只在换人的时候同步换的角色的属性和天赋,否则后期英雄数量的时候会出问题?!臼欠窨梢圆换蝗恕?li class="tbnj">状态机重构?!居畔燃兜汀?。统一目前游戏内的多个状态机,游戏流程使用唯一的一个状态机??突Ф?天。
  • 资源管理方式使用引用计数方式?!敬致邸?br />


评分

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

查看全部评分


2初来乍到
106/150
排名
20701
昨日变化
7

0

主题

47

帖子

106

积分

Rank: 2Rank: 2

UID
46326
好友
0
蛮牛币
6
威望
0
注册时间
2014-9-23
在线时间
39 小时
最后登录
2018-4-12
沙发
发表于 2018-2-24 15:49:06 | 只看该作者
厉害了, 学习一下

4四处流浪
482/500
排名
5556
昨日变化
42

2

主题

139

帖子

482

积分

Rank: 4

UID
243239
好友
0
蛮牛币
960
威望
0
注册时间
2017-9-13
在线时间
127 小时
最后登录
2018-4-23
板凳
发表于 2018-2-25 09:38:02 | 只看该作者
66666666666666666666666

7日久生情
2407/5000
排名
3467
昨日变化
16

0

主题

1728

帖子

2407

积分

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

UID
219676
好友
0
蛮牛币
2293
威望
0
注册时间
2017-7-12
在线时间
311 小时
最后登录
2018-4-23

活力之星

地板
发表于 2018-2-25 12:59:00 来自Mobile--- | 只看该作者
谢谢分享

排名
1134
昨日变化

12

主题

967

帖子

2597

积分

Rank: 9Rank: 9Rank: 9

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

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

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

3偶尔光临
260/300
排名
13715
昨日变化
1

27

主题

34

帖子

260

积分

Rank: 3Rank: 3Rank: 3

UID
67815
好友
8
蛮牛币
943
威望
0
注册时间
2015-1-12
在线时间
79 小时
最后登录
2018-4-10

专栏作家

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

3偶尔光临
260/300
排名
13715
昨日变化
1

27

主题

34

帖子

260

积分

Rank: 3Rank: 3Rank: 3

UID
67815
好友
8
蛮牛币
943
威望
0
注册时间
2015-1-12
在线时间
79 小时
最后登录
2018-4-10

专栏作家

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

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

排名
19135
昨日变化
3

0

主题

35

帖子

71

积分

Rank: 2Rank: 2

UID
269725
好友
0
蛮牛币
133
威望
0
注册时间
2018-2-27
在线时间
14 小时
最后登录
2018-4-18
8#
发表于 2018-2-27 13:38:19 | 只看该作者
厉害了,学习学习
[发帖际遇]: 枫旅之路 乐于助人,奖励 1 蛮牛币. 幸运榜 / 衰神榜

排名
57914
昨日变化
13

0

主题

7

帖子

12

积分

Rank: 1

UID
229512
好友
0
蛮牛币
7
威望
0
注册时间
2017-6-30
在线时间
4 小时
最后登录
2018-3-4
9#
发表于 2018-2-28 15:30:57 | 只看该作者
谢谢分享,向大牛致敬

5熟悉之中
616/1000
排名
4918
昨日变化
1

0

主题

202

帖子

616

积分

Rank: 5Rank: 5

UID
228538
好友
2
蛮牛币
836
威望
0
注册时间
2017-6-24
在线时间
162 小时
最后登录
2018-4-23
10#
发表于 2018-2-28 16:15:44 | 只看该作者
感谢分享

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

3

主题

344

帖子

1346

积分

Rank: 6Rank: 6Rank: 6

UID
159631
好友
1
蛮牛币
2930
威望
0
注册时间
2016-7-30
在线时间
405 小时
最后登录
2018-4-23
11#
发表于 2018-3-1 09:24:25 | 只看该作者
谢谢分享

5熟悉之中
701/1000
排名
6272
昨日变化
2

0

主题

376

帖子

701

积分

Rank: 5Rank: 5

UID
146677
好友
9
蛮牛币
2461
威望
0
注册时间
2016-4-25
在线时间
141 小时
最后登录
2018-4-19
QQ
12#
发表于 2018-3-1 09:39:37 | 只看该作者
支持一下,谢谢分享

4四处流浪
391/500
排名
6627
昨日变化
1

2

主题

91

帖子

391

积分

Rank: 4

UID
229553
好友
0
蛮牛币
989
威望
0
注册时间
2017-6-30
在线时间
130 小时
最后登录
2018-4-17
13#
发表于 2018-3-1 11:35:52 | 只看该作者
向大牛学习学习

5熟悉之中
573/1000
排名
4210
昨日变化
3

0

主题

106

帖子

573

积分

Rank: 5Rank: 5

UID
195174
好友
0
蛮牛币
520
威望
0
注册时间
2016-12-22
在线时间
170 小时
最后登录
2018-4-23
14#
发表于 2018-3-1 12:35:59 | 只看该作者
6666666666

6蛮牛粉丝
1212/1500
排名
2907
昨日变化

0

主题

455

帖子

1212

积分

Rank: 6Rank: 6Rank: 6

UID
220310
好友
1
蛮牛币
2089
威望
0
注册时间
2017-5-2
在线时间
323 小时
最后登录
2018-4-23
15#
发表于 2018-3-2 10:12:09 | 只看该作者
[发帖际遇]: Layao 在论坛发帖时没有注意,被小偷偷去了 1 蛮牛币. 幸运榜 / 衰神榜

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

本版积分规则

快速回复 足球投注 返回列表
幸运农场开奖结果查询 | 528| 79| 677| 353| 850| 898| 461| 333| 85| 247|