

如何减缓边玩边下导致的发热问题
source link: https://blog.uwa4d.com/archives/TechSharing_297.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


如何减缓边玩边下导致的发热问题
- 作者:admin
- 时间:昨天 09:07
- 浏览:45 次
- 分类:厚积薄发
1)如何减缓边玩边下导致的发热问题
2)如何选择网络框架
3)关于函数参数使用Lambda表达式的疑问
4)Unity 5.6升级2018.4,播放特效闪退
这是第297篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
Network
Q:我们项目是实现边玩边下的功能,怎么去降低它的IO?
现在的情况是进入游戏前加载一部分,在进入游戏后会边玩边下2~3GB的资源,发热比较严重,不知道大家怎么处理的,有没有限帧这类的操作优化带宽的压力。
A1:这个需要自己做个策略动态调整,比如当游戏处于战斗等本身消耗比较大的场景时可以停止下载工作,等退出这种特定场景,游戏比较闲置(如只在进行一些简单的UI操作)时再重新开始下载。同时可以随时调整下载开启的线程数,控制下载的负载,从而维护游戏中整体的性能平衡。
感谢刘明@UWA问答社区提供了回答
A2:可以参考UWA学堂上的文章,可以控制下载速度以及下载时CPU和内存占用:《手游HTTP多线程下载原理与优化》
感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62691381eee1190884986a99
Network
Q:最近要立新项目,在网络框架上有选择困难症,项目需求:联机多人割草游戏,需要支持多人游戏,10人以内,400左右的怪物同步,上Steam。
状态同步方案:
1. Mirror免费,可以利用Steam的P2P网络,不支持主机迁移,主机掉了就没了;
2. Photon与Mirror类似,收费,不能用Steam网络;
3. Netcode for GameObjects,Unity官方,预览版,可以用Steam网络,不知道支不支持主机迁移。
状态同步方案开发比较简单,但是比较担心能不能同步这么多的怪物。
帧同步方案:
1. Photon Quantum,提供了确定性方案,无需开发;收费贵,不提供源码;
2. LockstepEngine,看介绍比较完善,但是看评论说有bug。
上面这些方案都是我看文档和介绍总结的,没有实际使用过,麻烦有经验的大佬介绍下哪个最适合,或者有什么其他更好的方案吗?
A:对于Steam的商业游戏:
- Mirror太吃Master的机器了,对Master不友好,其他玩家也比较看Master的网络也不友好。
- Netcode目前处于1.0.0-preview7的版本,大约一个月左右更新一个小版本,个人感觉不是特别稳定,不建议直接用。
- Photon Quantum好像是每人每月0.5美元,巨贵,直接不考虑。
- LockstepEngine相对上面4个来说应该稍微可以接受一点,大师渔夫哥好久没有维护了。
- 推荐一手ET框架。
- 对于10个人+400怪物来说,常规的方案可能都不太行,需要自己实现一套类似状态帧的东西。
感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6278e79bb87a45735152e71a
Scripting
Q:关于函数参数使用Lambda表达式的疑问:
写法一:_socket.BeginSend(data, offset, len, SocketFlags.None, out _socketError, new AsyncCallback(OnSendData), _socket);
写法二:_socket.BeginSend(data, offset, len, SocketFlags.None, out _socketError, OnSendData, _socket);
请问写法二本质同第一种是一样的?编译器会帮忙new一个AsyncCallback?或者OnSendData指向的是函数的地址,没有new的开销?
A:我构筑了两个类似的方法(省略了前后实现)以验证两种写法是否有差别。
编译后,使用dnSpy工具查看dll文件,发现IL代码中都会有new的开销,即两种写法本质上是完全一致的。
感谢Faust@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/627c7fcbb87a45735155df60
ParticleSystem
Q:Unity 5.6升级2018.4,播放特效闪退。
特效重新激活LimitVelocityoverLifetime播放正常。发现Prefab的差异仅在ClampVelocityModule的模块。其中y和z的minMaxState好的是1,播放闪退的是0。将0改成1特效播放正常。
AssetDatabase.ForceReserializeAssets默认的minMaxState是0,所以我想这是该方法无效的原因之一。后面发现如果x是1,则y、z必须是1。如果x是0,则y、z随便。因为闪退特效现在不多,现在项目的处理方式是对资源进行自检,再确定解决方案。
经过各种测试,也确定了是因为这个原因导致。检测出来的其他特效也会闪退,但不知道为何ClampVelocityModule的minMaxState的x为何会影响,需要借助源码查看原因了。请问大家有源码可以提供么?
A:从源码上看,minMaxState的x、y、z需要做到State同步。
可以根据自己的Unity版本,到官方的Git下载:https://github.com/Unity-Technologies/UnityCsReference
感谢廖武兴@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6279cb10b87a457351539421
封面图来源于网络
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)
Recommend
-
22
边玩小汽车边画画,还拿了吉尼斯,有了未婚妻?网友:好酸 Ian Cook /
-
10
30 个小游戏项目及源码,边学边玩边挣钱~给大家带来 30 个游戏项目,包含 Python、C语言、C++、前端等……废话不多说,直接上项目!
-
10
Swift Playgrounds:人人学编程时代,Apple想让你边玩边学 产品言思 2021-05-21 0 评论...
-
6
Axie Infinity 爆发,「边玩边赚」是下一个流动性挖矿?随着区块链游戏发展,会逐渐出现收益率降低,可玩性提高的趋势,最终达到平衡。…游戏,市场,观点,DeFi,NFT,Axie Infinity,流动性挖矿 游戏 市场 观点 DeFi NFT Axie Infinity 流动性挖矿
-
16
← FPS游戏的终结?无法被反作弊系统检测到的AI视觉模拟锁头挂阿姆斯特丹:史上首座3D打印的钢桥梁投入使用 →
-
7
金色观察 | 如何通过Axie Infinity边玩边赚? 金色财经 子木 18 小时前 6.5万 最近Axie Infinity吸引了众多目光。在过去7天里,这款NFT游戏创造了...
-
13
YGG 获得 a16z 领投的 460 万美元融资,用于加速边玩边赚游戏发展BeepCrypto2021-08-20热度: 16423YGG 融合 NFT 和去中心化金融(DeFi),通...
-
8
1)如何定位游戏发热问题 2)Unity获取指定脚本的引用对象 3)如何知道打包时的一个Shader有多少变体 4)如何优化Font.CacheFontForText频繁造成的耗时峰值 这是第300篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发...
-
4
Unity边玩边下限制下载速度 Unity提供了DownloadHandlerFile类来进行...
-
2
如何减缓主、客观认知能力的下降? - 知見 跳至内容 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK