功能模块开发方法、装置、电子设备以及计算机存储介质与流程

文档序号:28745270发布日期:2022-02-07 23:12阅读:68来源:国知局
功能模块开发方法、装置、电子设备以及计算机存储介质与流程

1.本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及功能模块开发方法、功能模块开发装置、电子设备以及计算机可读存储介质。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.游戏应用时常需要根据具体的需求,将游戏的功能玩法用程序逻辑进行开发。现有的游戏客户端功能的开发与调试,通常都需要依赖游戏启动,然后利用所需要的游戏逻辑数据以及游戏资源数据,与服务器进行通信来进行游戏客户端的功能开发。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的相关技术的信息。


技术实现要素:

5.但是,出于游戏启动较为繁琐和耗时的原因,例如需要加载3d场景,通过条件触发剧情到对应的进度才能获取数据等;或者开发服务器处于维护或其他异常阶段,导致游戏逻辑数据、游戏资源数据以及所依赖的功能模块缺失等缘由,都会导致功能模块开发受阻。
6.因此在现有技术中,如何使游戏的功能模块开发可以不依赖于任何其他功能模块,不依赖于游戏服务器下发的游戏逻辑数据,较少地依赖部分游戏资源是非常令人烦恼的过程。
7.为此,非常需要一种改进的功能模块开发方法,以使功能模块开发独立化、解耦化,从而对各个游戏功能进行独立并高效地开发和调试。
8.在本上下文中,本发明的实施方式期望提供一种功能模块开发方法、功能模块开发装置、电子设备以及计算机可读存储介质。
9.在本发明实施方式的第一方面中,提供了一种功能模块开发方法,包括:获取功能模块的环境参数和数据源信息;其中,所述数据源信息是根据所述功能模块的需求信息预先创建的;基于所述环境参数以及所述数据源信息确定目标数据源;调用所述目标数据源组装成目标数据源对象,并根据所述目标数据源对象获取开发数据;利用所述开发数据进行所述功能模块的开发。
10.在本发明的一些实施例中,基于前述方案,该方法还包括:预先创建所述数据源信息,所述预先创建所述数据源信息,包括:基于所述功能模块的需求信息创建数据模型;根据所述数据模型配置模拟数据,并根据所述模拟数据创建第一数据源;和/或根据所述数据模型创建第二数据源;存储所述第一数据源和所述第二数据源作为所述功能模块的数据源信息。
11.在本发明的一些实施例中,基于前述方案,根据所述数据模型配置模拟数据,包括:对所述数据模型进行解析得到数据类型;基于所述数据类型配置所述模拟数据。
12.在本发明的一些实施例中,基于前述方案,根据所述数据模型创建第二数据源,包括:根据所述数据模型创建初始数据源;配置所述初始数据源的资源数据转换模块;基于所述初始数据源和所述资源数据转换模块生成所述第二数据源。
13.在本发明的一些实施例中,基于前述方案,基于所述环境参数以及所述数据源信息确定目标数据源,包括:在所述环境参数为第一环境参数时,从所述数据源信息中选取目标第一数据源作为所述目标数据源;在所述环境参数为第二环境参数时,从所述数据源信息中选取目标第二数据源作为所述目标数据源。
14.在本发明的一些实施例中,基于前述方案,利用所述开发数据进行所述功能模块的开发,包括:基于所述功能模块的需求信息配置所运算逻辑信息;利用所述开发数据对所述运算逻辑信息进行测试;在所述测试通过时根据所述运算逻辑信息生成可交付的功能模块。
15.在本发明的一些实施例中,基于前述方案,在所述调用所述目标数据源获取开发数据之前,该方法还包括:获取所述功能模块的宏代码,并搜索所述宏代码中的调用对象;在所述调用对象中包括所述目标数据源时,调用所述目标数据源获取开发数据。
16.在本发明实施方式的第二方面中,提供了一种功能模块开发装置,包括:获取模块,用于获取功能模块的环境参数和数据源信息;其中,所述数据源信息是根据所述功能模块的需求信息预先创建的;确定模块,用于基于所述环境参数以及所述数据源信息确定目标数据源;调用模块,用于调用所述目标数据源组装成目标数据源对象,并根据所述目标数据源对象获取开发数据;开发模块,用于利用所述开发数据进行所述功能模块的开发
17.在本发明实施方式的第三方面中,提供了一种电子设备,包括:处理器;存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行上述任意一项所述的功能模块开发方法。
18.在本发明实施方式的第四方面中,提供了一种计算机可读存储介质,其上存储计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的功能模块开发方法。
19.根据本发明实施方式的技术方案,一方面,通过预先根据功能模块的需求信息创建数据源信息,能够在进行该功能模块开发时只依赖经数据抽象和封装的数据源,从而对功能模块进行独立并高效地开发调试;另一方面,根据功能模块当前的环境参数选择合适的目标数据源进行模块开发,能够根据使用的开发环境的需求对数据源进行合理选择,以确保模块开发时所使用开发数据的准确性。
20.本技术的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本技术的实践而习得。
21.应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本技术。
附图说明
22.通过参考附图阅读下文的详细描述,本技术示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本技术的若干实施方式,其中:
23.图1示意性示出了根据本发明的一些实施例的示例性应用场景的示意框图;
24.图2示意性地示出了根据本发明的一些实施例的功能模块开发方法的流程示意图;
25.图3示意性示出了根据本发明的一些实施例的示例性创建数据源信息的流程示意图;
26.图4示意性示出了根据本发明的一些实施例的示例性确定目标数据源的流程示意图;
27.图5示意性示出了根据本发明的一些实施例的示例性功能模块开发的流程示意图;
28.图6示出的是根据本技术另一可选示例实施方式的功能模块开发装置的结构框图;
29.图7示出的是根据本技术另一可选实施方式的功能模块开发方法的程序产品;
30.图8示出的是根据本技术另一可选实施方式的功能模块开发电子设备的结构框图。
31.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
32.下面将参考若干示例性实施方式来描述本技术的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本技术,而并非以任何方式限制本技术的范围。相反,提供这些实施方式是为了使本技术更加透彻和完整,并且能够将本技术的范围完整地传达给本领域的技术人员。
33.本领域技术人员知道,本技术的实施方式可以实现为一种装置、设备、方法或计算机程序产品。因此,本技术可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
34.根据本技术的实施方式,提出了一种功能模块开发方法、功能模块开发装置、电子设备以及计算机可读存储介质。
35.在本文中,需要理解的是,所涉及的术语功能模块(model)的开发是指根据具体的需求,将模块的功能用程序逻辑进行实现的过程;数据源(datasource)表示对功能模块开发所需数据进行抽象和封装后的逻辑数据源。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
36.下面参考本技术的若干代表性实施方式,详细阐释本技术的原理和精神。
37.发明概述
38.本发明人发现,现有的游戏客户端功能的开发与调试,通常都需要依赖游戏启动,所需要的游戏数据需要与服务器进行通信由服务端下发数据才能得到,进而来进行游戏客户端的功能开发。
39.例如,要开发一个对游戏装备升级的客户端功能,首先该功能必要的游戏逻辑数据包括:1)玩家装备列表数据(至少包含每个装备的id、等级数据);2)升级一级所需要消耗的游戏道具资源(包括消耗金钱、消耗某些道具等);3)升级一级所需要的时间(也可以是瞬间);4)同时升级装备的个数(可以不限制,也可以限制1个,并附加冷却时间);5)任意装备的最大等级限制(可以是无限制);而必要的游戏资源数据包括;1)升级界面的美术资源(包
括ui资源、动画、特效、音效等);2)装备信息的配置表数据(由装备id作为索引,内含装备icon、名称等数据)。
40.所以这就存在如下问题,比如登录和进入游戏的过程,是重复而繁琐的;对于许多大型的3d游戏来说,加载3d场景本身就是极为耗时的;有些功能模块的入口设计就比较繁琐,例如在游戏剧情中设计抽签功能,是必须要通过进入游戏、通过一系列条件触发剧情、在剧情中走到对应的进度,才能进行抽签;如果开发服务器处于维护或其他异常阶段,导致无法登录和进入游戏,则会影响功能开发,从而引发研发延迟;如果正在开发的功能模块,需要依赖其他功能模块,并且所依赖的模块尚未开发完成,或出现异常情况,则同样会影响功能开发。种种问题,都会导致功能开发被阻塞,从而对游戏研发进度产生影响。
41.基于上述内容,本发明的基本思想在于,对功能模块开发所需要的数据进行抽象和封装,从而将游戏客户端中的各个功能开发通过技术手段进行独立化、解耦化处理,让功能开发可以不依赖于任何其他功能模块,不依赖于游戏服务器下发的游戏逻辑数据,较少地依赖部分游戏资源,能够对各个游戏功能进行独立并高效地开发和调试。
42.在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施例。
43.应用场景总览
44.首先参考图1,图1示意性示出了根据本发明的一些实施例的示例性应用场景的示意框图。如图1所示,为功能模块开发方法应用的最小闭包场景,包括:数据管理器101、功能模块数据库102、数据源信息数据库103以及开发模块104。其中,数据管理器101用于管理真实系统中的数据,例如包括资源管理器(assetsmanager),用于加载或卸载所有的资源数据,或者ui管理器(uimanager)用于管理所有ui界面的加载、卸载、显示或隐藏,或者音频管理器(audiomanager),用于控制音效、bgm、游戏语音等内容,或者配置表管理器(configmanager),用于加载或卸载所有配置表、数值表,或者场景管理器(scenemanager),用于管理游戏场景加载、卸载或场景切换等;功能模块数据库102存储有待开发的功能模块,包括该功能模块的需求信息、环境变量以及对应的数据源信息;数据源信息数据库103存储功能模块的所有数据源信息;开发模块104通过与数据管理器101、功能模块数据库102以及数据源信息数据库103之间的连接完成各功能模块独立、并行地开发过程。
45.应该理解的是,图1所示的应用场景仅是本发明的实施例可以在其中得以实现的一个示例。本发明实施例的适用范围不受到该应用场景任何方面的限制。
46.示例性方法
47.下面结合图1的应用场景,参考图2来描述根据本发明示例性实施例的功能模块开发方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施例在此方面不受任何限制。相反,本发明的实施例可以应用于适用的任何场景。
48.请参阅图2,图2示意性地示出了根据本发明的一些实施例的功能模块开发方法的流程示意图。如图2所示,该功能模块开发方法,可以包括:
49.步骤s210:获取功能模块的环境参数和数据源信息;其中,所述数据源信息是根据所述功能模块的需求信息预先创建的;
50.步骤s220:基于所述环境参数以及所述数据源信息确定目标数据源;
51.步骤s230:调用所述目标数据源组装成目标数据源对象,并根据所述目标数据源对象获取开发数据;
52.步骤s240:利用所述开发数据进行所述功能模块的开发。
53.实施图2所示的功能模块开发方法,一方面,通过预先根据功能模块的需求信息创建数据源信息,能够在进行该功能模块开发时只依赖经数据抽象和封装的数据源,从而对功能模块进行独立并高效地开发调试;另一方面,根据功能模块当前的环境参数选择合适的目标数据源进行模块开发,能够根据使用的开发环境的需求对数据源进行合理选择,以确保模块开发时所使用开发数据的准确性。
54.下面对这些步骤进行详细描述。
55.在步骤s210中,获取功能模块的环境参数和数据源信息;其中,所述数据源信息是根据所述功能模块的需求信息预先创建的。
56.在示例实施例中,功能模块(module)是指在系统中可以实现特定功能的模块。例如在游戏系统中某个特定的功能玩法,如游戏内的聊天系统、背包系统、装备与武器系统等。
57.在示例实施例中,环境参数用于表示该功能模块所处功能开发阶段的参数。根据实际操作需求,将模块功能的开发划分为两个阶段,分为功能调试阶段和实时开发阶段,对应着两种不同类型的环境参数。
58.其中,功能调试阶段是指功能尚在开发阶段,开发过程中无法获取实时数据,但为了方便功能开发和调试,需要提供一批预先设定的“假数据”,也就是模拟数据来辅助功能的开发;而实时开发阶段是指功能已经正式在系统中实装,功能运行所需的数据需要依靠真实的数据和流程。
59.因此,环境参数可以被定义为两种类型,当功能模块处于功能调试阶段时,对应的环境参数为第一环境参数,当功能模块处于实时开发阶段时,对应的环境参数为第二环境参数。
60.在示例实施例中,数据源信息是指与该功能模块对应的数据源。数据源是预先根据功能模块的需求信息创建的数据接口,表示对功能模块开发所需数据进行抽象和封装后的逻辑数据源。也就是说,功能模块利用数据源就可以获得进行功能开发所需的所有数据。
61.功能模块对应的数据源也可以具有两种类型,根据提供数据的类型,将获取模拟数据的数据源记为第一数据源,将获取真实数据的数据源记为第二数据源。
62.另外,对于功能模块本身,可能同时需要多种不同的数据,此时就需要依赖多个数据源向该功能模块提供数据。所以数据源信息中可以包括与功能模块有关的一个或多个数据源。
63.在步骤s220中,基于所述环境参数以及所述数据源信息确定目标数据源。
64.在示例实施例中,对于功能模块本身,需要根据当前的环境参数自动匹配符合的数据源,进而依赖数据源对功能模块进行开发。
65.例如,当环境参数为第一环境参数时,功能模块处于功能调试阶段,确定的目标数据源应当是能够提供“模拟数据”的第一数据源;而当环境参数为第二环境参数,功能模块处于实时开发阶段时,确定的目标数据源应当是能够提供“真实数据”的第二数据源。
66.在步骤s230中,调用所述目标数据源组装成目标数据源对象,并根据所述目标数据源对象获取开发数据。
67.在示例实施例中,数据源是预先将获取数据过程进行抽象的“逻辑数据源”。因此,
功能模块调用目标数据源后组装成目标数据源对象,进而通过数据源对象获取开发数据,便可满足该模块进行功能开发的数据提供要求。
68.需要说明的是,功能模块的环境参数不同,获取的开发数据也就不同,若为功能调试阶段,开发数据也就是预先设定的模拟数据,而如果是实时开发阶段,获取的开发数据就是系统中的真实数据。
69.开发数据可以包括逻辑数据(logic data)以及资源数据(assets),它们都是在系统中用于支撑系统功能的程序数据,都是进行功能模块开发时不可或缺的数据。
70.在步骤s240中,利用所述开发数据进行所述功能模块的开发。
71.在示例实施例中,可以通过技术手段,在引擎中采用硬编码,或编写引擎专用的可视化窗口工具,以配置运算逻辑信息,实现在客户端中运行正在开发的功能模块。
72.与此同时,还可以采用硬编码,或扩展引擎专用的可视化窗口工具,提供调试开关功能,对功能模块进行测试,测试通过后方可进行模块的交付。
73.基于上述的方法,将开发所需的数据部分通过抽象、封装的技术手段进行分离,不仅可以让代码架构更清晰,在出现bug等问题时,可以通过判断数据是否正确,从而快速定位和解决问题。与此同时,开发功能的时候,将依赖的部分全部剥离开来,利用模拟数据,在框架最小封装的空场景中仍然可以开发、调试功能。以此实现不通过启动游戏,不依赖或较少地依赖其他模块,就可以实现客户端功能模块的快速开发,极大地提升了开发效率。
74.在示例实施例中,步骤s210中,所述数据源信息是根据所述功能模块的需求信息预先创建的,因此,所述方法还包括:预先创建所述数据源信息。
75.图3示意性示出了根据本发明的一些实施例的示例性创建数据源信息的流程示意图。同时结合一个案例进行详细地说明。
76.参考图3所示,预先创建所述数据源信息具体包括以下步骤:
77.步骤s310,基于所述功能模块的需求信息创建数据模型;
78.步骤s320,根据所述数据模型配置模拟数据,并根据所述模拟数据创建第一数据源;和/或根据所述数据模型创建第二数据源;
79.步骤s330,存储所述第一数据源和所述第二数据源作为所述功能模块的数据源信息。
80.具体来说,在步骤s310中,基于所述功能模块的需求信息创建数据模型。
81.对功能模块进行开发是指根据具体的需求,将模块的功能利用现有的客户端用程序逻辑进行实现的过程。因此首先需要获取待开发模块具体的需求信息。
82.其中,客户端(client)与服务器相对应,是指为用户提供本地服务的程序,通常安装在用户的pc上、移动端设备上,且通常需要与服务器通讯,来为用户提供服务,通常可以作为模块开发的执行主体。
83.举例来说,游戏玩法界面ui是指在游戏系统中对应某个游戏功能模块的一个游戏ui界面,如游戏内对某个装备进行升级的界面、与某个好友进行私聊的界面等等。通常一个游戏功能模块,包含若干个游戏玩法界面,比如游戏的装备与武器系统,包括但不限于:装备升级/升星界面、查看装备详情界面、装备列表展示界面(通常以列表显示,或以游戏角色的各个身体部位来展示等)。
84.根据实际需求,可以确定一个功能模块的需求信息为:在开发角色信息展示界面
(roleinfoshowpage)中,通过预先给定角色的唯一id,在游戏玩法界面ui上展示角色的名称、性别等内容。
85.在示例实施例中,获取了功能模块的需求信息之后,基于需求信息创建数据模型。也就从客户端程序的角度,整理出所有的功能所需的数据,并根据这些数据内容,定义一个数据模型(data model)。
86.数据模型中包括了该功能模块所需的所有数据,以及每种数据的数据类型,例如“int”、“string”等。生成数据模型的过程可以利用客户端的数据模型代码生成工具完成。
87.以案例中开发角色信息展示界面的功能模块需求为例,角色信息的数据模型可以使用如下的伪代码定义该数据模型:
[0088][0089]
通过上述的数据模型定义,可以明确:当角色唯一id(roleid)被修改时,与其关联的rolename、rolegender也会同步修改。
[0090]
在步骤s320中,根据所述数据模型配置模拟数据,并根据所述模拟数据创建第一数据源;和/或根据所述数据模型创建第二数据源。
[0091]
在示例实施例中,第一数据源即为该功能模块提供模拟数据的数据源。在创建第一数据源时,由于无法获得系统实际运行的逻辑数据、资源数据等,所以还需要根据数据模型预先设定一份“假数据”作为模拟数据。
[0092]
进一步地,所述根据所述数据模型配置模拟数据包括:步骤一:对所述数据模型进行解析得到数据类型;步骤二:基于所述数据类型配置所述模拟数据。
[0093]
由于数据模型中已经包括了模块开发时所需的所有数据以及数据类型,在预设模拟数据时可以按照数据类型进行配置。预设的“假数据”不限于任何格式,可以是纯文本格式,可以是json格式,也可以是配置表等格式。
[0094]
假设案例中的开发角色信息展示界面的功能模块处于功能调试阶段,那么预先设定模拟的角色id、名称、性别等数据,就不需要启动游戏,也不需要由服务器下发真实数据,就能获得必要的逻辑数据,对功能模块进行开发了。
[0095]
根据角色信息的数据模型定义,以json格式为例,定义角色信息的假数据:
[0096][0097]
以此得到模拟数据文件如表1所示。
[0098]
表1模拟数据文件
[0099]
类型(type)内容(name)值(value)其他introleid2001access keystringrolename"张三" introlegender1 [0100]
其中,access表示该值可在外部被修改;key表示该属性被修改后会影响到其他属性。
[0101]
在示例实施例中,配置了模拟数据之后,可以定义一个数据源(datasource),进而使得功能模块能够通过该数据源获取到预先配置的模拟数据。这一过程可以利用客户端的数据源代码生成工具根据数据模型和模拟数据本身生成模拟数据对应的数据源代码。
[0102]
由于为功能模块提供的是模拟数据,所以根据模拟数据创建的数据源是第一类型,也就是第一数据源。功能模块调用第一数据源,可以将模拟数据从文件或内存字节流中读出,并组装成数据模型对象。
[0103]
同样,以开发角色信息展示界面为例:可以定义一个角色信息数据源(roleinfodatasource),并在角色信息展示界面中,通过该数据源,获取必要的数据,供ui上进行展示。用伪代码表示如下:
[0104]
[0105][0106]
从上述伪代码可以看出,提供模拟数据的数据源,roleid的set()方法可以被外部调用,但不会修改属性值,所以满足了提供预设假数据的需求。
[0107]
在实际操作中,对于功能模块本身,可能同时需要多种不同的数据,此时,就需要依赖多个数据源,向该功能模块提供数据。
[0108]
举例来说,当在角色信息展示界面上,除了显示角色的基本信息外,还增加一个功能,即在界面的右上角,显示玩家当前所具有的金币数、钻石数等信息。那么角色信息展示界面的ui逻辑,就依赖于至少两个数据源:(1)角色信息数据源;(2)玩家信息数据源。
[0109]
在示例实施例中,第二数据源即为该功能模块提供真实数据的数据源。在创建第二数据源时,由于需要的是系统中的真实数据,所以可以直接根据数据模型进行创建。
[0110]
进一步地,所述根据所述数据模型创建第二数据源,包括:步骤一:根据所述数据模型创建初始数据源;步骤二:配置所述初始数据源的资源数据转换模块;步骤三:基于所述初始数据源和所述资源数据转换模块生成所述第二数据源。
[0111]
具体来说,在步骤一中,需要将服务器下发的协议数据,通过解析和进一步处理,形成客户端所需的逻辑数据,并抽象成“数据源”,从而对各个客户端的功能模块,提供必要的逻辑数据。
[0112]
其中,服务器协议数据(server protocol data)是指在系统中,由客户端和服务器通信时,所产生的网络包数据。通常这种数据的格式有json(bson)格式、google protobuf格式、二进制流(binary stream)格式等。客户端通常在接收服务器下发的协议数据后,经过处理和加工生成客户端可以直接使用的逻辑数据,提供给各个客户端的功能模块来使用。
[0113]
与创建第一数据源类似,可以利用客户端的数据源代码生成工具生成数据源对象的代码,此时生成的应当是初始数据源,仅能为功能模块提供逻辑数据。
[0114]
假设案例中的开发角色信息展示界面的功能模块已经处于实时开发阶段,可以获
得运行系统中的真实游戏数据,那么利用工具生成初始数据源如下:
[0115][0116]
从上述的初始数据源来看,如果要生成可提供游戏真实数据的数据源,显然只能生成获取游戏逻辑数据大概的程序框架,其中还包括少部分的游戏资源数据需要开发人员编写。
[0117]
游戏逻辑数据比如玩家当前的等级、玩家背包拥有的物品及数量列表、玩家的各个武器装备的等级和星级等等,通过创建的初始数据源便可以获取。但一些游戏资源数据,例如美术资源(3d资源、2d贴图资源、动画数据、动作数据等)、表格资源(如游戏数值表、游戏配置表等)、音频资源(bgm、音效、语音等)、纯文本类资源(剧情文本、本地化文本等)等数据在未启动游戏时仍然无法获取。
[0118]
因此,则需要执行步骤二:配置所述初始数据源的资源数据转换模块。具体来说,可以通过优化代码工具,辅助开发人员,预先生成一些有用的代码,这样可以提升开发效率。
[0119]
如案例中的初始数据源,标注todo的地方,就是开发人员需要填写的逻辑。这里,一个常见的设计方案是:策划人员按照角色唯一id进行配表,客户端开发人员根据这个id,从配表中查询具体的角色信息,从而对应修改rolename、rolegender的值。相比于现有的启动游戏来获取游戏资源数据也快速简洁了不少。
[0120]
最后,执行步骤三:基于所述初始数据源和所述资源数据转换模块生成所述第二数据源。功能模块便可根据第二数据源留出对应的程序代码接口,从而将真实数据组装成数据模型对象。
[0121]
需要说明的是,在执行步骤s230时,无论是预先设定的“模拟数据”,还是服务器下发的或从配置表读出的“真实数据”,都需要抽象成“逻辑数据源”,从而向功能模块提供数
据。但可以根据功能模块的开发需求,按需选择性创建相应的数据源。
[0122]
例如,同一个功能模块可以同时构建第一数据源和第二数据源,第一数据源可利用模拟数据进行开发,模块上线之后,便可利用真实数据进行验证;还例如一个功能模块可以构建多个第一数据源,用来获取不同类型的模拟数据,或者是构建多个第二数据源,适用于不同的系统中。
[0123]
在步骤s330中,存储所述第一数据源和所述第二数据源作为所述功能模块的数据源信息。
[0124]
将功能模块以及基于功能模块的需求信息创建的数据源建立对应的映射关系,并进行保存得到该功能模块的数据源信息。
[0125]
在示例实施例中,在步骤s220中,基于所述环境参数以及所述数据源信息确定目标数据源,包括:在所述环境参数为第一环境参数时,从所述数据源信息中选取目标第一数据源作为所述目标数据源;在所述环境参数为第二环境参数时,从所述数据源信息中选取目标第二数据源作为所述目标数据源。
[0126]
也就是说,当环境参数为第一环境参数时,功能模块处于功能调试阶段,确定的目标数据源应当是能够提供“模拟数据”的第一数据源;而当环境参数为第二环境参数,功能模块处于实时开发阶段时,确定的目标数据源应当是能够提供“真实数据”的第二数据源。
[0127]
图4示意性示出了根据本发明的一些实施例的示例性确定目标数据源的流程示意图。如图4所示,确定目标数据源的过程如下:步骤s401,获取环境参数;步骤s402,判断环境参数时是否为第一环境参数;如果是,则执行步骤s403,调用第一数据源;如果不是,则执行步骤s404,调用第二数据源;之后执行步骤s405,进行模块开发。
[0128]
在示例实施例中,步骤s240中,利用开发数据进行功能模块的开发时,还可以进行配置逻辑信息以及功能调试等环节。
[0129]
图5示意性示出了根据本发明的一些实施例的示例性功能模块开发的流程示意图。如图5所示,功能模块开发的过程如下:
[0130]
步骤s501,基于所述功能模块的需求信息配置所运算逻辑信息;
[0131]
步骤s502,利用所述开发数据对所述运算逻辑信息进行测试;
[0132]
步骤s503,在所述测试通过时根据所述运算逻辑信息生成可交付的功能模块。
[0133]
具体而言,在步骤s501中,可以通过技术手段,在引擎中采用硬编码,或编写引擎专用的可视化窗口工具,以配置运算逻辑信息,实现在客户端中运行正在开发的功能模块。
[0134]
还是以开发角色信息展示界面为例,配置运算逻辑信息使得在功能界面的逻辑程序中,通过数据源对象,获取到相应的数据实现预设的功能。ui展示逻辑的伪代码如下:
[0135]
[0136][0137]
或者以开发角色信息展示界面,显示角色的基本信息以及玩家当前所具有的金币数、钻石数等信息为例,ui展示逻辑的伪代码如下:
[0138]
[0139][0140]
在此过程中,可能需要为该功能模块设立游戏功能入口(gameplay entrance)。游戏功能入口是指玩家在进入某个特定的游戏功能时,所需要进行的操作步骤。比如游戏的装备升级功能,一个常规的设计是:玩家在登录游戏,进入主场景后,通过点击【装备列表】按钮,打开装备列表界面,并点击某一个【装备图标】按钮,进入对应装备的升级界面。这一系列操作,即为游戏的装备升级功能,对应的功能入口。
[0141]
在步骤s502中,利用所述开发数据对所述运算逻辑信息进行测试;
[0142]
具体而言,在配置好功能模块的运算逻辑信息后需要对其进行功能调试,也就是在系统功能开发过程中,用工具或人工等手段,对所开发的功能进行交付前的测试行为。
[0143]
可以采用硬编码,或扩展引擎专用的可视化窗口工具,提供调试开关功能,包括且不限于:通过硬编码、或可视化窗口工具的按钮组件等,一键启动正在开发的功能;通过硬编码、文件或可视化窗口工具的输入组件,初始化功能所需的数据。
[0144]
在步骤s503中,在所述测试通过时根据所述运算逻辑信息生成可交付的功能模块。
[0145]
在示例实施例中,在所述调用所述目标数据源获取开发数据之前,所述方法还包括:获取所述功能模块的宏代码,并搜索所述宏代码中的调用对象;在所述调用对象中包括所述目标数据源时,调用所述目标数据源获取开发数据。
[0146]
具体来说,当定义过多的接口和类,会让整体代码架构愈发复杂和难以管理,降低代码工程的加载和执行效率。而模拟数据、提供模拟数据的数据源,在真实游戏场景中,是不允许被使用的。这就需要在开发过程中必须根据代码用途,利用技术手段,对数据源进行区分和归类。
[0147]
大部分编程语言,都支持利用代码宏,来区分和归类代码。而目前最流行的游戏引擎unity,采用c#的语言是支持代码宏的,并且引擎本身也提供大量的平台宏,可以非常方便地区分和归类代码。
[0148]
例如,unity引擎提供unity_editor宏,表示当前代码,在unity引擎的编辑器模式下运行。而我们也可以定义某个特定的功能处于开发调试阶段的宏(如xxx_on_dev)来表示当前的功能代码,还处于开发阶段,无需接入真实游戏数据。
[0149]
由于提供模拟数据的数据源、提供真实数据的数据源,都生成了数据模型,但最终游戏仅使用提供真实数据的数据源,所以,提供模拟数据的数据源、数据模型都可以通过一些代码宏进行处理,以保证最终游戏中,不会出现与创建的数据模型以及相关数据的所有代码。
[0150]
在示例实施例中,一个完整的功能模块开发的步骤可以包括:1)确定功能需求,可通过会议进行现场讨论,并整理成需求文档;2)提供预设资源,例如美术人员提供必要的资源白盒(包括3d模型白盒、ui白盒等),策划人员提供必要的表格白盒(包括数值表、配置表等),服务器开发人员提供通信协议;3)客户端人员,对需求梳理,预置模拟数据;4)客户端人员利用工具,生成数据源代码,包括第一数据源和第二数据源;5)客户端人员开始编写功能逻辑代码,并利用第一数据源获取的模拟数据进行自测;6)客户端将数据源切换为真实
数据(去掉代码宏定义等);7)客户端和服务器进行功能联调,测试通过后最终交付功能模块。
[0151]
示例性装置
[0152]
在介绍了本发明示例性实施例的方法之后,接下来,参考图6对本发明示例性实施例的功能模块开发装置进行介绍。
[0153]
在图6中,功能模块开发装置600可以包括:获取模块610、确定模块620、调用模块630以及开发模块640。其中:获取模块610,用于获取功能模块的环境参数和数据源信息;其中,所述数据源信息是根据所述功能模块的需求信息预先创建的;确定模块620,用于基于所述环境参数以及所述数据源信息确定目标数据源;调用模块630,用于调用所述目标数据源组装成目标数据源对象,并根据所述目标数据源对象获取开发数据;开发模块640,用于利用所述开发数据进行所述功能模块的开发。
[0154]
在本发明的一些实施例中,基于前述方案,功能模块开发装置600还可以包括数据源模块,数据源模块包括模型单元、数据源单元以及存储单元,模型单元用于基于所述功能模块的需求信息创建数据模型;数据源单元用于根据所述数据模型配置模拟数据,并根据所述模拟数据创建第一数据源;和/或根据所述数据模型创建第二数据源;存储单元用于存储所述第一数据源和所述第二数据源作为所述功能模块的数据源信息。
[0155]
在本发明的一些实施例中,基于前述方案,数据源单元还用于对所述数据模型进行解析得到数据类型;基于所述数据类型配置所述模拟数据。
[0156]
在本发明的一些实施例中,基于前述方案,数据源单元还用于根据所述数据模型创建初始数据源;配置所述初始数据源的资源数据转换模块;基于所述初始数据源和所述资源数据转换模块生成所述第二数据源。
[0157]
在本发明的一些实施例中,基于前述方案,确定模块620还用于在所述环境参数为第一环境参数时,从所述数据源信息中选取目标第一数据源作为所述目标数据源;在所述环境参数为第二环境参数时,从所述数据源信息中选取目标第二数据源作为所述目标数据源。
[0158]
在本发明的一些实施例中,基于前述方案,开发模块640还用于基于所述功能模块的需求信息配置所运算逻辑信息;利用所述开发数据对所述运算逻辑信息进行测试;在所述测试通过时根据所述运算逻辑信息生成可交付的功能模块。
[0159]
在本发明的一些实施例中,基于前述方案,功能模块开发装置600还可以包括代码宏模块,代码宏模块用于获取所述功能模块的宏代码,并搜索所述宏代码中的调用对象;在所述调用对象中包括所述目标数据源时,调用所述目标数据源获取开发数据。
[0160]
应当注意,尽管在上文详细描述中提及了功能模块开发装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0161]
示例性介质
[0162]
在介绍了本发明示例性实施例的装置之后,接下来,对本发明示例性实施例的存储介质进行说明。
[0163]
在一些实施例中,本发明的各个方面还可以实现为一种介质,其上存储有程序代
码,当所述程序代码被设备的处理器执行时用于实现本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的功能模块开发方法中的步骤。
[0164]
例如,所述设备的处理器执行所述程序代码时可以实现如图2中所示的步骤s210:获取功能模块的环境参数和数据源信息;其中,所述数据源信息是根据所述功能模块的需求信息预先创建的;步骤s220:基于所述环境参数以及所述数据源信息确定目标数据源;步骤s230:调用所述目标数据源组装成目标数据源对象,并根据所述目标数据源对象获取开发数据;步骤s240:利用所述开发数据进行所述功能模块的开发。
[0165]
参考图7所示,描述了根据本发明的实施例的用于实现上述功能模块开发方法的程序产品700,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此。
[0166]
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0167]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质。
[0168]
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备。
[0169]
示例性电子设备
[0170]
在介绍了本发明示例性实施例的功能模块开发方法、功能模块开发装置以及存储介质之后,接下来,介绍根据本发明的示例性实施例的电子设备。
[0171]
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。
[0172]
在一些可能的实施例中,根据本发明的电子设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的功能模块开发方法中的步骤。例如,所述处理单元可以执行如图2中所示的步骤s210:获取功能模块的环境参数和数据源信息;其中,所述数据源信息是根据所述功能模块的需求信息预先创建的;步骤s220:基于所述环境参数以及所述数据源信息
确定目标数据源;步骤s230:调用所述目标数据源组装成目标数据源对象,并根据所述目标数据源对象获取开发数据;步骤s240:利用所述开发数据进行所述功能模块的开发。
[0173]
下面参照图8来描述根据本发明的示例实施例的电子设备800。图8所示的电子设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0174]
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元801、上述至少一个存储单元802、连接不同系统组件(包括存储单元802和处理单元801)的总线803。
[0175]
总线803包括数据总线、地址总线和控制总线。
[0176]
存储单元802可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)8021和/或高速缓存存储器8022,还可以进一步包括只读存储器(rom)8023。
[0177]
存储单元802还可以包括具有一组(至少一个)程序模块8024的程序/实用工具8025,这样的程序模块8024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0178]
电子设备800也可以与一个或多个外部设备804(例如键盘、指向设备、蓝牙设备等)通信。这种通信可以通过输入/输出(i/o)接口805进行。并且,电子设备800还可以通过网络适配器806与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器806通过总线803与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0179]
应当注意,尽管在上文详细描述中提及了功能模块开发装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施例,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
[0180]
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0181]
虽然已经参考若干具体实施例描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施例,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1