美文网首页
如何减缓边玩边下导致的发热问题

如何减缓边玩边下导致的发热问题

作者: 侑虎科技UWA | 来源:发表于2022-05-18 14:32 被阅读0次

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(原群已满员)

相关文章

  • 如何减缓边玩边下导致的发热问题

    1)如何减缓边玩边下导致的发热问题 2)如何选择网络框架 3)关于函数参数使用Lambda表达式的疑问 4)Uni...

  • 小米笔记本发热问题

    设置为99可以避免超频,以达到减缓发热的目的

  • 直播专题问题排查-功耗高(九)

    直播功耗高 1. 问题现象直播过程中手机发热严重,耗电快。2. 问题排查 导致手机功耗高,发热严重的根本因素,无...

  • [MAC] 导致电脑发热问题 nsurlsessiond tru

    一.问题 由于苹果iCloud的Bug导致了死循环, 机器不断发热, 非常卡顿, 活动监视窗如下所示 可以看到cp...

  • 如何定位游戏发热问题

    1)如何定位游戏发热问题 2)Unity获取指定脚本的引用对象 3)如何知道打包时的一个Shader有多少变体 4...

  • 衰老,如何减缓?

    进入四十以后,其实这个问题一直困扰着我。 越来越多身边的同龄朋友去打针,去做各种医美项目,也越来越多的人去健身。 ...

  • 如何减缓年龄

    衰老: 本文章来源:基础建立于dr group的这个视频,https://youtu.be/Bxm6B2DJYK8...

  • Mac book pro 2017 时不时自动重启

    # 原因 最近mac book 更新后经常不稳定,导致我怀疑是mac os版本问题。经过思考可能是发热问题。 # ...

  • 如何减缓皱纹的产生?

    要养成乐观的生活态度,这样会使你年轻、自信。 生活要有规律,要有充足的睡眠,早睡早起,不要长期熬夜。要多食新鲜的疏...

  • 如何减缓骨质流失?

    灵芝能推迟骨质疏松的发生。停经之后,少了雌性激素的约束,破骨细胞活性大增,导致骨质溶蚀的速度远大于成骨细胞制造的速...

网友评论

      本文标题:如何减缓边玩边下导致的发热问题

      本文链接:https://www.haomeiwen.com/subject/hjstprtx.html