游戏开发引擎和Docker的交互方法、设备和系统

文档序号:1868087 发布日期:2021-11-23 浏览:9次 >En<

阅读说明:本技术 游戏开发引擎和Docker的交互方法、设备和系统 (Game development engine and Docker interaction method, device and system ) 是由 刘舟 杨帆 马柏威 于 2021-07-23 设计创作,主要内容包括:本发明公开了一种游戏开发引擎和Docker的交互方法,包括:响应于Docker工具窗口启动操作,与Docker服务器建立连接;获取Docker工具窗口中Docker操作对应的操作信息;将操作信息按照预设的数据格式进行序列化,生成第一数据包;将第一数据包发送给Docker服务器,以使Docker服务器对第一数据包进行解析,以解析出操作信息并执行与操作信息对应的Docker操作,在执行完Docker操作后将执行结果进行序列化以生成第二数据包返回;根据第二数据包更新Docker工具窗口的工具状态。本发明公开了一种游戏开发引擎和Docker的交互设备、系统、游戏开发引擎和Docker服务器。采用本发明实施例,能够将Docker服务运行环境从游戏开发引擎中隔离,解决环境冲突问题,还能减少繁琐的Docker指令操作,提高生产效率和降低错误率。(The invention discloses an interaction method of a game development engine and a Docker, which comprises the following steps: responding to a Docker tool window starting operation, and establishing connection with a Docker server; acquiring operation information corresponding to a Docker operation in a Docker tool window; serializing the operation information according to a preset data format to generate a first data packet; sending the first data packet to a Docker server so that the Docker server analyzes the first data packet to analyze operation information and execute Docker operation corresponding to the operation information, and serializing an execution result after the Docker operation is executed to generate a second data packet to return; and updating the tool state of the Docker tool window according to the second data packet. The invention discloses a game development engine and Docker interaction device, a game development engine and Docker server. By adopting the embodiment of the invention, the Docker service operation environment can be isolated from the game development engine, the problem of environmental conflict is solved, the complicated Docker instruction operation can be reduced, the production efficiency is improved, and the error rate is reduced.)

游戏开发引擎和Docker的交互方法、设备和系统

技术领域

本发明涉及游戏开发技术领域,尤其涉及一种游戏开发引擎和Docker的交互方法、设备、系统、游戏开发引擎和Docker服务器。

背景技术

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器(container)中,然后发布到任何流行的Linux机器中。由于其基于LXC的轻量级虚拟化的特点,Docker相比其他虚拟技术,具有启动快、资源占用小的优势。

在游戏开发过程中,通常要在游戏开发引擎中使用Docker,比如在游戏开发项目中直接使用Docker插件,使得游戏开发引擎和Docker插件共用一个运行环境。但是,部分游戏开发引擎官方使用的是自己修改过的.net库,比如Unity,与Docker.DotNet库依赖的.net库内部实现不一致,导致Docker.DotNet与游戏开发引擎的运行环境产生冲突,无法在同个运行环境运行,进而影响游戏项目的开发。另外,在游戏开发项目开发过程中使用Docker,需要开发人员熟练掌握大量的Docker操作指令,通过开发人员来命令行指令的方式进行Docker操作,会影响游戏开发项目生产效率以及导致游戏开发引擎的错误率较高。

发明内容

本发明实施例的目的是提供一种游戏开发引擎和Docker的交互方法、设备、系统、游戏开发引擎和Docker服务器,能够将Docker服务运行环境从游戏开发引擎中隔离开来,解决Docker.DotNet与游戏开发引擎的环境冲突问题,同时还能减少繁琐的Docker指令操作,提高生产效率和降低错误率。

为实现上述目的,本发明实施例提供了一种游戏开发引擎和Docker的交互方法,包括:

响应于Docker工具窗口启动操作,与Docker服务器建立连接;其中,所述Docker工具窗口为预先搭建的用于提供具有Docker功能的UI交互组件;

响应于所述Docker工具窗口中的Docker操作,获取与所述Docker操作对应的操作信息;

将所述操作信息按照预设的数据格式进行序列化,以生成第一数据包;

将所述第一数据包发送给所述Docker服务器,以使所述Docker服务器对所述第一数据包进行解析,以解析出操作信息并执行与操作信息对应的Docker操作,并在执行完所述Docker操作后将执行结果进行序列化以生成第二数据包返回;

接收所述Docker服务器返回的第二数据包,并根据所述第二数据包更新所述Docker工具窗口的工具状态。

作为上述方案的改进,所述操作信息包括指令类型、指令ID和指令数据。

作为上述方案的改进,所述根据所述第二数据包更新所述Docker工具窗口的工具状态,包括:

对所述第二数据包进行反序列化解析,以解析出所述第二数据包中的执行结果和指令ID;

根据所述指令ID查询对应的Docker操作;

根据所述执行结果,在所述Docker工具窗口中将记录所述Docker操作的状态值更新为预设的状态表征值,并在所述Docker工具窗口中显示预设的提示信息。

作为上述方案的改进,所述数据格式包括json、ProtoBuf和yaml中的至少一种。

为实现上述目的,本发明实施例还提供一种游戏开发引擎和Docker的交互方法,包括:

响应于游戏开发引擎的连接操作,与所述游戏开发引擎建立连接;

接收所述游戏开发引擎发送的第一数据包,并对所述第一数据包进行反序列化解析,以解析出对应的操作信息;其中,所述第一数据包通过所述游戏开发引擎获取其预先制定的Docker工具窗口中的Docker操作,并对所述Docker操作对应的操作信息按照预设的数据格式进行序列化生成的;

执行所述操作信息对应的Docker操作,并在执行完所述Docker操作后将执行结果按照预设的数据格式进行序列化,以生成第二数据包;

根据所述操作信息调用对应的API接口,并通过所述API接口将所述第二数据包发送给所述游戏开发引擎,以使所述游戏开发引擎根据所述第二数据包更新所述Docker工具窗口的工具状态。

作为上述方案的改进,所述API接口包括至少两个,其按照预设的封装格式封装;则,所述根据所述操作信息调用对应的API接口,包括:

根据所述操作信息中的指令类型在预设的映射表中查询对应的API接口;

将所述操作信息中的指令数据作为参数调用所述API接口。

为实现上述目的,本发明实施例还提供了一种游戏开发引擎,包括:

连接模块,用于响应于Docker工具窗口启动操作,与Docker服务器建立连接;其中,所述Docker工具窗口为预先搭建的用于提供具有Docker功能的UI交互组件;

操作信息获取模块,用于响应于所述Docker工具窗口中的Docker操作,获取与所述Docker操作对应的操作信息;

第一数据包生成模块,用于将所述操作信息按照预设的数据格式进行序列化,以生成第一数据包;

