器材多平台开发新流程

器材多平台新开发流程

新的开发流程将不同平台上使用的统一资源和差异资源分离出来,通过维护一份统一资源来软连接不同平台的差异资源,只需要保证美术人员提供的不同平台差异资源路径是一致的,即可通过更替差异资源完成对多个平台的适配,以此减少不同平台开发的工作量。

ElementResource仓库

  1. CrossformResources(该文件夹为ElementResource的子模块):在不同平台下统一相同的资源文件,其中大致包括以下部分:
    1. LabElementPrefabs:统一预制体;
    2. ElementAudio:相同的音效文件;
    3. LabElementDrug:药品信息;
    4. LabElementIcons:Icon文件;(目前已废弃,可以不用往里面放图片了,现在icon放在脚本文件夹内)
    5. LabElementAnimators:动画相关资源
  2. MultiformResources:通常由于性能差距和平台差别,使得模型网格、材质shader、特效等等美术资源都需要进行处理。在不同平台下有差异的资源文件,其中大致包括以下部分:
    1. 各类公共资源:模型、贴图、材质球等
    2. 器材专用资源:模型、贴图等
    3. shader单独文件夹
仓库分支
仓库 分支名称 说明
ElementResource Main/PC PC平台下所用的差别资源文件
ElementResource Main/Android 安卓平台所用的差别资源文件
ElementResource Main/Ios Ios平台所用的差别资源文件
ElementResource Main/… 未来其他分支
CrossformResources master 该仓库存放多平台兼容资源,只有一个分支

开发流程

