头图

如何管理大型游戏的美术资源工程

1)如何管理大型游戏的美术资源工程
​2)Google Play强制64位App相关问题
3)零散AssetBundle资源再打包疑问
4)Unity中Api Compatibility Level .net 4.x与.NET Standard 2.0的区别
5)Unity 2020版本OpenGL ES3下SRP Batcher失效问题


这是第252篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Assets

Q:随着项目参与制作的人数变多,各类美术资源的数量也在急速上升,纵然有各种规范和各类资源导入、检查工具,跑一段时间后,仍然会出现工程里各类废弃的资源未能及时清理,导致资源和包体大小持续上升,包括:
1)各类资源在制作过程中产生的一些中间文件;
2)原本在使用,但后面随业务需求变动,已弃用的资源;
3)原本就属于要放到游戏中看看效果,但没实际投放的资源。
想问下大家在处理这类问题时的一些方案?

A1:题主遇到的问题和技术无关,和流程有关。

(1)监管工作负责到人,凡事预则立、不预则废
每个项目都需要有一个Performance Owner来对性能、资源等问题进行管控。如果没有这个人,再强大的工具、再NB的团队也是白扯。这个人可以是项目的制作人、主程、QA Leader或者PM(一般小团队不具备)都可以,就我们合作的团队来看,以QA Leader作为Performance Owner的团队居多。

(2)监管流程要跟上
团队中必须要有人来对资源问题、性能问题进行负责,且制定固定的流程来强制团队养成持续监控、持续完善的习惯。三天打鱼、两天晒网的形式,是很难成事的,做游戏开发也是如此。所以,将监控变成团队研发的习惯,就需要通过流程来不断把控,流程做到位了,一切就都好了。

以上两点做到了,题主的问题自然就解决了。

该回答由UWA提供

A2:监管负责人一般是PM。因为有些QA没有常识,也没有权利,PM最好懂业务,如果没有PM最好就给客户端主程这个权利,锁版本是很必要的,大部分大厂都有这个。

用工具限制美术的操作,所有不正确的全部报错,然后提示清楚。用锁版本限制提交节点。然后要求不守规矩的人离开,不要问为什么会报错。当然必须从制作人开始就要支持。通俗地讲,美术和策划不会操作工具又不肯学习的,不配合作。

感谢马古斯@UWA问答社区提供了回答,欢迎大家转至社区交流:

Build

Q:Unity可以通过程序集加载对应的代码,且Google Play已经强制64位APP,是否已经不支持通过Assembly.Load加载代码了?

A:如下图所示,Unity里面Mono版本还不支持ARM64,所以要上Google Play(64位要求)只能使用IL2CPP,IL2CPP是不支持Assembly.Load的。

可以参考:
https://forum.unity.com/threa...

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:

AssetBundle

Q:Unity的AssetBundle资源有必要把零散的AssetBundle资源做成Zip吗?比如300MB一个。因为在打AssetBundle的时候可以选择压缩格式,所以不是为了减少总体的大小,而是如果散的AssetBundle,在下载的时候性能会不会有压力?各位在实践中都是怎么处理的呢?(资源量AssetBundle数量10W+,总大小在4G左右。)

A1:一堆散文件下载自然不如一个大文件更快,Http连接也要时间和资源,有时候AssetBundle其实只有几KB。不划算。打Zip算比较方便,可以考虑不带压缩打Zip。当然也可以自定义格式来做,但是合大文件以后更新会麻烦点,要做一些管理和替换。

感谢黄程@UWA问答社区提供了回答

A2:最近刚好做这个功能。将多个包打成Zip,对下载效率有很大的帮助,特别在国外网络环境下。

1.AssetBundle打包依旧是零散的AssetBundle包(AssetBundle会做模块区分,比如特效、UI等)。
2.需要热更新时候,生成的AssetBundle包信息和上个版本AssetBundle包对比,将各个模块变动的AssetBundle包生成Zip包。
3.热更新的时候,收集需要更新AssetBundle信息(有标记Zip,说明资源在Zip包里)进行下载,没有标记Zip,则直接下载AssetBundle包,这样兼容跨多个版本热更新功能。
4.下载完的Zip包在客户端在解压成AssetBundle。

感谢杨宇杰@UWA问答社区提供了回答

A3:当个搬运工补充一个回答:
散列的坏处比较集中:下载慢(用cdn,oss后端性能不必考虑),上传到oss也是慢得多。