第一数据包发送模块,用于将所述第一数据包发送给所述Docker服务器,以使所述Docker服务器对所述第一数据包进行解析,以解析出操作信息并执行与操作信息对应的Docker操作,并在执行完所述Docker操作后将执行结果进行序列化以生成第二数据包返回;

工具状态更新模块,用于接收所述Docker服务器返回的第二数据包,并根据所述第二数据包更新所述Docker工具窗口的工具状态。

为实现上述目的,本发明实施例还提供了一种Docker服务器,包括:

连接模块,用于响应于游戏开发引擎的连接操作,与所述游戏开发引擎建立连接;

第一数据包接收模块,用于接收所述游戏开发引擎发送的第一数据包,并对所述第一数据包进行反序列化解析,以解析出对应的操作信息;其中,所述第一数据包通过所述游戏开发引擎获取其预先制定的Docker工具窗口中的Docker操作,并对所述Docker操作对应的操作信息按照预设的数据格式进行序列化生成的;

第二数据包生成模块,用于执行所述操作信息对应的Docker操作,并在执行完所述Docker操作后将执行结果按照预设的数据格式进行序列化,以生成第二数据包;

第二数据包发送模块,用于根据所述操作信息调用对应的API接口,并通过所述API接口将所述第二数据包发送给所述游戏开发引擎,以使所述游戏开发引擎根据所述第二数据包更新所述Docker工具窗口的工具状态。

为实现上述目的,本发明实施例还提供了一种游戏开发引擎和Docker的交互设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一实施例所述的游戏开发引擎和Docker的交互方法。

为实现上述目的,本发明实施例还提供了一种游戏开发引擎和Docker的交互系统,包括上述实施例所述的游戏开发引擎以及上述实施例所述的Docker服务器。

相比于现有技术,本发明实施例公开的游戏开发引擎和Docker的交互方法、设备、系统、游戏开发引擎和Docker服务器,通过在游戏开发引擎与Docker服务器定义用于规范数据传输方式的数据格式,游戏开发引擎与Docker服务器依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎与Docker服务器的数据交互。将Docker服务单独打包成.Net可执行程序,可将其运行环境从游戏开发引擎中隔离开来,解决Docker.DotNet与游戏开发引擎环境冲突问题,并将插件对游戏开发项目的入侵影响降低。另外,开发者可以通过可视化的Docker工具窗口,在游戏开发引擎中使用Docker各项功能,而开发者不需要掌握Docker相关的知识和技能,大大降低了Docker的使用门槛和学习成本,从而减少繁琐的Docker指令操作,提高生产效率和降低错误率。

附图说明

图1是本发明实施例提供的一种游戏开发引擎和Docker的交互方法的流程图;

图2是本发明实施例提供的另一种游戏开发引擎和Docker的交互方法的流程图;

图3是本发明实施例提供的一种游戏开发引擎的结构框图;

图4是本发明实施例提供的一种Docker服务器的结构框图;

图5是本发明实施例提供的一种游戏开发引擎和Docker的交互设备的结构框图;

图6是本发明实施例提供的另一种游戏开发引擎和Docker的交互设备的结构框图;

图7是本发明实施例提供的一种游戏开发引擎和Docker的交互系统的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1是本发明实施例提供的一种游戏开发引擎和Docker的交互方法的流程图,所述游戏开发引擎和Docker的交互方法包括:

S11、响应于Docker工具窗口启动操作,与Docker服务器建立连接;

S12、响应于所述Docker工具窗口中的Docker操作,获取与所述Docker操作对应的操作信息;

S13、将所述操作信息按照预设的数据格式进行序列化,以生成第一数据包;

S14、将所述第一数据包发送给所述Docker服务器,以使所述Docker服务器对所述第一数据包进行解析,以解析出操作信息并执行与操作信息对应的Docker操作,并在执行完所述Docker操作后将执行结果进行序列化以生成第二数据包返回;

S15、接收所述Docker服务器返回的第二数据包,并根据所述第二数据包更新所述Docker工具窗口的工具状态。

值得说明的是,本发明实施例所述的游戏开发引擎和Docker的交互方法由游戏开发引擎执行实现,所述游戏开发引擎设于客户端,与设于服务器端的Docker进行数据交互。作为示例的,在本发明实施例中所述游戏开发引擎为Unity,但在其它实施例中,所述游戏开发引擎还可以是虚幻引擎、CryEngine 3、HeroEngine、Rage Engine、Project Anarchy、GameSalad、GameMaker:Studio、App Game Kit、Cocos2D等。

在本发明实施例中,通过在游戏开发引擎和Docker服务器两端定义用于规范数据传输方式的数据格式,游戏开发引擎与Docker服务器依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎与Docker服务器的数据交互。

值得说明的是,序列化是指将变量(对象)从内存中变成可存储或可传输的过程,反序列化是指将变量内容从序列化的对象重新读到内存里的过程;因此,对数据进行序列化主要就是为了传输方便,发送端将要传输的对象序列化为字节流数据,从而提高传输效率,接收端在接收到字节流数据时通过反序列化转化成对象。

示例性的,在游戏开发引擎和Docker服务器两端定义的数据格式包括json、ProtoBuf和yaml中的至少一种,需要说明的是,只要所述数据格式能够进行序列化和反序列化,同时还能用于网络传输的数据格式,均可适用于本发明实施例。以json数据格式为例进行说明,所述json数据中包含:指令类型、指令数据和指令ID,json数据格式满足:并列的数据之间用逗号(",")分隔;映射用冒号(":")表示;并列数据的集合(数组)用方括号("[]")表示;映射的集合(对象)用大括号("{}")表示。如表示为:[{"指令类型":"类型1","指令数据":数据1,"指令ID":ID1},{"指令类型":"类型2","指令数据":数据2,"指令ID":ID2}]。

在本发明实施例中,通过在游戏开发引擎和Docker服务器两端根据Docker.DotNet API参数类型,制定用于通讯传输,可进行Json序列化和反序列化的C#数据类。

示例性的,Docker.DotNet是DotNet团队一个开源的C#库,它提供了一批可对Docker操作的API接口,这里的“参数类型”指的是调用接口需要传入的类(Class)。在本发明实施例中使用了Newtonsoft.Json库,该库是C#常用的,用于处理json数据的库,该库提供了对Json进行序列化和反序列化的API接口,可将一个类对象序列化为json格式的字符串,也可将json格式的字符串反序列为类对象。根据Docker.DotNet库API接口的参数类型,设计了自己的数据类型,数据类型中仅声明定义了参数类型中所有数据相关的对象,不具备参数类型的函数(方法)。所述游戏开发引擎和所述Docker服务器两端的数据类型可以直接使用Newtonsoft.Json库,进行json的序列化和反序列化。