新器材开发

  1. 创建的预制体保存到CrossformResources\LabElementPrefabs中(推荐使用创建元器件工具,在项目内创建的新器材预制体不会自动同步到CrossformResources文件夹下,需要手动剪切,使用创建元器件工具可以自动创建到CrossformResources路径下)
  2. 导入已经分类好的美术资源,如果美术资源没有按照规则放入指定文件夹,则要重新返回美术节点处理
  3. 按照需求添加节点和修改预制体,开发完成之后,需要上传到git时,统一资源上传到CrossformResources的master中,差异资源上传到MultiformResources所对应的平台分支中。(差异资源的推送是需要gerrit的审核,推送到 refs/for/Main/**)
  4. 使用后台打包服务器打包。
  5. 使用应用包进行自测
  6. 使用OA平台进行提测,注意:如果OA上显示器材已适配PAD的元器件,此时不要单独提测PC器材,需要知照安卓端对应的适配人员,保持信息同步,避免器材新增的功能需依赖高版本引擎,安卓端的应用包版本不支持该功能导致往返。新增了资源版本,安卓端未提测会导致安卓端下载不到资源版本导致报错,可能造成QA阻塞而返回。特别是:器材需要修改了美术资源资源,缺失安卓资源的,应该先提安卓端资源依赖。

安卓端适配

前提:需要保证项目的Build Settings中选择的是Android, ElementResource的分支是Main/Android

  1. 将CrossformResources的master中统一资源拉取到最新,以此获得需要适配的元器件预制体
  2. 导入美术提供的安卓端的资源,此处需要检查资源是否有遗漏、资源是否替换错误、资源存放路径是否规范,如果有错误则需要返回重做。

    注意点:在适配过程中,可能会出现美术资源数量、命名等等与PC平台不一致问题,此时就会导致预制体节点索引的资源出现多个平台不相同的情况,例如:PC的材质球可能因为平台shader不同而被拆成多个材质球,而预制体却只有一个材质球位置。

    此时,分情况处理:

    • 已经适配过安卓的器材,即资源已经无法修改,此时需要编写资源平台适配文件,使用工具更改当前时间节点的PC预制体,方便后续打包使用;
    • 若是新适配元器件的资源,与美术人员沟通,能否与PC端资源统一,返回美术节点处理;
    • 新适配元器件资源,若美术人员无法/拒绝修改,则需要编写资源平台适配文件,使用工具解决问题;
    • 美术人员实在实在实在没法修改时,需要使用工具自行解决:元器件资源平台适配文件解读
  3. 替换完成后检查模型没有错误后,使用后台打包服务器打包。如果是使用资源平台适配工具重新索引过的预制体,请勿上传到CrossformResources中。

  4. 安卓导进去的资源可能存在一些节点面数的减少导致一些资源节点的mesh为空,如果是有绑定bullet组件的元器件就会导致报错,注意检测,只要发现有这样的节点面数缺失都是需要修改器材依赖基类包vlabcommonlua 3.3.52.
  5. 打出安卓包后使用支持2019的应用包进行自测。

    当前拉取规则是:在没有Override文件配置的情况下,器材包因为是全平台通用,直接拉取配置标签的最高版本,例如:默认拉取“Online”的最高版本。再通过Meta拉取到对应的资源版本,此时如果Android的资源版本缺失,则会显示加载失败(PC增加资源版本时需要PAD同步更新的理由)。

    自测时常用的文件位置:(根据应用端打包软件不同,根目录文件名有所区别,一般都以Vlab为关键词,0表示安卓资源管理器根目录位置)
    pad播放器使用到的所有文件根目录

    pad播放器器材包、资源包缓存位置

    pad播放器lab文件本地缓存位置

    ModuleServices.json、VersionOverrideConfig.json文件存放位置

  6. 器材适配安卓端的时候注意要联系pc端开发的同学,避免信息不同步,导致安卓端提测的版本过高覆盖掉pc,vr新增的功能。

  7. 安卓端资源在OA平台提测时,需要在资源对应版本中添加安卓版本,注意资源创建的质量等级为1级,请勿随意修改也不要保持和pc端资源 一样的等级,否则QA会拒测。

    安卓资源在器材提测后需要单独再提测一次,注意提测时需要填写资源的计划完成时间,以及提测中的提测内容,否则会和实验平台同步失败。

    由于安卓端的器材适配数量较少(注意看器材可能依赖其他器材,依赖的器材版本是否已经有安卓端的版本),在提测时要写清安卓暂不可测的关联器材和功能。策划案中存在有一些功能已经废弃或者说之前pc没有实现记得对比,如果存在也需要备注清楚(写小作文的时间到了)。

线上打包

打包平台路径:http://192.168.112.163:8080/

每次模型的meta文件里版本号变更上传到Git仓库后,打包平台会自动打包对应器材的pc和安卓平台的资源包。

打开工作空间,左下角为打包记录,可以区分打包中、打包成功、打包失败的状态。中间是打包成功的文件,可以在这里下载。

没有变更版本号的情况下有打包的需求,可以选择对应平台的构建器,选择左上方的Build With Parameters,BuildType选BuildElement,BuildCodes写要打包的器材的编码(如铂丝输入BoSiElement),点击开始构建。

详细使用说明:https://www.showdoc.com.cn/VLab/6340392320436265

资源规范管理问题:

LabElementCommon文件中的资源应为共用资源,即器材都可以引用到的资源,但是现在Common文件夹中,大部分都是被多个器材引用的资源(例如:细口瓶父子元器件引用到同一个模型,那么这个模型被判断为公用),少量资源是真正公用的(例如:手势资源)。导致Common文件夹下的资源数量较多。
目前解决方案:复制一份资源到LabElementResources的元器件文件夹中,重新更改复制后的资源引用到预制体上。为防止其他器材依赖丢失,请保留Common中的资源,后续统一处理。
具体步骤参考:
1、开发器材/适配安卓时,右键预制体Export Package,检查器材的资源是否放置在Common文件夹下。

判断是否为器材自身的资源,将器材自身使用的模型、材质球、贴图等等都可以复制一份到LabElementResources下的器材文件夹中
2、 右键预制体Select Dependencies查看所有依赖到的资源,可以单独操作Export引用的资源。

(一定要复制不能剪切,Unity中资源的guid是唯一的,如果在Unity中直接移动,其他依赖到此资源的器材,也会跟随引用到剪切后的文件夹下。如果在文件管理器里移动则会引用丢失)
*此处推荐使用工具,“复制选中元器件预制资源”,对资源进行复制,工具会自动替换预制体中的引用。

3、 (若使用工具,自动完成此步骤,可忽略)检查预制体中使用到该资源的位置,用复制后的资源手动替换。将预制体中的资源引用更换到LabElementResources下的资源中,而不是引用到Common文件夹。
4、 检查预制体是否有资源丢失,Export是否还依赖到复制前的资源。
若此时在Export还显示有资源没有正常更改引用,此时就需要查看这个资源是在何处被引用到。

使用Select Dependencies选中所引用的资源,在文件管理器打开查看其.meta文件,在meta文件中有Unity生成的guid。

直接将prefab拖入代码编辑器中,将预制体文件打开,可以搜索引用资源的guid(使用工具一般都正常替换了,大概率没有替换成功的引用不在预制体中)
有时候资源不是预制体直接引用的,如果此资源是材质球,则大概率是美术导出的fbx中引用到的,如果是贴图则大概率是shader中引用的,可以查看.meta文件中的引用。
查找到引用的位置后,可以考虑是否需要此资源,如果需要则将复制后资源的guid替换此处的guid:即可正常引用到器材资源文件夹中的资源。不需要则删除guid引用,
5、再次使用Export检查无误后上传gerrit即可,待gerrit通过后,再将预制体上传。