Unity资源打包学习笔记(二)、如何实现高效的unity AssetBundle热更新
转载请标明出处:http://www.cnblogs.com/zblade/
0x01 目的
在实际的游戏开发中,对于游戏都需要进行打补丁的操作,毕竟,测试是有限的,而bug是无法预估的。那么在手游中,unity对于打补丁的方式就是提供热更新。本文主要针对assetbundle的热更新流程进行设计探讨,抛砖引玉,希望有更优的解决方案。
0x02 基本流程
在实际的游戏开发中,常常会被assetbundle的热更新折腾的无法入眠,每次在进行热更新的时候都需要反复测试,因为这牵涉着实际的上线游戏运行。
为了提高热更新的鲁棒性,优秀的做法,就是将热更新放在平时的开发中,伴随着开发中进行每天的热更新校验,让开发人员,策划人员,测试人员,甚至美术人员,都参与到实际的热更新中,这样可以在平时就测试出可能出现的Bug,从而避免在游戏需要热更新时候的紧急测试。
为了实现即时开发即时热更新的机制,我们就需要设计好热更新流程,明晰的设计方案,可以指导实际的开发工作。对于流程设计,我主要分为两个部分进行分别探讨:
1、如何快速打出assetbunle包
要实现ab的热更新,那么unity打ab就是一个关键点。在以前的项目开发中,打ab包,是一个很头疼的事情,特别是在资源量迭代增大之后,在后期的开发中,打ab包就是一个极为费时的步骤。
分析其费时的原因,是由于在每次打ab包的时候,如果每次都是重新打ab包,那么自然每次都是极为费时的。Unity提供了一种增量打包的方式,具体可以查看相关API,只要在固定的输出路径中进行增量打包,那么每次打ab包的时候,只会对变化(增删)和新增的ab进行重新打ab,所以只要分析好资源的依赖关系,然后设置好ab对应的name,剩下的增量打包操作只需要交给unity去执行即可。
2、基于快速打ab包,快速在真机上验证资源的更新
完成快速的ab打包后,只需要上传到资源机/cdn上,在手机上即可实现实时的ab更新,那么日常开发中如果对于美术资源在手机上的效果需要即刻测试,那么只需要提交资源,然后执行打ab操作,上传到资源机/cdn等上,然后更新到手机上快速验证效果。
3、基于快速打ab包,实现小包的打包方式
在日常开发中,每次打游戏包,都会带来安装包包体较大,特别是在游戏后期,资源量大,对应的游戏包包体极大,每次测试在安装的时候,下载包体就很费时。而快速打ab包,可以将这部分工作进行优化。每次打游戏包的时候,可以区分是否携带ab资源。如果不携带ab资源,那么整体的游戏包只需要进行代码编译和相关打包,而游戏中使用的资源,可以通过ab更新的方式,实时更新,每次有资源替换就更新ab资源,这样测试每天开启测试工作的时候,只需要少量更新,即可快速测试。
这样的小包模式,适合版本功能测试的分支开发中,如果Lua文件也用热更新的方式,那么一个小包可以较为持续的测试对应功能,当功能测试完成后,即可合并到主分支。
既然有小包,那么对应的就会有大包。这儿所谓的大包,就是将该版本的ab资源一起打入在游戏安装包中。在平时的资源提交中,都会触发对应的ab资源打包,所以当执行打打包的时候,耗费在ab中的实际不会很长,这样可以整体优化打安装包的时间。
0x03 如何利用jenkins来执行日常资源打ab包
说完快速打ab的优点后,说说怎么利用jenkins来实现快速打ab包。
日常简单的build工作,可以分配一台单独的资源打包机执行打资源ab包即可。利用开源的jenkins,可以较为快速的实现打ab操作。
jenkins可以配合Git/SVN实现相关的hook,在每次Git/SVN的服务器中,有push tag/post-commit操作的时候,都可以调用jenkins的API来执行相关的job。在相关job中调用unity的命令行来实现打ab操作。
如果存储空间允许,可以将工程切分为不同平台,利用Jenkins的pipeline实现并发打ab操作,实现高效的打ab包操作。
简易的效果图如下:
0x04 整体示意图
综上所述,可以画出整体示意图,懒得画了,就随手拍一张手绘吧 (忽略我的灵魂画法):D
Unity资源打包学习笔记(二)、如何实现高效的unity AssetBundle热更新的更多相关文章
- Unity资源打包学习笔记(一)、详解AssetBundle的流程
转载请标明出处:http://www.cnblogs.com/zblade/ 本文参照unity官网上对于assetBundle的一系列讲解,主要针对assetbundle的知识点做一个梳理笔记,也为 ...
- Unity基础知识学习笔记二
1,object Instantiate(object original,Vector3 position,Quaternion rotation) 克隆原始物体,并返回克隆物体. ...
- 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型
[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- 【Unity Shaders】学习笔记——SurfaceShader(八)生成立方图
[Unity Shaders]学习笔记——SurfaceShader(八)生成立方图 转载请注明出处:http://www.cnblogs.com/-867259206/p/5630261.html ...
- 【Unity Shaders】学习笔记——渲染管线
[Unity Shaders]学习笔记——Shader和渲染管线 转载请注明出处:http://www.cnblogs.com/-867259206/p/5595924.html 写作本系列文章时使用 ...
- 【Unity 3D】学习笔记三十五:游戏实例——摄像机切换镜头
摄像机切换镜头 在游戏中常常会切换摄像机来观察某一个游戏对象,能够说.在3D游戏开发中,摄像头的切换是不可或缺的. 这次我们学习总结下摄像机怎么切换镜头. 代码: private var Camera ...
- Linux内核学习笔记二——进程
Linux内核学习笔记二——进程 一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...
- Unity资源打包之Assetbundle
转 Unity资源打包之Assetbundle 本文原创版权归 csdn janeky 所有,转载请详细注明原创作者及出处,以示尊重! 作者:janeky 原文:http://blog.csdn.n ...
随机推荐
- Mave手动安装jar包
今天配置Maven项目时有一个相应的jdbc驱动jar包导不进去,就自己导入了. 首先在官网上下载该jar包,地址为http://mvnrepository.com/ 点击jar下载. 用maven命 ...
- 阿里巴巴的开源项目Druid(关于数据库连接)
1 配置 和dbcp类似,druid的常用配置项如下 配置 缺省值 说明 name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来.如果没有配置,将会生成一个名字,格 ...
- 【Canal源码分析】parser工作过程
本文主要分析的部分是instance启动时,parser的一个启动和工作过程.主要关注的是AbstractEventParser的start()方法中的parseThread. 一.序列图 二.源码分 ...
- CentOS7 安装Redis Cluster集群
上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...
- 使用jquery 的ajax 与 Java servlet的交互
由于是使用jquery的 所以别忘记导入jq 下面是jsp文件 <%@ page language="java" contentType="text/html; c ...
- java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
Linux下使用eclipse开发web项目,运行的时候出现 Java.lang.ClassNotFoundException: com.MySQL.jdbc.Driver,解决办法如下: 1.导入M ...
- selenium IDE工具页面介绍!
selenium IDE工具页面,常用功能点介绍
- 【SAP业务模式】之STO(二):系统配置
本篇博文开始讲述STO业务模式的配置! 一.定义发货工厂的装运数据: 目录:SPRO-物料管理-采购-采购订单-设置库存调拨订单-定义工厂的装运数据 定义发货工厂的装运数据: 为收货工厂分配客户代码: ...
- Mark一下~
今天在cnblogs开通了博客,mark一下~ 上半年的Rebase阶段已经完成,希望下半年的Promotion阶段能收获满满,也希望自己能写出高质量的博客.
- 前端利用百度开发文档给的web服务接口实现对某个区域周边配套的检索
最近项目需要实现地图功能,以便于实现对房源周边配套设施的检索.内容如下 其实百度官方有对应的api,但是对于一个网站来说这样的样式难免有些难看 这样的结果显然不能满足当下的需求,所以我决定利用官方给的 ...