具体地,在步骤S11中,在所述Docker工具窗口启动时,一并启动Docker服务器,此时所述游戏开发引擎创建Socket对象与所述Docker服务器进行连接,与此同时,所述Docker服务器也同样创建Socket对象等待所述游戏开发引擎的连接。

值得说明的是,所述游戏开发引擎要和所述Docker服务器建立通信时,需要通过socket建立一条通信“线路”。具体搭建方式为:所述游戏开发引擎建立mysocket对象向所述Docker服务器发出呼叫请求,所述Docker服务器则建立一个等待接收套接字的对象serversocket对象,建立套接字连接后所述游戏开发引擎和所述Docker服务器便可通过分别调用输入流getinputstream()方法和输出流getoutputstream()方法进行通信。

示例性的,所述Docker工具窗口为预先搭建的用于提供具有Docker功能的UI交互组件。通过使用UI Toolkit制作可视化Unity Docker工具窗口,提供常用Docker功能的UI交互组件,如创建Docker容器、启动Docker容器、停止Docker容器和获取日志等操作。值得说明的是,使用UI Toolkit制作可视化Unity Docker工具窗口的过程可参考现有技术,在此不再赘述。

具体地,在步骤S12中,所述Docker工具窗口中设有UI工具,用户可通过操作所述UI工具与Docker服务器进行交互,此时获取与Docker操作对应的操作信息。所述操作信息包括指令类型、指令ID和指令数据,所述指令类型表示传输的数据类型,所述指令ID定义具体哪一个Docker操作(比如:创建Docker容器、启动Docker容器、停止Docker容器),所述指令数据为Docker操作的具体操作数据。

值得说明的是,所述UI工具中的所有操作的主要目的是与Docker服务进行交互,比如使用UI工具发起“创建Docker容器”的指令,指令类型为”CreateContainer”(字符串),指令数据为CreateContainerParametersData(前文提到的自己设计的数据类型)序列化后的Json格式的字符串,不同的操作对应不同的指令和不同的数据类型,但都是以字符串的形式表示。

具体地,在步骤S13中,将所述指令类型、指令ID和指令数据按照Json数据格式进行序列化,封装成第一数据包。

具体地,在步骤S14中,将所述第一数据包发送给所述Docker服务器,所述Docker服务器在接收到所述第一数据包后,对所述第一数据包进行反序列化解析,以解析出所述第一数据包中的指令类型、指令ID和指令数据。根据所述指令ID可以查询到对应的Docker操作,所述Docker服务器执行所述Docker操作,比如所述Docker操作为“创建Docker容器”,此时所述Docker服务器创建Docker容器。所述Docker服务器在执行完所述Docker操作后将执行结果按照所述数据格式进行序列化,生成第二数据包返回给所述游戏开发引擎。

所述Docker服务器中的API接口包括至少两个,其按照预设的封装格式封装。所述封装格式为Docker.DotNet API参数类型,为了进行网络传输,而Docker API对此不支持,因此需要按照所述封装格式封装API接口。Docker API接口所声明定义的参数类型(Class)因内部存在函数(Function)以及内部逻辑无法直接进行序列化和方序列化,进而无法进行网络传输,所以需要封装一套使用可序列化以及反序列化的数据类型的接口,然后接口内部再通过这些数据类型对象实例化出Docker API接口参数类型对象,再作为参数调用Docker API接口。

具体的,所述Docker服务器根据所述操作信息中的指令类型在预设的映射表中查询对应的API接口,并将所述操作信息中的指令数据作为参数调用所述API接口。

示例性的,所述Docker服务器事先定义好了一个键值对的映射表,指令类型是键,API接口函数是值,在拥有键的情况下通过映射表能直接获取到值,即API接口函数。所述将所述操作信息中的指令数据作为参数调用所述API接口,包括:将所述指令数据反序列为数据类型对象;通过反射的方式,获取数据类型对象中所有变量的值以及名称;实例化DockerAPI接口的参数类型对象;通过反射的方式,获取到参数类型对象所有变量的名称;将数据类型对象同名变量的值赋值给参数类型对象的变量;将此时参数类型对象作为参数,调用上面找到的Docker API接口。

具体地,在步骤S15中,在接收到所述Docker服务器返回的第二数据包后,所述游戏开发引擎需要根据所述第二数据包更新所述Docker工具窗口的工具状态。所述根据所述第二数据包更新所述Docker工具窗口的工具状态,包括步骤S151~S153:

S151、对所述第二数据包进行反序列化解析,以解析出所述第二数据包中的执行结果和指令ID;

S152、根据所述指令ID查询对应的Docker操作;

S153、根据所述执行结果,在所述Docker工具窗口中将记录所述Docker操作的状态值更新为预设的状态表征值,并在所述Docker工具窗口中显示预设的提示信息。

示例性的,所述执行结果包括“成功”和“失败”两种,则,所述状态表征值也包括“成功”和“失败”两种,所述工具状态指的是工具内部变量的值以及可视化窗口UI的展示,比如:创建Docker容器的Docker操作,收到Docker服务器的Docker容器创建成功的执行结果后,会将工具内部记录容器创建状态的变量的状态值改为“成功”,同时可视化窗口UI上也显示“容器创建成功”的提示信息。另外,通过所述指令ID可以找到具体哪一次操作,将所述Docker服务器的返回结果和所述游戏开发引擎中的发起操作联系起来。

进一步地,在更新完所述Docker工具窗口的工具状态后,在所述游戏开发引擎中安装了UI Builder工具的情况下,在所述游戏开发引擎中双击Uxml文件,可以直接打开UIBuilder工具进行UI界面的编辑。

相比于现有技术,本发明实施例公开的游戏开发引擎和Docker的交互方法,通过在游戏开发引擎与Docker服务器定义用于规范数据传输方式的数据格式,游戏开发引擎与Docker服务器依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎与Docker服务器的数据交互。将Docker服务单独打包成.Net可执行程序,可将其运行环境从游戏开发引擎中隔离开来,解决Docker.DotNet与游戏开发引擎环境冲突问题,并将插件对游戏开发项目的入侵影响降低。另外,开发者可以通过可视化的Docker工具窗口,在游戏开发引擎中使用Docker各项功能,而开发者不需要掌握Docker相关的知识和技能,大大降低了Docker的使用门槛和学习成本,从而减少繁琐的Docker指令操作,提高生产效率和降低错误率。

参见图2,图2是本发明实施例提供的另一种游戏开发引擎和Docker的交互方法的流程图,所述游戏开发引擎和Docker的交互方法包括:

S21、响应于游戏开发引擎的连接操作,与所述游戏开发引擎建立连接;

