关于build:如何管理大型游戏的美术资源工程

34次阅读

共计 3084 个字符,预计需要花费 8 分钟才能阅读完成。

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

正文完
 0