热更新学习笔记(一)

来源:互联网 发布:java length 中文 编辑:程序博客网 时间:2024/06/05 04:10

热更新学习笔记(一)

一、什么是热更新?

   举例来说吧,游戏上线之后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载(浪费流量和时间,对于玩家的体验不好)。现在大部分游戏都是使用热更新了。

热更新可以在不重新下载客户端的情况下,更新游戏的内容。

热更新一般应用在手机网游上。

二、为什么C#脚本不可以直接更新?

       c#是一门编程语言,它运行之前需要进行编译,而这个编译的过程在移动平台无法完成,所以在我们游戏的逻辑更改,c#代码发生改变的时候,我们就需要重新在开发环境下编译,然后重新打包,然后让玩家去下载更新最新的版本。

这个体验差:包下载需要的时间长,而且很多资源不需要更新,也需要重新下载,浪费流量。

三、热更新有哪些实现方式?

1. 使用Lua脚本编写游戏的UI或者其他的逻辑

   Lua是一个精悍小巧的脚本语言,可以跨平台运行解析,而且不需要编译的过程

   对于一个手机网游来说,90%的代码可以用Lua来写,用Lua编写的代码越多,那么它可进更新的部分也就比较多了,用Lua来写也是有缺点的,就是说它的性能会比直接用C#来写的话性能会稍微低一点,因为我们用Lua脚本的话,是Lua去调用C#里面的方法,所以说用Lua去调用C#,不如直接用C#去操作游戏逻辑更快。

2. 使用c#Light

3. 使用c#反射技术

四、关于AssetBundle

什么是AssetBundle?

         Unity提供了一个资源更新技术,就是通过AssetBundle,我们可以通过AssetBundle更新游戏UI,也可以把脚本或者其他代码当成资源打包成AssetBundle然后更新到客户端。

在所有的热更新技术中都需要AssetBundle

如何利用Lua进行热更新?

在移动端可以编写Lua的解析器,通过这个解析器,可以运行最新的Lua脚本,

然后我们控制器逻辑的代码都写成Lua脚本。

五、Lua简介

       Lua是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto lerusamlimschyWaldemar CelesLuiz Henrique

De Figueiredo锁组成并与1993年开发。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。