S22、接收所述游戏开发引擎发送的第一数据包,并对所述第一数据包进行反序列化解析,以解析出对应的操作信息;

S23、执行所述操作信息对应的Docker操作,并在执行完所述Docker操作后将执行结果按照预设的数据格式进行序列化,以生成第二数据包;

S24、根据所述操作信息调用对应的API接口,并通过所述API接口将所述第二数据包发送给所述游戏开发引擎,以使所述游戏开发引擎根据所述第二数据包更新所述Docker工具窗口的工具状态。

值得说明的是,本发明实施例所述的游戏开发引擎和Docker的交互方法由Docker服务器执行实现,所述Docker服务器与设于客户端的游戏开发引擎进行数据交互。作为示例的,在本发明实施例中所述游戏开发引擎为Unity,但在其它实施例中,所述游戏开发引擎还可以是虚幻引擎、CryEngine 3、HeroEngine、Rage Engine、Project Anarchy、GameSalad、GameMaker:Studio、App Game Kit、Cocos2D等。

在本发明实施例中,通过在游戏开发引擎和Docker服务器两端定义用于规范数据传输方式的数据格式,游戏开发引擎与Docker服务器依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎与Docker服务器的数据交互。

值得说明的是,序列化是指将变量(对象)从内存中变成可存储或可传输的过程,反序列化是指将变量内容从序列化的对象重新读到内存里的过程;因此,对数据进行序列化主要就是为了传输方便,发送端将要传输的对象序列化为字节流数据,从而提高传输效率,接收端在接收到字节流数据时通过反序列化转化成对象。

示例性的,在游戏开发引擎和Docker服务器两端定义的数据格式包括json、ProtoBuf和yaml中的至少一种,需要说明的是,只要所述数据格式能够进行序列化和反序列化,同时还能用于网络传输的数据格式,均可适用于本发明实施例。以json数据格式为例进行说明,所述json数据中包含:指令类型、指令数据和指令ID,json数据格式满足:并列的数据之间用逗号(",")分隔;映射用冒号(":")表示;并列数据的集合(数组)用方括号("[]")表示;映射的集合(对象)用大括号("{}")表示。如表示为:[{"指令类型":"类型1","指令数据":数据1,"指令ID":ID1},{"指令类型":"类型2","指令数据":数据2,"指令ID":ID2}]。

在本发明实施例中,通过在游戏开发引擎和Docker服务器两端根据Docker.DotNet API参数类型,制定用于通讯传输,可进行Json序列化和反序列化的C#数据类。

示例性的,Docker.DotNet是DotNet团队一个开源的C#库,它提供了一批可对Docker操作的API接口,这里的“参数类型”指的是调用接口需要传入的类(Class)。在本发明实施例中使用了Newtonsoft.Json库,该库是C#常用的,用于处理json数据的库,该库提供了对Json进行序列化和反序列化的API接口,可将一个类对象序列化为json格式的字符串,也可将json格式的字符串反序列为类对象。根据Docker.DotNet库API接口的参数类型,设计了自己的数据类型,数据类型中仅声明定义了参数类型中所有数据相关的对象,不具备参数类型的函数(方法)。所述游戏开发引擎和所述Docker服务器两端的数据类型可以直接使用Newtonsoft.Json库,进行json的序列化和反序列化。

具体地,在步骤S21中,所述Docker服务器在启动后,创建Socket对象等待所述游戏开发引擎的连接。所述游戏开发引擎在其Docker工具窗口启动时,一并启动Docker服务器,此时所述游戏开发引擎创建Socket对象与所述Docker服务器进行连接。

值得说明的是,所述游戏开发引擎要和所述Docker服务器建立通信时,需要通过socket建立一条通信“线路”。具体搭建方式为:所述游戏开发引擎建立mysocket对象向所述Docker服务器发出呼叫请求,所述Docker服务器则建立一个等待接收套接字的对象serversocket对象,建立套接字连接后所述游戏开发引擎和所述Docker服务器便可通过分别调用输入流getinputstream()方法和输出流getoutputstream()方法进行通信。

示例性的,所述Docker工具窗口为所述游戏开发引擎预先搭建的用于提供具有Docker功能的UI交互组件。通过使用UI Toolkit制作可视化Unity Docker工具窗口,提供常用Docker功能的UI交互组件,如创建Docker容器、启动Docker容器、停止Docker容器和获取日志等操作。值得说明的是,使用UI Toolkit制作可视化Unity Docker工具窗口的过程可参考现有技术,在此不再赘述。

具体地,在步骤S22中,所述Docker服务器在接收到所述第一数据包后,对所述第一数据包进行反序列化解析。

示例性的,所述第一数据包通过所述游戏开发引擎获取其预先制定的Docker工具窗口中的Docker操作,并对所述Docker操作对应的操作信息按照预设的数据格式进行序列化生成的。所述游戏开发引擎将所述指令类型、指令ID和指令数据按照Json数据格式进行序列化,封装成第一数据包。所述Docker工具窗口中设有UI工具,用户可通过操作所述UI工具与Docker服务器进行交互,此时获取与Docker操作对应的操作信息。所述操作信息包括指令类型、指令ID和指令数据,所述指令类型表示传输的数据类型,所述指令ID定义具体哪一个Docker操作(比如:创建Docker容器、启动Docker容器、停止Docker容器),所述指令数据为Docker操作的具体操作数据。

具体地,在步骤S23中,所述Docker服务器对所述第一数据包进行反序列化解析,以解析出所述第一数据包中的指令类型、指令ID和指令数据。所述Docker服务器根据所述指令ID可以查询到对应的Docker操作,所述Docker服务器执行所述Docker操作,比如所述Docker操作为“创建Docker容器”,此时所述Docker服务器创建Docker容器。所述Docker服务器在执行完所述Docker操作后将执行结果按照所述数据格式进行序列化,生成第二数据包返回给所述游戏开发引擎。

具体地,在步骤S24中,所述Docker服务器中的API接口包括至少两个,其按照预设的封装格式封装。所述封装格式为Docker.DotNet API参数类型,为了进行网络传输,而Docker API对此不支持,因此需要按照所述封装格式封装API接口。Docker API接口所声明定义的参数类型(Class)因内部存在函数(Function)以及内部逻辑无法直接进行序列化和方序列化,进而无法进行网络传输,所以需要封装一套使用可序列化以及反序列化的数据类型的接口,然后接口内部再通过这些数据类型对象实例化出Docker API接口参数类型对象,再作为参数调用Docker API接口。

具体的,所述Docker服务器根据所述操作信息中的指令类型在预设的映射表中查询对应的API接口,并将所述操作信息中的指令数据作为参数调用所述API接口。

