一种游戏引擎热更新方法、装置、设备及介质与流程

文档序号:33016364发布日期:2023-01-20 16:03阅读:43来源:国知局
一种游戏引擎热更新方法、装置、设备及介质与流程

1.本发明涉及计算机技术领域,特别涉及一种游戏引擎热更新方法、装置、设备及介质。


背景技术:

2.unity3d作为一款流行的3d引擎,其引擎本身并不支持在ios系统上执行热更新操作,因此,采用unity3d开发的手游便难以满足在游戏运营期间无需重新下载游戏客户端也能够修复已发现游戏漏洞的需求。为了满足在ios系统上热更新的问题,常采用xlua,puerts等热更方案,但是这些方案,要求开发人员在开发时,编写两种编程语言,如此一来,会降低游戏开发效率,此外,androi端支持c#反射热更,但是为了兼容ios热更需求,不得不放弃原生热更,从而采用xlua,puerts等热更方案。在运行时,因为lua虚拟机,和js虚拟机(比如v8)性能不太好,容易在低端手机上引起发热和卡顿。
3.为此,在开发游戏的热更新项目时如何无需编写多种编程语言,便可以实现在不同系统上的热更新,以降低开发难度,提高开发效率是本领域亟待解决的问题。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种游戏引擎热更新方法、装置、设备及介质,能够在开发游戏的热更新项目时如何无需编写多种编程语言,便可以实现在不同系统上的热更新,以降低开发难度,提高开发效率,其具体方案如下:
5.第一方面,本技术公开了一种游戏引擎热更新方法,包括:
6.当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件;
7.启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。
8.可选的,所述启动所述目标游戏引擎中的wasm虚拟机之前,还包括:
9.在所述目标游戏引擎中集成所述wasm虚拟机。
10.可选的,所述当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地之前,还包括:
11.将所述目标游戏引擎的热更新代码编译为动态链接库文件,并将所述动态链接库文件编译为wasm文件;
12.将所述wasm文件打包为所述目标游戏资源文件,并将所述游戏资源文件上传至所述云端资源服务器。
13.可选的,所述通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新,包括:
14.通过所述wasm虚拟机加载并执行所述目标游戏资源文件中的所述wasm文件,以便实现所述目标游戏引擎的热更新。
15.可选的,所述当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地,包括:
16.当客户端启动目标游戏引擎,则在所述目标游戏资源文件对应的资源版本号大于所述目标游戏引擎的资源版本号时,从所述云端资源服务器下载所述目标游戏资源文件至本地。
17.可选的,所述当客户端启动目标游戏引擎,则在所述目标游戏资源文件对应的资源版本号大于所述目标游戏引擎的资源版本号时,从所述云端资源服务器下载所述目标游戏资源文件至本地,包括:
18.当客户端启动目标游戏引擎,则确定所述目标游戏引擎的资源版本号,并确定所述云端资源服务器中的所述目标游戏资源文件对应的资源版本号;
19.将所述目标游戏引擎的资源版本号与所述目标游戏资源文件对应的资源版本号进行对比,如果所述目标游戏资源文件对应的资源版本号大于所述目标游戏引擎的资源版本号,则从所述云端资源服务器下载所述目标游戏资源文件至本地。
20.可选的,所述当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件,包括:
21.当客户端启动unity,则从云端资源服务器下载目标游戏资源文件;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新c#代码生成的文件。
22.第二方面,本技术公开了一种游戏引擎热更新装置,包括:
23.目标游戏资源下载模块,用于当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件;
24.热更新模块,用于启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。
25.第三方面,本技术公开了一种电子设备,包括:
26.存储器,用于保存计算机程序;
27.处理器,用于执行所述计算机程序,以实现前述公开的游戏引擎热更新方法。
28.第四方面,本技术公开了一种计算机可读存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的游戏引擎热更新方法。
29.可见,本技术提出一种游戏引擎热更新方法,包括:当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件;启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。综上可见,本技术使用wasm虚拟机加载并执行目标游戏资源文件,以实现目标游戏引擎的热更新,如此一来,在开发游戏的热更新项目时无需编写多种编程语言,便可以实现在不同系统上的热更新,降低了开发难度,提高了开发效率。
附图说明
30.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
31.图1为本技术公开的一种游戏引擎热更新方法流程图;
32.图2为本技术公开的一种具体的游戏引擎热更新方法流程图;
33.图3为本技术公开的一种热更新代码结构的示意图;
34.图4为本技术公开的一种游戏引擎热更新装置结构示意图;
35.图5为本技术公开的一种电子设备结构图。
具体实施方式
36.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
37.为了满足在ios系统上热更新的问题,常采用xlua,puerts等热更方案,但是这些方案,要求开发人员在开发时,编写两种编程语言,如此一来,会降低游戏开发效率,此外,androi端支持c#反射热更,但是为了兼容ios热更需求,不得不放弃原生热更,从而采用xlua,puerts等热更方案。在运行时,因为lua虚拟机,和js虚拟机性能不太好,容易在低端手机上引起发热和卡顿。
38.为此,本技术实施例提出一种游戏引擎热更新方案,能够在开发游戏的热更新项目时如何无需编写多种编程语言,便可以实现在不同系统上的热更新,以降低开发难度,提高开发效率。
39.本技术实施例公开了一种游戏引擎热更新方法,参见图1所示,该方法包括:
40.步骤s11:当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件。
41.本实施例中,所述客户端可以是ios客户端或者android客户端,当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新c#代码生成的文件。
42.需要指出的是,在当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地之前,需要将所述目标游戏引擎的热更新代码编译为动态链接库文件,并将所述动态链接库文件编译为wasm文件,然后将所述wasm文件打包为所述目标游戏资源文件,并将所述游戏资源文件上传至所述云端资源服务器,需要指出的是,所述目标游戏引擎可以是unity。
43.步骤s12:启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。
44.本实施例中,需要在目标游戏引擎中集成wasm虚拟机,进一步的,启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件。所述通过所述wasm虚拟机加载并执行所述目标游戏资源文件,具体包括:通过所述wasm虚拟机
加载并执行所述目标游戏资源文件中的所述wasm文件,以便实现所述目标游戏引擎的热更新。如此一来,在开发游戏的热更新项目时无需编写多种编程语言,便可以实现在ios客户端或者android客户端上的热更新,降低了开发难度,提高了开发效率。
45.在一种具体的实施方式中,当目标游戏引擎是unity时,需要在unity中先集成wasm虚拟机,进一步的,启动所述unity中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件中的wasm文件。由于unity作本身并不支持在ios系统上执行热更新操作,而为了满足在ios系统上热更新的问题,常采用xlua,puerts等热更方案,但是这些方案,要求开发人员在开发时,编写两种编程语言,如此一来,会降低游戏开发效率,相较于传统的需要编写两种编程语言的热更方案,本技术在unity的开发阶段,使用c#语言开发,并且本技术将热更的c#代码单独编译为动态链接库文件,并将所述动态链接库文件编译为wasm文件,然后将所述wasm文件打包为所述目标游戏资源文件,并通过预先集成在unity中的wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新,由于wasm虚拟机的性能远高于其他虚拟机,因此本技术能够大幅度优化性能,并能够提高开发以及执行效率。
46.可见,本技术提出一种游戏引擎热更新方法,包括:当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件;启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。综上可见,本技术使用wasm虚拟机加载并执行目标游戏资源文件,以实现目标游戏引擎的热更新,如此一来,在开发游戏的热更新项目时无需编写多种编程语言,便可以实现在不同系统上的热更新,降低了开发难度,提高了开发效率。
47.本技术实施例公开了一种具体的游戏引擎热更新方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图2所示,具体包括:
48.步骤s21:当客户端启动目标游戏引擎,则在所述目标游戏资源文件对应的资源版本号大于所述目标游戏引擎的资源版本号时,从所述云端资源服务器下载所述目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件。
49.本实施例中,当客户端启动目标游戏引擎,则确定所述目标游戏引擎的资源版本号,并确定所述云端资源服务器中的所述目标游戏资源文件对应的资源版本号,然后将所述目标游戏引擎的资源版本号与所述目标游戏资源文件对应的资源版本号进行对比,如果所述目标游戏资源文件对应的资源版本号大于所述目标游戏引擎的资源版本号,则从所述云端资源服务器下载所述目标游戏资源文件至本地。
50.步骤s22:启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。
51.其中,关于步骤s22更加具体的工作过程参见前述公开的实施例所示,在此不做具体赘述。
52.也就是说,本技术通过将目标游戏引擎的资源版本号与目标游戏资源文件对应的资源版本号进行比较,进一步判断是否需要从所述云端资源服务器下载所述目标游戏资源文件至本地,如果所述目标游戏资源文件对应的资源版本号大于所述目标游戏引擎的资源
版本号,则从所述云端资源服务器下载所述目标游戏资源文件至本地,然后启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。如此一来,在开发游戏的热更新项目时无需编写多种编程语言,便可以实现在不同系统上的热更新,降低了开发难度,提高了开发效率。
53.在一种具体的实施方式中,本技术能够包括以下内容:1、在unity中集成wasm虚拟机,具体的,在unity中集成wasmersharp,wasmersharp是wasmer提供的webassembly超轻量级容器,webassembly是一种运行在现代网络浏览器中的新型代码,提供新的性能特性和效果;2、为c#代码和webassembly交互编写桥接代码,本技术编写桥接代码给webassembly侧调用,所述桥接代码具体可以是:
[0054][0055]
在交互传递参数时,将数据内容存贮到memory中,并将地址传递给此代码,在c#以内存读取的方式获取传递参数内容;3、在unity开发阶段,使用c#来开发,但是需要将热更的c#代码,全部放到一个文件夹下,在文件夹最外层新建一个assembly definition文件,并命名为需要的热更的dll名字,比如说hotfix.asmdef,参见图3所示,它能在编译时,将hotfix.asmdef所在文件夹下的所有代码,编译成一个dll,并在打包时,使用unity的ipreprocessbuildwithreport接口,移除指定的dll,也即,将热更代码排除;具体热更代码结构如下:
[0056]
[0057][0058]
4、将热更的c#代码编译成wasm字节码,将wasm字节码打包成游戏资源文件,上传至云端资源服务器;5、ios或android客户端在启动时,和资源服务器对比资源版本号,如果服务器上的版本号比本地的高,则将服务器上最新的资源下载至本地;6、启动wasm虚拟机,加载资源文件中的wasm字节码,开始执行,即可实现ios平台和android平台的热更新,执行过程如下所示:
[0059]
[0060][0061]
由此可见,本技术开发时使用c#语言开发,无需编写多种编程语言,降低热更新项目开发难度,增加开发效率,其次,本技术使用wasm虚拟机加载并执行资源文件,以便实现游戏引擎的热更新,其执行效率接近原生代码执行效率,性能远高于其他虚拟机。
[0062]
相应的,本技术实施例还公开了一种游戏引擎热更新装置,参见图4所示,该装置包括:
[0063]
目标游戏资源下载模块11,用于当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件;
[0064]
热更新模块12,用于启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。
[0065]
其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0066]
可见,本技术提出一种游戏引擎热更新方法,包括:当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件;启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。综上可见,本技术使用wasm虚拟机加载并执行目标游戏资源文件,以实现目标游戏引擎的热更新,如此一来,在开发游戏的热更新项目时无需编写多种编程语言,便可以实现在不同系统上的热更新,降低了开发难度,提高了开发效率。
[0067]
进一步的,本技术实施例还提供了一种电子设备。图5是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
[0068]
图5为本技术实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、显示屏23、输入输出接口24、通信接口25、电源26和通信总线27。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现以下步骤:
[0069]
当客户端启动目标游戏引擎,则从云端资源服务器下载目标游戏资源文件至本地;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新代码生成的文件;
[0070]
启动所述目标游戏引擎中的wasm虚拟机,并通过所述wasm虚拟机加载并执行所述目标游戏资源文件,以便实现所述目标游戏引擎的热更新。
[0071]
在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,
进一步还可以实现以下步骤:
[0072]
在所述目标游戏引擎中集成所述wasm虚拟机。
[0073]
在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,进一步还可以实现以下步骤:
[0074]
将所述目标游戏引擎的热更新代码编译为动态链接库文件,并将所述动态链接库文件编译为wasm文件;
[0075]
将所述wasm文件打包为所述目标游戏资源文件,并将所述游戏资源文件上传至所述云端资源服务器。
[0076]
在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
[0077]
通过所述wasm虚拟机加载并执行所述目标游戏资源文件中的所述wasm文件,以便实现所述目标游戏引擎的热更新。
[0078]
在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
[0079]
当客户端启动目标游戏引擎,则在所述目标游戏资源文件对应的资源版本号大于所述目标游戏引擎的资源版本号时,从所述云端资源服务器下载所述目标游戏资源文件至本地。
[0080]
在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
[0081]
当客户端启动目标游戏引擎,则确定所述目标游戏引擎的资源版本号,并确定所述云端资源服务器中的所述目标游戏资源文件对应的资源版本号;
[0082]
将所述目标游戏引擎的资源版本号与所述目标游戏资源文件对应的资源版本号进行对比,如果所述目标游戏资源文件对应的资源版本号大于所述目标游戏引擎的资源版本号,则从所述云端资源服务器下载所述目标游戏资源文件至本地。
[0083]
在一些具体实施方式中,所述处理器通过执行所述存储器中保存的计算机程序,具体可以实现以下步骤:
[0084]
当客户端启动unity,则从云端资源服务器下载目标游戏资源文件;其中,所述目标游戏资源文件为基于所述目标游戏引擎的热更新c#代码生成的文件。
[0085]
本实施例中,电源26用于为电子设备20上的各硬件设备提供工作电压;通信接口25能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口24,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
[0086]
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括计算机程序221,存储方式可以是短暂存储或者永久存储。其中,计算机程序221除了包括能够用于完成前述任一实施例公开的由电子设备20执行的游戏引擎热更新方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
[0087]
进一步的,本技术实施例还公开了一种计算机可读存储介质,用于存储计算机程
序;其中,所述计算机程序被处理器执行时实现前述公开的游戏引擎热更新方法。
[0088]
关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0089]
本技术书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0090]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0091]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0092]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0093]
以上对本技术所提供的一种游戏引擎热更新方法、装置、设备、存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1