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 ...
随机推荐
- 在Windows Server 2008 R2下搭建jsp环境(一)
要把jsp项目发布到服务器上必须要有其运行的环境,首先要明确的是: 1.数据库环境:mysql,下载和安装步骤见: 2.后台代码环境:JDK,下载和安装步骤见: 3.服务器:Apache Tomcat ...
- java基础学习周计划之2--面向对象
JAVA面向对象第一天一. 知识点:1. 类和对象二. 关键问题(理论):1. 简述什么是类.什么是对象2. 简述基本类型变量与引用类型变量赋值时的差别3. 简述null的含义三. 关键代码(操作): ...
- 对象和XML文件的转换
很多时候,我们开发程序都需要使用到对象的XML序列化和反序列化,对象的XML序列化和反序列化,既可以使用XML对象(XmlDocument)进行操作,也可以使用XmlSerializer进行操作,两个 ...
- util.go
packagesego import( "bytes" "fmt" ) //输出分词结果为字符串 // //有两种输出模式,以"中华人 ...
- BZOJ_3083_遥远的国度_树链剖分+线段树
BZOJ_3083_遥远的国度_树链剖分 Description 描述 zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度.当zcwwzdjn准备进入遥远的国度继续追杀时,守护神Ra ...
- BZOJ_2962_序列操作_线段树
Description 有一个长度为n的序列,有三个操作1.I a b c表示将[a,b]这一段区间的元素集体增加c,2.R a b表示将[a,b]区间内所有元素变成相反数,3.Q a b c表示询问 ...
- Flash与EEPROM
网上找的,感觉说的不错 FLASH 和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小 ...
- Linux的内存分页管理
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载 内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存 ...
- 广州站长沙龙 MIP 问题及答案
1. mip提交几个月时间了,生效量比较少,是什么原因? 答:提交 MIP 页面后,经过收录.校验.和生效三个步骤,才能在结果页看到闪电标. 1)提交 URL 后,spider 会去抓取收录: 2)页 ...
- 从壹开始前后端分离 42 ║支持多种数据库 & 快速数据库生成
缘起 哈喽大家周三好,休息了一段时间,打算准备找工作了