示例性的,所述Docker服务器事先定义好了一个键值对的映射表,指令类型是键,API接口函数是值,在拥有键的情况下通过映射表能直接获取到值,即API接口函数。所述将所述操作信息中的指令数据作为参数调用所述API接口,包括:将所述指令数据反序列为数据类型对象;通过反射的方式,获取数据类型对象中所有变量的值以及名称;实例化DockerAPI接口的参数类型对象;通过反射的方式,获取到参数类型对象所有变量的名称;将数据类型对象同名变量的值赋值给参数类型对象的变量;将此时参数类型对象作为参数,调用上面找到的Docker API接口。

所述Docker服务器通过所述API接口将所述第二数据包括发送给所述游戏开引擎,所述游戏开引擎在接收到所述Docker服务器返回的第二数据包后,所述游戏开发引擎需要根据所述第二数据包更新所述Docker工具窗口的工具状态。此时所述游戏开发引擎对所述第二数据包进行反序列化解析,以解析出所述第二数据包中的执行结果和指令ID;然后根据所述指令ID查询对应的Docker操作;最后根据所述执行结果,在所述Docker工具窗口中将记录所述Docker操作的状态值更新为预设的状态表征值,并在所述Docker工具窗口中显示预设的提示信息。

示例性的,所述执行结果包括“成功”和“失败”两种,则,所述状态表征值也包括“成功”和“失败”两种,所述工具状态指的是工具内部变量的值以及可视化窗口UI的展示,比如:创建Docker容器的Docker操作,收到Docker服务器的Docker容器创建成功的执行结果后,会将工具内部记录容器创建状态的变量的状态值改为“成功”,同时可视化窗口UI上也显示“容器创建成功”的提示信息。另外,通过所述指令ID可以找到具体哪一次操作,将所述Docker服务器的返回结果和所述游戏开发引擎中的发起操作联系起来。

进一步地,所述游戏开发引擎在更新完所述Docker工具窗口的工具状态后,在所述游戏开发引擎中安装了UI Builder工具的情况下,在所述游戏开发引擎中双击Uxml文件,可以直接打开UI Builder工具进行UI界面的编辑。

相比于现有技术,本发明实施例公开的游戏开发引擎和Docker的交互方法,通过在游戏开发引擎与Docker服务器定义用于规范数据传输方式的数据格式,游戏开发引擎与Docker服务器依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎与Docker服务器的数据交互。将Docker服务单独打包成.Net可执行程序,可将其运行环境从游戏开发引擎中隔离开来,解决Docker.DotNet与游戏开发引擎环境冲突问题,并将插件对游戏开发项目的入侵影响降低。另外,开发者可以通过可视化的Docker工具窗口,在游戏开发引擎中使用Docker各项功能,而开发者不需要掌握Docker相关的知识和技能,大大降低了Docker的使用门槛和学习成本,从而减少繁琐的Docker指令操作,提高生产效率和降低错误率。

参见图3,图3是本发明实施例提供的一种游戏开发引擎10的结构框图,所述游戏开发引擎10包括:

连接模块11,用于响应于Docker工具窗口启动操作,与Docker服务器建立连接;其中,所述Docker工具窗口为预先搭建的用于提供具有Docker功能的UI交互组件;

操作信息获取模块12,用于响应于所述Docker工具窗口中的Docker操作,获取与所述Docker操作对应的操作信息;

第一数据包生成模块13,用于将所述操作信息按照预设的数据格式进行序列化,以生成第一数据包;

第一数据包发送模块14,用于将所述第一数据包发送给所述Docker服务器,以使所述Docker服务器对所述第一数据包进行解析,以解析出操作信息并执行与操作信息对应的Docker操作,并在执行完所述Docker操作后将执行结果进行序列化以生成第二数据包返回;

工具状态更新模块15,用于接收所述Docker服务器返回的第二数据包,并根据所述第二数据包更新所述Docker工具窗口的工具状态。

值得说明的是,本发明实施例所述的游戏开发引擎10设于客户端,与设于服务器端的Docker进行数据交互。作为示例的,在本发明实施例中所述游戏开发引擎10为Unity,但在其它实施例中,所述游戏开发引擎还可以是虚幻引擎、CryEngine 3、HeroEngine、RageEngine、Project Anarchy、GameSalad、GameMaker:Studio、App Game Kit、Cocos2D等。

在本发明实施例中,通过在游戏开发引擎10和Docker服务器两端定义用于规范数据传输方式的数据格式,游戏开发引擎10与Docker服务器依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎10与Docker服务器的数据交互。

值得说明的是,序列化是指将变量(对象)从内存中变成可存储或可传输的过程,反序列化是指将变量内容从序列化的对象重新读到内存里的过程;因此,对数据进行序列化主要就是为了传输方便,发送端将要传输的对象序列化为字节流数据,从而提高传输效率,接收端在接收到字节流数据时通过反序列化转化成对象。

示例性的,在游戏开发引擎10和Docker服务器两端定义的数据格式包括json、ProtoBuf和yaml中的至少一种,需要说明的是,只要所述数据格式能够进行序列化和反序列化,同时还能用于网络传输的数据格式,均可适用于本发明实施例。以json数据格式为例进行说明,所述json数据中包含:指令类型、指令数据和指令ID,json数据格式满足:并列的数据之间用逗号(",")分隔;映射用冒号(":")表示;并列数据的集合(数组)用方括号("[]")表示;映射的集合(对象)用大括号("{}")表示。如表示为:[{"指令类型":"类型1","指令数据":数据1,"指令ID":ID1},{"指令类型":"类型2","指令数据":数据2,"指令ID":ID2}]。

在本发明实施例中,通过在游戏开发引擎10和Docker服务器两端根据Docker.DotNet API参数类型,制定用于通讯传输,可进行Json序列化和反序列化的C#数据类。

示例性的,Docker.DotNet是DotNet团队一个开源的C#库,它提供了一批可对Docker操作的API接口,这里的“参数类型”指的是调用接口需要传入的类(Class)。在本发明实施例中使用了Newtonsoft.Json库,该库是C#常用的,用于处理json数据的库,该库提供了对Json进行序列化和反序列化的API接口,可将一个类对象序列化为json格式的字符串,也可将json格式的字符串反序列为类对象。根据Docker.DotNet库API接口的参数类型,设计了自己的数据类型,数据类型中仅声明定义了参数类型中所有数据相关的对象,不具备参数类型的函数(方法)。所述游戏开发引擎10和所述Docker服务器两端的数据类型可以直接使用Newtonsoft.Json库,进行json的序列化和反序列化。

具体地,在所述Docker工具窗口启动时,一并启动Docker服务器,此时所述连接模块11创建Socket对象与所述Docker服务器进行连接,与此同时,所述Docker服务器也同样创建Socket对象等待所述游戏开发引擎的连接。