Zip无论跳包管理,下载冗余,都是很头疼的事情,做动态下载更加不可能。因此可能导致比散列更加昂贵的oss成本。

感谢芭妮妮@UWA问答社区提供了回答

A4:前期开发用零散文件,文件小也省掉了断网续传的问题,后期时间富裕了再扩展为大包的方式,可以根据版本号生成增量更新包一次下载完成。

放服务器上没什么影响,定期清理一下。

感谢rekcah1986@UWA问答社区提供了回答

A5:上一个项目用的Zip打包,运营时间长了以后,冗余资源会越来越多。热更资源要保证完整性不能删,除非你们是换包了,如果你们频繁换包,那么用Zip的方式是最合适的。

感谢Lim@UWA问答社区提供了回答,欢迎大家转至社区交流:

Editor

Q:Unity中Api Compatibility Level .NET 4.x与.NET Standard 2.0的区别是什么呢?

A:.NET Standard 2.0对平台的支持性更广、兼容性更好。.NET Standard 2.0的API是.NET 4.x的子集。或者说,.NET 4.x支持的API更多一些,兼容.NET Standard 2.0,但是有些API在有些平台上是不兼容的。

Unity默认选择的是.NET Standard 2.0,如果想要跨平台兼容,那么就选Standard 2.0。如果使用的外部类库或者脚本里面调用的API不被Standard 2.0支持,再考虑换成4.x来试试。

以官方文档为准:
https://docs.unity3d.com/Manu...

感谢Prin@UWA问答社区提供了回答,欢迎大家转至社区交流:

Rendering

Q:在Unity 2020版本下,OpenGL ES3下SRP Batcher失效,查看lit.shader显示不兼容SRP,该怎么解决呢?

A:经排查,在Unity 2020.2的某些版本下并没有出现上述问题,但后续的版本就坏了。现在看到2020.3.9f1的Release notes里有提到这个问题。

可参考此处

感谢小ben@UWA问答社区提供了回答,欢迎大家转至社区交流:

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)

UWA官网:[链接]

27 声望
12 粉丝
0 条评论
推荐阅读
如何避免游戏炸服——游戏上线的RoadMap
本文我想写一下,一款游戏上线前需要做哪些事情,以保证项目上线后的稳定性。若你们公司之前没有大DAU游戏上线和运维经验,现在准备上线一款新游戏,可以按照这个RoadMap去做或者检查一遍自己游戏的上线准备工作。

侑虎科技

封面图
2022年度大赏 | UWA问答精选
UWA每周推送的知识型栏目《厚积薄发 | 技术分享》已经伴随大家走过了304个工作周。精选了2022年十大精彩问答分享给大家,期待2022年UWA问答继续有您的陪伴。

侑虎科技阅读 396

封面图
Monaco Editor 光标定位问题及解决
2、存在font相关样式变化 比如,font-size、font-family等。这时需要保证编辑器初始化前后字体相关样式保持一致就可以了(可能需要与上面的方法一起使用)。

checkitout阅读 390

封面图
纹理开启Mipmap导致压缩失败的问题
1)纹理开启Mipmap导致压缩失败的问题​2)使用TextMeshPro能否避免使用Resources文件夹3)用透视摄像机去分层管理UI的优势和好处4)Houdini中切线空间向量怎么在Unity Shader还原出原向量

侑虎科技阅读 277

封面图
URP自带的Tone mapping性能开销问题
1)URP自带的Tone mapping性能开销问题​2)图集中未使用到Sprite也会被加载到内存中的问题3)GPU带宽:从纹理出发优化带宽①4)GPU带宽:从纹理出发优化带宽②5)GPU带宽:从纹理出发优化带宽③

侑虎科技阅读 240

封面图
在Runtime下,IL2CPP与Mono打包对应的PSS内存占用问题
1)在Runtime下,IL2CPP与Mono打包对应的PSS内存占用问题​2)获得AssetBundle内部依赖关系的方法3)Unity 2019 Streaming Mipmap在某些情况下采样等级错误4)根据RenderDoc的数据,计算渲染量

侑虎科技阅读 238

封面图
fabric.js开发图片编辑器的细节实现
当时的版本比较粗糙,只能说是一个基础版的Demo,很多细节不够完善,参考了稿定设计和创客贴的设计编辑器,优化了很多必要的细节,也算是fabric.js的进阶用法,整理成笔记分享出来。

nihaojob阅读 191

封面图

UWA官网:[链接]

27 声望
12 粉丝
宣传栏