值得说明的是,所述连接模块11要和所述Docker服务器建立通信时,需要通过socket建立一条通信“线路”。具体搭建方式为:所述连接模块11建立mysocket对象向所述Docker服务器发出呼叫请求,所述Docker服务器则建立一个等待接收套接字的对象serversocket对象,建立套接字连接后所述连接模块11和所述Docker服务器便可通过分别调用输入流getinputstream()方法和输出流getoutputstream()方法进行通信。

示例性的,所述Docker工具窗口为预先搭建的用于提供具有Docker功能的UI交互组件。通过使用UI Toolkit制作可视化Unity Docker工具窗口,提供常用Docker功能的UI交互组件,如创建Docker容器、启动Docker容器、停止Docker容器和获取日志等操作。值得说明的是,使用UI Toolkit制作可视化Unity Docker工具窗口的过程可参考现有技术,在此不再赘述。

具体地,所述Docker工具窗口中设有UI工具,用户可通过操作所述UI工具与Docker服务器进行交互,此时所述操作信息获取模块12获取与Docker操作对应的操作信息。所述操作信息包括指令类型、指令ID和指令数据,所述指令类型表示传输的数据类型,所述指令ID定义具体哪一个Docker操作(比如:创建Docker容器、启动Docker容器、停止Docker容器),所述指令数据为Docker操作的具体操作数据。

值得说明的是,所述UI工具中的所有操作的主要目的是与Docker服务进行交互,比如使用UI工具发起“创建Docker容器”的指令,指令类型为”CreateContainer”(字符串),指令数据为CreateContainerParametersData(前文提到的自己设计的数据类型)序列化后的Json格式的字符串,不同的操作对应不同的指令和不同的数据类型,但都是以字符串的形式表示。

具体地,所述第一数据包生成模块13将所述指令类型、指令ID和指令数据按照Json数据格式进行序列化,封装成第一数据包。

具体地,所述第一数据包发送模块14将所述第一数据包发送给所述Docker服务器,所述Docker服务器在接收到所述第一数据包后,对所述第一数据包进行反序列化解析,以解析出所述第一数据包中的指令类型、指令ID和指令数据。根据所述指令ID可以查询到对应的Docker操作,所述Docker服务器执行所述Docker操作,比如所述Docker操作为“创建Docker容器”,此时所述Docker服务器创建Docker容器。所述Docker服务器在执行完所述Docker操作后将执行结果按照所述数据格式进行序列化,生成第二数据包返回给所述游戏开发引擎。

所述Docker服务器中的API接口包括至少两个,其按照预设的封装格式封装。所述封装格式为Docker.DotNet API参数类型,为了进行网络传输,而Docker API对此不支持,因此需要按照所述封装格式封装API接口。Docker API接口所声明定义的参数类型(Class)因内部存在函数(Function)以及内部逻辑无法直接进行序列化和方序列化,进而无法进行网络传输,所以需要封装一套使用可序列化以及反序列化的数据类型的接口,然后接口内部再通过这些数据类型对象实例化出Docker API接口参数类型对象,再作为参数调用Docker API接口。

具体的,所述Docker服务器根据所述操作信息中的指令类型在预设的映射表中查询对应的API接口,并将所述操作信息中的指令数据作为参数调用所述API接口。

示例性的,所述Docker服务器事先定义好了一个键值对的映射表,指令类型是键,API接口函数是值,在拥有键的情况下通过映射表能直接获取到值,即API接口函数。所述将所述操作信息中的指令数据作为参数调用所述API接口,包括:将所述指令数据反序列为数据类型对象;通过反射的方式,获取数据类型对象中所有变量的值以及名称;实例化DockerAPI接口的参数类型对象;通过反射的方式,获取到参数类型对象所有变量的名称;将数据类型对象同名变量的值赋值给参数类型对象的变量;将此时参数类型对象作为参数,调用上面找到的Docker API接口。

具体地,所述工具状态更新模块15在接收到所述Docker服务器返回的第二数据包后,所述游戏开发引擎需要根据所述第二数据包更新所述Docker工具窗口的工具状态。

所述工具状态更新模块15用于:

对所述第二数据包进行反序列化解析,以解析出所述第二数据包中的执行结果和指令ID;

根据所述指令ID查询对应的Docker操作;

根据所述执行结果,在所述Docker工具窗口中将记录所述Docker操作的状态值更新为预设的状态表征值,并在所述Docker工具窗口中显示预设的提示信息。

示例性的,所述执行结果包括“成功”和“失败”两种,则,所述状态表征值也包括“成功”和“失败”两种,所述工具状态指的是工具内部变量的值以及可视化窗口UI的展示,比如:创建Docker容器的Docker操作,收到Docker服务器的Docker容器创建成功的执行结果后,会将工具内部记录容器创建状态的变量的状态值改为“成功”,同时可视化窗口UI上也显示“容器创建成功”的提示信息。另外,通过所述指令ID可以找到具体哪一次操作,将所述Docker服务器的返回结果和所述游戏开发引擎10中的发起操作联系起来。

进一步地,在更新完所述Docker工具窗口的工具状态后,在所述游戏开发引擎10中安装了UI Builder工具的情况下,在所述游戏开发引擎10中双击Uxml文件,可以直接打开UI Builder工具进行UI界面的编辑。

相比于现有技术,本发明实施例公开的游戏开发引擎10,通过在游戏开发引擎10与Docker服务器定义用于规范数据传输方式的数据格式,游戏开发引擎与Docker服务器依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎与Docker服务器的数据交互。将Docker服务单独打包成.Net可执行程序,可将其运行环境从游戏开发引擎中隔离开来,解决Docker.DotNet与游戏开发引擎环境冲突问题,并将插件对游戏开发项目的入侵影响降低。另外,开发者可以通过可视化的Docker工具窗口,在游戏开发引擎中使用Docker各项功能,而开发者不需要掌握Docker相关的知识和技能,大大降低了Docker的使用门槛和学习成本,从而减少繁琐的Docker指令操作,提高生产效率和降低错误率。

参见图4,图4是本发明实施例提供的一种Docker服务器20的结构框图,

连接模块21,用于响应于游戏开发引擎的连接操作,与所述游戏开发引擎建立连接;

第一数据包接收模块22,用于接收所述游戏开发引擎发送的第一数据包,并对所述第一数据包进行反序列化解析,以解析出对应的操作信息;其中,所述第一数据包通过所述游戏开发引擎获取其预先制定的Docker工具窗口中的Docker操作,并对所述Docker操作对应的操作信息按照预设的数据格式进行序列化生成的;

第二数据包生成模块23,用于执行所述操作信息对应的Docker操作,并在执行完所述Docker操作后将执行结果按照预设的数据格式进行序列化,以生成第二数据包;

第二数据包发送模块24,用于根据所述操作信息调用对应的API接口,并通过所述API接口将所述第二数据包发送给所述游戏开发引擎,以使所述游戏开发引擎根据所述第二数据包更新所述Docker工具窗口的工具状态。

值得说明的是,本发明实施例所述的Docker服务器20与设于客户端的游戏开发引擎进行数据交互。作为示例的,在本发明实施例中所述游戏开发引擎为Unity,但在其它实施例中,所述游戏开发引擎还可以是虚幻引擎、CryEngine 3、HeroEngine、Rage Engine、Project Anarchy、GameSalad、GameMaker:Studio、App Game Kit、Cocos2D等。

在本发明实施例中,通过在游戏开发引擎和Docker服务器20两端定义用于规范数据传输方式的数据格式,游戏开发引擎与Docker服务器20依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎与Docker服务器20的数据交互。

值得说明的是,序列化是指将变量(对象)从内存中变成可存储或可传输的过程,反序列化是指将变量内容从序列化的对象重新读到内存里的过程;因此,对数据进行序列化主要就是为了传输方便,发送端将要传输的对象序列化为字节流数据,从而提高传输效率,接收端在接收到字节流数据时通过反序列化转化成对象。

示例性的,在游戏开发引擎和Docker服务器20两端定义的数据格式包括json、ProtoBuf和yam l中的至少一种,需要说明的是,只要所述数据格式能够进行序列化和反序列化,同时还能用于网络传输的数据格式,均可适用于本发明实施例。以json数据格式为例进行说明,所述json数据中包含:指令类型、指令数据和指令ID,json数据格式满足:并列的数据之间用逗号(",")分隔;映射用冒号(":")表示;并列数据的集合(数组)用方括号("[]")表示;映射的集合(对象)用大括号("{}")表示。如表示为:[{"指令类型":"类型1","指令数据":数据1,"指令ID":ID1},{"指令类型":"类型2","指令数据":数据2,"指令ID":ID2}]。

在本发明实施例中,通过在游戏开发引擎和Docker服务器20两端根据Docker.DotNet API参数类型,制定用于通讯传输,可进行Json序列化和反序列化的C#数据类。

示例性的,Docker.DotNet是DotNet团队一个开源的C#库,它提供了一批可对Docker操作的API接口,这里的“参数类型”指的是调用接口需要传入的类(Class)。在本发明实施例中使用了Newtonsoft.Json库,该库是C#常用的,用于处理json数据的库,该库提供了对Json进行序列化和反序列化的API接口,可将一个类对象序列化为json格式的字符串,也可将json格式的字符串反序列为类对象。根据Docker.DotNet库API接口的参数类型,设计了自己的数据类型,数据类型中仅声明定义了参数类型中所有数据相关的对象,不具备参数类型的函数(方法)。所述游戏开发引擎和所述Docker服务器20两端的数据类型可以直接使用Newtonsoft.Json库,进行json的序列化和反序列化。

具体地,所述Docker服务器20在启动后,所述连接模块21创建Socket对象等待所述游戏开发引擎的连接。所述游戏开发引擎在其Docker工具窗口启动时,一并启动Docker服务器20,此时所述游戏开发引擎创建Socket对象与所述连接模块21进行连接。

值得说明的是,所述游戏开发引擎要和所述连接模块21建立通信时,需要通过socket建立一条通信“线路”。具体搭建方式为:所述游戏开发引擎建立mysocket对象向所述连接模块21发出呼叫请求,所述Docker服务器则建立一个等待接收套接字的对象serversocket对象,建立套接字连接后所述游戏开发引擎和所述Docker服务器便可通过分别调用输入流getinputstream()方法和输出流getoutputstream()方法进行通信。

示例性的,所述Docker工具窗口为所述游戏开发引擎预先搭建的用于提供具有Docker功能的UI交互组件。通过使用UI Toolkit制作可视化Unity Docker工具窗口,提供常用Docker功能的UI交互组件,如创建Docker容器、启动Docker容器、停止Docker容器和获取日志等操作。值得说明的是,使用UI Toolkit制作可视化Unity Docker工具窗口的过程可参考现有技术,在此不再赘述。

具体地,所述第一数据包接收模块22在接收到所述第一数据包后,对所述第一数据包进行反序列化解析。

示例性的,所述第一数据包通过所述游戏开发引擎获取其预先制定的Docker工具窗口中的Docker操作,并对所述Docker操作对应的操作信息按照预设的数据格式进行序列化生成的。所述游戏开发引擎将所述指令类型、指令I D和指令数据按照Json数据格式进行序列化,封装成第一数据包。所述Docker工具窗口中设有UI工具,用户可通过操作所述UI工具与Docker服务器进行交互,此时获取与Docker操作对应的操作信息。所述操作信息包括指令类型、指令ID和指令数据,所述指令类型表示传输的数据类型,所述指令ID定义具体哪一个Docker操作(比如:创建Docker容器、启动Docker容器、停止Docker容器),所述指令数据为Docker操作的具体操作数据。

具体地,所述第一数据包接收模块22对所述第一数据包进行反序列化解析,以解析出所述第一数据包中的指令类型、指令ID和指令数据。所述第二数据包生成模块23根据指令ID可以查询到对应的Docker操作,所述Docker服务器执行所述Docker操作,比如所述Docker操作为“创建Docker容器”,此时所述Docker服务器创建Docker容器。所述第二数据包生成模块23在执行完所述Docker操作后将执行结果按照所述数据格式进行序列化,生成第二数据包返回给所述游戏开发引擎。

具体地,所述Docker服务器中的API接口包括至少两个,其按照预设的封装格式封装。所述封装格式为Docker.DotNet API参数类型,为了进行网络传输,而Docker API对此不支持,因此需要按照所述封装格式封装API接口。Docker API接口所声明定义的参数类型(Class)因内部存在函数(Function)以及内部逻辑无法直接进行序列化和方序列化,进而无法进行网络传输,所以需要封装一套使用可序列化以及反序列化的数据类型的接口,然后接口内部再通过这些数据类型对象实例化出Docker API接口参数类型对象,再作为参数调用Docker API接口。

具体的,所述第二数据包发送模块24根据所述操作信息中的指令类型在预设的映射表中查询对应的API接口,并将所述操作信息中的指令数据作为参数调用所述API接口。

示例性的,所述Docker服务器事先定义好了一个键值对的映射表,指令类型是键,API接口函数是值,在拥有键的情况下通过映射表能直接获取到值,即API接口函数。所述将所述操作信息中的指令数据作为参数调用所述API接口,包括:将所述指令数据反序列为数据类型对象;通过反射的方式,获取数据类型对象中所有变量的值以及名称;实例化DockerAPI接口的参数类型对象;通过反射的方式,获取到参数类型对象所有变量的名称;将数据类型对象同名变量的值赋值给参数类型对象的变量;将此时参数类型对象作为参数,调用上面找到的Docker API接口。

所述第二数据包发送模块24通过所述API接口将所述第二数据包括发送给所述游戏开引擎,所述游戏开引擎在接收到所述Docker服务器返回的第二数据包后,所述游戏开发引擎需要根据所述第二数据包更新所述Docker工具窗口的工具状态。此时所述游戏开发引擎对所述第二数据包进行反序列化解析,以解析出所述第二数据包中的执行结果和指令ID;然后根据所述指令ID查询对应的Docker操作;最后根据所述执行结果,在所述Docker工具窗口中将记录所述Docker操作的状态值更新为预设的状态表征值,并在所述Docker工具窗口中显示预设的提示信息。

示例性的,所述执行结果包括“成功”和“失败”两种,则,所述状态表征值也包括“成功”和“失败”两种,所述工具状态指的是工具内部变量的值以及可视化窗口UI的展示,比如:创建Docker容器的Docker操作,收到Docker服务器的Docker容器创建成功的执行结果后,会将工具内部记录容器创建状态的变量的状态值改为“成功”,同时可视化窗口UI上也显示“容器创建成功”的提示信息。另外,通过所述指令ID可以找到具体哪一次操作,将所述Docker服务器的返回结果和所述游戏开发引擎中的发起操作联系起来。

进一步地,所述游戏开发引擎在更新完所述Docker工具窗口的工具状态后,在所述游戏开发引擎中安装了UI Builder工具的情况下,在所述游戏开发引擎中双击Uxml文件,可以直接打开UI Builder工具进行UI界面的编辑。

相比于现有技术,本发明实施例公开的Docker服务器20,通过在游戏开发引擎与Docker服务器20定义用于规范数据传输方式的数据格式,游戏开发引擎与Docker服务器20依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎与Docker服务器20的数据交互。将Docker服务20单独打包成.Net可执行程序,可将其运行环境从游戏开发引擎中隔离开来,解决Docker.DotNet与游戏开发引擎环境冲突问题,并将插件对游戏开发项目的入侵影响降低。另外,开发者可以通过可视化的Docker工具窗口,在游戏开发引擎中使用Docker各项功能,而开发者不需要掌握Docker相关的知识和技能,大大降低了Docker的使用门槛和学习成本,从而减少繁琐的Docker指令操作,提高生产效率和降低错误率。

参见图5,图5是本发明实施例提供的一种游戏开发引擎和Docker的交互设备30的结构框图,所述游戏开发引擎和Docker的交互设备30包括:处理器31、存储器32以及存储在所述存储器32中并可在所述处理器31上运行的计算机程序。所述处理器31执行所述计算机程序时实现第一实施例所述的游戏开发引擎和Docker的交互方法实施例中的步骤。或者,所述处理器31执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器32中,并由所述处理器31执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述游戏开发引擎和Docker的交互设备30中的执行过程。

所述游戏开发引擎和Docker的交互设备30可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述游戏开发引擎和Docker的交互设备30可包括,但不仅限于,处理器31、存储器32。本领域技术人员可以理解,所述示意图仅仅是游戏开发引擎和Docker的交互设备30的示例,并不构成对游戏开发引擎和Docker的交互设备30的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述游戏开发引擎和Docker的交互设备30还可以包括输入输出设备、网络接入设备、总线等。

所称处理器31可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器31是所述游戏开发引擎和Docker的交互设备30的控制中心,利用各种接口和线路连接整个游戏开发引擎和Docker的交互设备30的各个部分。

所述存储器32可用于存储所述计算机程序和/或模块,所述处理器31通过运行或执行存储在所述存储器32内的计算机程序和/或模块,以及调用存储在存储器32内的数据,实现所述游戏开发引擎和Docker的交互设备30的各种功能。所述存储器32可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器32可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述游戏开发引擎和Docker的交互设备30集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器31执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

参见图6,图6是本发明实施例提供的另一种游戏开发引擎和Docker的交互设备40的结构框图,游戏开发引擎和Docker的交互设备40包括:处理器41、存储器42以及存储在所述存储器42中并可在所述处理器41上运行的计算机程序。所述处理器41执行所述计算机程序时实现上述第二实施例所述的游戏开发引擎和Docker的交互方法实施例中的步骤。或者,所述处理器41执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器42中,并由所述处理器41执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在游戏开发引擎和Docker的交互设备40中的执行过程。

游戏开发引擎和Docker的交互设备40可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。游戏开发引擎和Docker的交互设备40可包括,但不仅限于,处理器41、存储器42。本领域技术人员可以理解,所述示意图仅仅是游戏开发引擎和Docker的交互设备40的示例,并不构成对游戏开发引擎和Docker的交互设备40的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如游戏开发引擎和Docker的交互设备40还可以包括输入输出设备、网络接入设备、总线等。

所称处理器41可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器41是游戏开发引擎和Docker的交互设备40的控制中心,利用各种接口和线路连接游戏开发引擎和Docker的交互设备40的各个部分。

所述存储器42可用于存储所述计算机程序和/或模块,所述处理器41通过运行或执行存储在所述存储器42内的计算机程序和/或模块,以及调用存储在存储器42内的数据,实现游戏开发引擎和Docker的交互设备40的各种功能。所述存储器42可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,游戏开发引擎和Docker的交互设备40集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器41执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

参见图7,图7是本发明实施例提供的一种游戏开发引擎和Docker的交互系统50的结构框图,所述游戏开发引擎和Docker的交互系统50包括游戏开发引擎10和Docker服务器20。

具体的所述游戏开发引擎10和Docker服务器20的工作过程请参考上述实施例,本发明在此不再赘述。

相比于现有技术,本发明实施例公开的游戏开发引擎和Docker的交互系统50,通过在游戏开发引擎10与Docker服务器20定义用于规范数据传输方式的数据格式,游戏开发引擎10与Docker服务器20依次按照序列化及反序列化的数据传输方式进行发送与接收,实现游戏开发引擎10与Docker服务器20的数据交互。将Docker服务单独打包成.Net可执行程序,可将其运行环境从游戏开发引擎中隔离开来,解决Docker.DotNet与游戏开发引擎环境冲突问题,并将插件对游戏开发项目的入侵影响降低。另外,开发者可以通过可视化的Docker工具窗口,在游戏开发引擎中使用Docker各项功能,而开发者不需要掌握Docker相关的知识和技能,大大降低了Docker的使用门槛和学习成本,从而减少繁琐的Docker指令操作,提高生产效率和降低错误率。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于ecs设计的技能系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类