CN110201396B - 用于生成游戏编辑器和插件以及数据处理的方法及装置 - Google Patents

用于生成游戏编辑器和插件以及数据处理的方法及装置 Download PDF

Info

Publication number
CN110201396B
CN110201396B CN201910482046.4A CN201910482046A CN110201396B CN 110201396 B CN110201396 B CN 110201396B CN 201910482046 A CN201910482046 A CN 201910482046A CN 110201396 B CN110201396 B CN 110201396B
Authority
CN
China
Prior art keywords
game
module
editor
data
generating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910482046.4A
Other languages
English (en)
Other versions
CN110201396A (zh
Inventor
向兆威
赵亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201910482046.4A priority Critical patent/CN110201396B/zh
Publication of CN110201396A publication Critical patent/CN110201396A/zh
Application granted granted Critical
Publication of CN110201396B publication Critical patent/CN110201396B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及生成游戏编辑器和游戏编辑器插件的方法和装置以及数据处理的方法和装置。其中所述生成游戏编辑器的方法包括:获取游戏编辑器插件中的至少一个模块,其中,所述游戏编辑器插件用于生成预定的游戏编辑器,并且所述游戏编辑器插件中的每个模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;以及根据所述至少一个模块生成所述预定的游戏编辑器。通过本发明能够解决现有的游戏编辑器难以复用和扩展性不足的问题,提高了游戏编辑器的灵活性。

Description

用于生成游戏编辑器和插件以及数据处理的方法及装置
技术领域
本发明涉及游戏领域,尤其涉及用于生成游戏编辑器和插件以及数据处理的方法及装置。
背景技术
游戏编辑器是一种用来编写游戏相关内容,从而方便游戏的设计与实现的软件,包括地图编辑器、副本编辑器、AI编辑器等。
其中,Cocos Studio是由触控科技引擎团队研发的一款基于Cocos 2d-x的免费游戏开发工具集。Cocos Studio包含了游戏开发中核心的几个游戏编辑器,例如UI编辑器、动画编辑器、场景编辑器以及数据编辑器等,用于处理游戏中的动画资源、UI界面、游戏场景以及游戏数据。
此外,魔兽争霸地图编辑器,英文名WarCraftⅢWorld Editor(简称WE),是暴雪巨作《魔兽争霸Ⅲ》所附带的功能强大的地图编辑器。通过这款编辑器,可以方便地添加各种贴图以及模型到地图全局可视化界面中。这款编辑器不仅可以编辑基础地图,还可以设置触发器来运行事件、管理和运用魔兽中的所有声音、编辑各种对象的属性等,通过该编辑器可以制作出完整的魔兽地图,如dota的地图。
但是,现有的游戏编辑器仍然存在众多不尽如人意的缺点,例如Cocos Studio存在以下缺点:
(1)Cocos Studio是基于Cocos 2d-x引擎的游戏编辑器,与引擎具有很强的关联性,如果采用了其他引擎开发游戏,还想继续使用Cocos Studio,该引擎处理的资源数据要和Cocos一致,因此对引擎限制比较大。
(2)尽管Cocos Studio可以采用插件的方式定制自己的编辑器,但这种定制只能是基于现有的四个编辑器的,也就是说只能在现有的编辑器上添加功能。对于功能完全不同的编辑器,如副本编辑器、AI编辑器等,则需要从零开始重新开发。
(3)Cocos Studio提供的各种编辑器,表现力有限,各编辑器在游戏模拟界面上,只能提供现有的一些表现。如果是要定制自己的表现,比如UI的一些特定动画,则比较困难。尤其是原生引擎不支持的表现,基本无法定制。
(4)不能很好的与游戏数据结合。策划会填许多数据表,一般是excel表,这些表中的数据是和游戏强相关的,在Cocos Studio中使用就非常困难,不能做与之相关的定制。
此外,WE游戏编辑器也存在以下缺陷:
(1)WE是成熟定型的游戏编辑器,功能定制化很强,只能为魔兽争霸这款游戏编辑地图。如果游戏的数据表结构发生改变,编辑器的代码也要做相应的改变。它是基于魔兽争霸这款游戏数据表设计非常稳定的前提下外放的。
(2)WE因为是完全基于魔兽争霸这个游戏开发的,和游戏关联比较大,对于新的项目难以继续复用,需要重新开发。
由此可见,现有的游戏编辑器仍然存在难以复用和扩展性不足等问题。
发明内容
鉴于现有技术中存在的以上问题,本发明提出了用于生成游戏编辑器和插件以及以及数据处理的方法及装置,以解决享有技术中存在的问题。
根据本发明的一个方面,提供一种生成游戏编辑器的方法,包括:获取游戏编辑器插件中的至少一个模块,其中,所述游戏编辑器插件用于生成预定的游戏编辑器,并且所述游戏编辑器插件中的每个模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;以及根据所述至少一个模块生成所述预定的游戏编辑器。
进一步地,根据所述至少一个模块生成所述预定的游戏编辑器包括:根据所述预定的游戏编辑器对获取到的所述至少一个模块中的至少之一进行调整;以及根据调整后的所述至少一个模块生成所述预定的游戏编辑器。
进一步地,获取所述游戏编辑器插件中的所述至少一个模块包括:获取用于形成所述预定的游戏编辑器的用户界面的编辑器窗口模块;和/或获取用于表现游戏的游戏客户端模块;和/或获取用于处理所述预定的游戏编辑器的数据的数据处理模块。
进一步地,包括将至少一个所述游戏客户端模块嵌入所述编辑器窗口模块中。
进一步地,获取所述编辑器窗口模块包括:获取用于做为所有窗口界面的入口并且能够添加和删除窗口的主界面子模块;和/或获取用于在其中嵌入所述游戏客户端模块的界面的游戏预览界面子模块;和/或获取用于实现确认功能和/或表示对话框的对话框子模块;和/或获取用于展示excel的sheet页的sheet列表子模块;和/或获取用于展示目录树的目录树子模块;和/或获取用于对节点树的每个节点进行编辑的节点树子模块;和/或获取用于展示状态的状态列表子模块。
进一步地,获取所述对话框子模块包括获取入参,并且根据所述入参定制所述对话框子模块。
进一步地,所述入参包括对话框的每一行数据和与该行数据对应生成的控件类型。
进一步地,获取数据处理模块包括:获取用于读写excel表的excel读写子模块;和/或获取用于读写图片的图片读写子模块;和/或获取用于读写Json格式数据的Json读写子模块;和/或获取用于解析xml的xml解析子模块。
进一步地,还包括:获取用于在多人同时对同一张表进行编辑时,锁住该表的锁表功能模块;和/或获取用于将编辑后的数据实时更新到游戏中显示的热更功能模块。
根据本发明的另一个方面,提供一种生成游戏编辑器的装置,包括:模块获取单元,用于获取游戏编辑器插件中的至少一个模块,其中,所述游戏编辑器插件用于生成预定的游戏编辑器,并且所述游戏编辑器插件中的每个模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;游戏编辑器生成单元,用于根据所述至少一个模块生成所述预定的游戏编辑器。
进一步地,所述游戏编辑器生成单元包括:调整子单元,用于根据所述预定的游戏编辑器对获取到的所述至少一个模块中的至少之一进行调整;以及生成子单元,用于根据调整后的所述至少一个模块生成所述预定的游戏编辑器。
进一步地,所述模块获取单元包括:编辑器窗口模块获取单元,获取用于形成所述预定的游戏编辑器的用户界面的编辑器窗口模块;和/或游戏客户端模块获取单元,获取用于表现游戏的游戏客户端模块;和/或数据处理模块获取单元,获取用于处理所述预定的游戏编辑器的数据的数据处理模块。
进一步地,所述装置还包括嵌入单元,用于将至少一个所述游戏客户端模块嵌入所述编辑器窗口模块中。
进一步地,所述编辑器窗口模块获取单元包括:主界面子模块获取子单元,获取用于做为所有窗口界面的入口并且能够添加和删除窗口的主界面子模块;和/或游戏预览界面子模块获取子单元,获取用于在其中嵌入所述游戏客户端模块的界面的游戏预览界面子模块;和/或对话框子模块获取子单元,获取用于实现确认功能和/或表示对话框的对话框子模块;和/或sheet列表子模块获取子单元,获取用于展示excel的sheet页的sheet列表子模块;和/或目录树子模块获取子单元,获取用于展示目录树的目录树子模块;和/或节点树子模块获取子单元,获取用于对节点树的每个节点进行编辑的节点树子模块;和/或状态列表子模块获取子单元,获取用于展示状态的状态列表子模块。
进一步地,所述对话框子模块获取子单元包括入参获取子单元,用于获取入参,并且根据所述入参定制所述对话框子模块。
进一步地,数据处理模块获取单元包括:excel读写子模块获取子单元,获取用于读写excel表的excel读写子模块;和/或图片读写子模块获取子单元,获取用于读写图片的图片读写子模块;和/或Json读写子模块获取子单元,获取用于读写Json格式数据的Json读写子模块;和/或xml解析子模块获取子单元,获取用于解析xml的xml解析子模块。
进一步地,所述模块获取单元还包括:锁表功能模块获取单元,获取用于在多人同时对同一张表进行编辑时,锁住该表的锁表功能模块;和/或热更功能模块获取单元,获取用于将编辑后的数据实时更新到游戏中显示的热更功能模块。
根据本发明的另一方面,提供一种用于生成游戏编辑器插件的方法,所述游戏编辑器插件用于生成预定的游戏编辑器,其特征在于,包括:生成至少一个模块,所述模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;以及根据所述至少一个模块生成所述游戏编辑器插件。
进一步地,生成所述至少一个模块包括:生成用于形成所述预定的游戏编辑器的用户界面的编辑器窗口模块;和/或生成用于表现游戏的游戏客户端模块;和/或生成用于处理所述预定的游戏编辑器的数据的数据处理模块。
进一步地,生成所述游戏客户端模块包括:生成游戏资源和数据;生成封装有游戏引擎的游戏引擎封装模块;以及从所述游戏引擎封装模块中提取用于调取所述游戏资源和数据,并展示游戏的游戏客户端接口。
进一步地,生成所述游戏客户端模块的步骤包括生成多个所述游戏客户端模块,并且其中每一个所述游戏客户端模块分别与不同游戏引擎中的一种游戏引擎对应。
进一步地,包括在所述编辑器窗口模块中嵌入多个所述游戏客户端模块。
进一步地,提取所述游戏客户端接口包括提取用于加载游戏人物的接口。
进一步地,生成所述编辑器窗口模块包括:生成用于做为所有窗口界面的入口并且能够添加和删除窗口的主界面子模块;和/或生成用于在其中嵌入所述游戏客户端模块的界面的游戏预览界面子模块;和/或生成用于实现确认功能和/或表示对话框的对话框子模块;和/或生成用于展示excel的sheet页的sheet列表子模块;和/或生成用于展示目录树的目录树子模块;和/或生成用于对节点树的每个节点进行编辑的节点树子模块;和/或生成用于展示状态的状态列表子模块。
进一步地,生成所述对话框子模块包括根据入参定制所述对话框子模块。
进一步地,所述入参包括对话框的每一行数据和与该行数据对应生成的控件类型。
进一步地,包括用代码实现所述编辑器窗口模块的所有子模块,并且将每种类型的界面封装成一个类。
进一步地,生成所述数据处理模块包括:生成用于读写excel表的excel读写子模块;和/或生成用于读写图片的图片读写子模块;和/或生成用于读写Json格式数据的Json读写子模块;和/或生成用于解析xml的xml解析子模块。
进一步地,生成所述至少一个模块还包括:生成用于在多人同时对同一张表进行编辑时,锁住该表的锁表功能模块;和/或生成用于将编辑后的数据实时更新到游戏中显示的热更功能模块。
根据本发明的另一个方面,提供一种用于生成游戏编辑器插件的装置,所述游戏编辑器插件用于生成预定的游戏编辑器,包括:模块生成单元,用于生成至少一个模块,所述模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;插件生成单元,用于根据所述至少一个模块生成所述编辑器插件。
进一步地,模块生成单元包括:编辑器窗口模块生成单元,生成用于形成所述预定的游戏编辑器的用户界面的编辑器窗口模块;和/或游戏客户端模块生成单元,生成用于表现游戏的游戏客户端模块;和/或数据处理模块生成单元,生成用于处理所述预定的游戏编辑器的数据的数据处理模块。
进一步地,游戏客户端模块生成单元包括:资源数据生成单元,用于生成游戏资源和数据;封装模块生成单元,用于生成封装有游戏引擎的游戏引擎封装模块;以及接口提取单元,用于从所述游戏引擎封装模块中提取用于调取所述游戏资源和数据,并展示游戏的游戏客户端接口。
进一步地,所述装置还包括嵌入单元,用于在所述编辑器窗口模块中嵌入至少一个游戏客户端模块。
进一步地,编辑器窗口模块生成单元包括:主界面子模块生成子单元,生成用于做为所有窗口界面的入口并且能够添加和删除窗口的主界面子模块;和/或游戏预览界面子模块生成子单元,生成用于在其中嵌入所述游戏客户端模块的界面的游戏预览界面子模块;和/或对话框子模块生成子单元,生成用于实现确认功能和/或表示对话框的对话框子模块;和/或sheet列表子模块生成单元,生成用于展示excel的sheet页的sheet列表子模块;和/或目录树子模块生成子单元,生成用于展示目录树的目录树子模块;和/或节点树子模块生成子单元,生成用于对节点树的每个节点进行编辑的节点树子模块;和/或状态列表子模块生成子单元,生成用于展示状态的状态列表子模块。
进一步地,对话框子模块生成子单元包括定制子单元,用于根据入参定制所述对话框子模块。
进一步地,数据处理模块生成单元包括:excel读写子模块生成子单元,生成用于读写excel表的excel读写子模块;和/或图片读写子模块生成子单元,生成用于读写图片的图片读写子模块;和/或Json读写子模块生成子单元,生成用于读写Json格式数据的Json读写子模块;和/或xml解析子模块生成子单元,生成用于解析xml的xml解析子模块。
进一步地,模块生成单元还包括:锁表功能模块生成单元,生成用于在多人同时对同一张表进行编辑时,锁住该表的锁表功能模块;和/或热更功能模块生成单元,生成用于将编辑后的数据实时更新到游戏中显示的热更功能模块。
根据本发明的另一个方面,提供一种数据处理方法,包括:将数据加载到内存中;将所述内存中的所述数据转换为游戏编辑器的游戏客户端模块和/或编辑器窗口模块能够处理的数据,并将转换后的数据发送至所述游戏客户端模块和/或所述编辑器窗口模块;以及将来自所述游戏客户端模块的数据和/或来自所述编辑器窗口模块的数据转换成新的数据,并将所述新的数据存储到所述内存中。
进一步地,所述将数据加载到内存中包括:根据所述数据的存放位置、实例生成方法和/或编辑方法将所述数据加载到内存中。
进一步地,所述新的数据为游戏所需的数据。
根据本发明的另一个方面,提供一种数据处理装置,包括:数据读取配置,用于将数据加载到内存中;以及数据映射配置,用于:将所述内存中的所述数据转换为游戏编辑器的游戏客户端模块和/或编辑器窗口模块能够处理的数据,并将转换后的数据发送至所述游戏客户端模块和/或所述编辑器窗口模块;并且将来自所述游戏客户端模块的数据和/或来自所述编辑器窗口模块的数据转换成新的数据,并将所述新的数据存储到所述内存中。
通过本发明提出上述方案,能够解决现有的游戏编辑器难以复用和扩展性不足的问题,提高了游戏编辑器的灵活性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
附图1为根据本发明的一个实施例的生成游戏编辑器的方法的流程图。
附图2为根据本发明的又一个实施例的生成游戏编辑器的装置的框图。
附图3为根据本发明的又一个实施例的生成游戏编辑器插件的方法的流程图。
附图4为根据本发明的又一个实施例的生成游戏编辑器插件的装置的框图。
附图5为根据本发明的又一个实施例的数据处理方法的流程图。
附图6为根据本发明的又一个实施例的数据处理装置的框图。
附图7为根据本发明的具体实施方式的游戏编辑器的抽象模型的示意图。
附图8为根据本发明的具体实施方式的编辑器框架的示意图。
附图9为根据本发明的具体实施方式的游戏客户端模块的示意图。
附图10为根据本发明的具体实施方式的编辑器窗口模块的示意图。
附图11为根据本发明的具体实施方式的数据处理模块的示意图。
附图12为根据本发明的具体实施方式的数据处理的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块或单元。
在描述本发明的具体实施方式之前,先介绍与本发明实施例相关的概念和术语如下所示:
游戏编辑器:用来编写游戏相关内容的软件,方便游戏的设计与实现。
游戏客户端:展示游戏内容的界面,区别于服务端。
Python/python:一种编程语言。
Qt/qt:一种跨平台图形用户界面应用程序开发框架,提供强大的界面开发库。
PyQt:Python编程语言和Qt库的融合,提供Python语言开发用户界面的各种接口。
xml:一种标记语言,可以传送及携带数据信息。
JSON:一种轻量级的数据交换格式,独立于语言。
dict:字典,一种数据类型,数据内容是无序的,由键值(key-value)对组成,可以通过key来获取到value。
在本实施例中,提供了一种生成游戏编辑器的方法,图1是根据本发明实施例的生成游戏编辑器的方法的流程图,如图1所示,该流程包括如下步骤:
步骤S102,获取游戏编辑器插件中的至少一个模块,其中,所述游戏编辑器插件用于生成预定的游戏编辑器,并且所述游戏编辑器插件中的每个模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;
步骤S104,根据所述至少一个模块生成所述预定的游戏编辑器。
通过本实施例的方法,首先获取游戏编辑器中的至少一个模块,再根据所述至少一个模块生成预定的游戏编辑器,从而提供一种新的游戏编辑器的架构方式,将编辑器界面、数据处理、游戏客户端等模块完全抽离出来,形成与项目无关的游戏编辑器框架,从而可以方便地在此框架上进行二次开发,实现各种类型的游戏编辑器。
在一个可选的实施例中,模块可以包括很多个,并且每个模块的功能可以是一个完整的功能,用户在选择这些模块的时候,可以直接使用从而提高使用的便利性,也可以对各个模块根据实际需要进行调整后再使用。可选地,也可以由多个模块共同实现一个完整的功能,从而通过将不同的模块进行不同的组合,实现不同的功能,从而提高了操作的灵活性。
进一步地,根据所述至少一个模块生成所述预定的游戏编辑器包括:根据所述预定的游戏编辑器对获取到的所述至少一个模块中的至少之一进行调整;以及根据调整后的所述至少一个模块生成所述预定的游戏编辑器。由于本实施例的方法支持模块的调整,使得在生成游戏编辑器的过程中,可以充分利用好每一个模块,从而最大限度发挥每个模块的作用,而不必就相同的模块类型准备多个不同的模块,从而节约了生成游戏编辑器的成本。
插件中的模块的划分可以有多种方式,可以根据所要生成的游戏编辑器,去获取不同类型的模块。如果需要生成能够预览游戏内容的游戏编辑器,则需要用于表现游戏内容的模块。而如果不要求游戏编辑器能够预览游戏内容(例如地图编辑器),则不需要用于表现游戏内容的模块。如果游戏编辑器仅限于对游戏的数据进行编辑,则只需要能够支持编辑数据的窗口模块。
进一步地,获取所述游戏编辑器插件中的所述至少一个模块包括:获取用于形成所述预定的游戏编辑器的用户界面的编辑器窗口模块;和/或获取用于表现游戏的游戏客户端模块;和/或获取用于处理所述预定的游戏编辑器的数据的数据处理模块。由于获取了游戏编辑器中的上述模块,使得可以根据实际的需要,生成支持用户界面、游戏内容的预览和/或数据处理等众多功能的游戏编辑器,从而提高了灵活性和扩展性。
进一步地,包括将至少一个所述游戏客户端模块嵌入所述编辑器窗口模块中。由于生成编辑器时,将至少一个游戏客户端模块嵌入编辑器窗口模块中,因此可以在编辑游戏的过程中,展现至少一个游戏的内容,提高了游戏编辑器的实时性和互动性。
进一步地,获取所述编辑器窗口模块包括:获取用于做为所有窗口界面的入口并且能够添加和删除窗口的主界面子模块;和/或获取用于在其中嵌入所述游戏客户端模块的界面的游戏预览界面子模块;和/或获取用于实现确认功能和/或表示对话框的对话框子模块;和/或获取用于展示excel的sheet页的sheet列表子模块;和/或获取用于展示目录树的目录树子模块;和/或获取用于对节点树的每个节点进行编辑的节点树子模块;和/或获取用于展示状态的状态列表子模块。通过获取上述子模块,使得可以在生成的游戏编辑器中表现游戏内容、通过对话框进行各种操作、展示excel的sheet页、展示目录树、对节点树的节点进行展示和编辑、和/或展示游戏中的状态。从而可以灵活地实现游戏编辑器的功能。
进一步地,获取所述对话框子模块包括获取入参,并且根据所述入参定制所述对话框子模块。从而在生成游戏编辑器时,可以根据输入的入参实现对话框子模块的定制化,从而便利使用者的操作。并且更进一步地,所述入参包括对话框的每一行数据和与该行数据对应生成的控件类型。从而可以根据对话框的每一行数据和对应生成的控件类型,实现对话框的子模块的定制。
进一步地,获取数据处理模块包括:获取用于读写excel表的excel读写子模块;和/或获取用于读写图片的图片读写子模块;和/或获取用于读写Json格式数据的Json读写子模块;和/或获取用于解析xml的xml解析子模块。通过获取以上子模块,所生成的游戏编辑器可以实现excel表、图片、Json格式数据等的读写以及xml的解析,进而实现灵活的数据处理操作。
进一步地,还包括:获取用于在多人同时对同一张表进行编辑时,锁住该表的锁表功能模块;和/或获取用于将编辑后的数据实时更新到游戏中显示的热更功能模块。通过所述的锁表功能模块,可以防止在多人对同一张表进行编辑时产生冲突;并且通过所述热更功能模块,也可以在编辑游戏的过程中将编辑后的数据实时更新到游戏中进行显示,从而提高了游戏编辑器的实时性和互动性。当然,上述模块并不是必需的,在多人通过游戏编辑器对同一张表进行编辑时,也可以不锁住该表。并且在对数据进行编辑时,也可以不将编辑后的数据实时更新到游戏中。一切根据生成游戏编辑器的用户根据具体的情况来确定。
根据另外一个实施例,提供了一种生成游戏编辑器的装置200,如图2所示。该装置200包括:
模块获取单元201,用于获取游戏编辑器插件中的至少一个模块,其中,所述游戏编辑器插件用于生成预定的游戏编辑器,并且所述游戏编辑器插件中的每个模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;
游戏编辑器生成单元202,用于根据所述至少一个模块生成所述预定的游戏编辑器。
如前面所述,该装置200可以方便地在此框架上进行二次开发,实现各种类型的游戏编辑器。并且在一个可选的实施例中,模块可以包括多个,每个模块的功能可以是一个完整的功能,用户在选择这些模块的时候可以直接使用从而提高使用的便利性,也可以对各个模块根据实际需要进行调整后再使用。可选地,也可以由多个模块共同实现一个完整的功能,从而通过将不同的模块进行不同的组合,实现不同的功能,从而提高了操作的灵活性。
进一步地,所述游戏编辑器生成单元包括:调整子单元,用于根据所述预定的游戏编辑器对获取到的所述至少一个模块中的至少之一进行调整;以及生成子单元,用于根据调整后的所述至少一个模块生成所述预定的游戏编辑器。如前面所述,通过所述调整子单元和生成子单元,最大限度发挥每个模块的作用,而不必就相同的模块类型准备多个不同的模块,从而节约了生成游戏编辑器的成本。
进一步地,所述模块获取单元包括:编辑器窗口模块获取单元,获取用于形成所述预定的游戏编辑器的用户界面的编辑器窗口模块;和/或游戏客户端模块获取单元,获取用于表现游戏的游戏客户端模块;和/或数据处理模块获取单元,获取用于处理所述预定的游戏编辑器的数据的数据处理模块。前面所述,上述模块使得可以根据实际的需要,生成支持用户界面、游戏内容的预览和/或数据处理等众多功能的游戏编辑器,从而提高了灵活性和扩展性。
进一步地,所述装置还包括嵌入单元,用于将至少一个所述游戏客户端模块嵌入所述编辑器窗口模块中。从而,可以在编辑游戏的过程中,展现至少一个游戏的内容,提高了游戏编辑器的实时性和互动性
进一步地,所述编辑器窗口模块获取单元包括:主界面子模块获取子单元,获取用于做为所有窗口界面的入口并且能够添加和删除窗口的主界面子模块;和/或游戏预览界面子模块获取子单元,获取用于在其中嵌入所述游戏客户端模块的界面的游戏预览界面子模块;和/或对话框子模块获取子单元,获取用于实现确认功能和/或表示对话框的对话框子模块;和/或sheet列表子模块获取子单元,获取用于展示excel的sheet页的sheet列表子模块;和/或目录树子模块获取子单元,获取用于展示目录树的目录树子模块;和/或节点树子模块获取子单元,获取用于对节点树的每个节点进行编辑的节点树子模块;和/或状态列表子模块获取子单元,获取用于展示状态的状态列表子模块。如前面所述,通过获取上述子模块,使得可以在生成的游戏编辑器中表现游戏内容、通过对话框进行各种操作、展示excel的sheet页、展示目录树、对节点树的节点进行展示和编辑和/或展示游戏中的状态。从而可以灵活地实现游戏编辑器的功能。
进一步地,所述对话框子模块获取子单元包括入参获取子单元,用于获取入参,并且根据所述入参定制所述对话框子模块。从而如前所述,在生成游戏编辑器时,可以根据输入的入参实现对话框子模块的定制化,从而便利使用者的操作。
进一步地,数据处理模块获取单元包括:excel读写子模块获取子单元,获取用于读写excel表的excel读写子模块;和/或图片读写子模块获取子单元,获取用于读写图片的图片读写子模块;和/或Json读写子模块获取子单元,获取用于读写Json格式数据的Json读写子模块;和/或xml解析子模块获取子单元,获取用于解析xml的xml解析子模块。如前面所述,通过获取以上子模块,所生成的游戏编辑器可以实现excel表、图片、Json格式数据等的读写以及xml的解析,进而实现灵活的数据处理操作。
进一步地,所述模块获取单元还包括:锁表功能模块获取单元,获取用于在多人同时对同一张表进行编辑时,锁住该表的锁表功能模块;和/或热更功能模块获取单元,获取用于将编辑后的数据实时更新到游戏中显示的热更功能模块。如前面所述,通过获取所述的锁表功能模块,可以防止在多人对同一张表进行编辑时产生冲突;并且通过获取所述热更功能模块,也可以在编辑游戏的过程中将编辑后的数据实时更新到游戏中进行显示,从而提高了游戏编辑器的实时性和互动性。
根据另外一个实施例,提供一种用于生成游戏编辑器插件的方法,所述游戏编辑器插件用于生成预定的游戏编辑器。如图3中的流程图所示,所述方法包括:
S302生成至少一个模块,所述模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;以及
S304根据所述至少一个模块生成所述游戏编辑器插件。
通过本实施例的方法生成游戏编辑器插件,从而在使用该游戏编辑器插件生成游戏编辑器时,可以将编辑器界面、数据处理、游戏客户端等模块完全抽离出来,形成与项目无关的游戏编辑器框架,从而可以方便地在此框架上进行二次开发,实现各种类型的游戏编辑器。并且游戏编辑器开发人员可以不必关心插件底层的实现,只需要使用所述模块,即可定制自己的编辑器。
在一个可选的实施例中,模块可以包括很多个,并且每个模块的功能可以是一个完整的功能,用户在选择这些模块的时候可以直接使用从而提高使用的便利性,也可以对各个模块根据实际需要进行调整后再使用。可选地,也可以由多个模块共同实现一个完整的功能,从而通过将不同的模块进行不同的组合,实现不同的功能,从而提高了操作的灵活性。
插件中的模块的划分可以有多种方式,可以根据所要生成的游戏编辑器,去生成不同类型的模块。如果需要生成能够预览游戏内容的游戏编辑器,则需要用于表现游戏内容的模块。而如果不要求游戏编辑器能够预览游戏内容(例如地图编辑器),则不需要用于表现游戏内容的模块。如果游戏编辑器仅限于对游戏的数据进行编辑,则只需要能够支持编辑数据的窗口模块。
进一步地,生成所述至少一个模块包括:生成用于形成所述预定的游戏编辑器的用户界面的编辑器窗口模块;和/或生成用于表现游戏的游戏客户端模块;和/或生成用于处理所述预定的游戏编辑器的数据的数据处理模块。由于获取了游戏编辑器中的上述模块,使得可以根据实际的需要,生成支持用户界面、游戏内容的预览和/或数据处理等众多功能的游戏编辑器,从而提高了灵活性和扩展性。
进一步地,生成所述游戏客户端模块包括:生成游戏资源和数据;生成封装有游戏引擎的游戏引擎封装模块;以及从所述游戏引擎封装模块中提取用于调取所述游戏资源和数据,并展示游戏的游戏客户端接口。生成的游戏客户端模块包括了封装有游戏引擎的游戏引擎封装模块以及从游戏引擎封装模块提取的游戏客户端接口。使得在生成游戏编辑器时,开发者可以不必去关心底层的实现。从而增强了便利性和灵活性。
进一步地,生成所述游戏客户端模块的步骤包括生成多个所述游戏客户端模块,并且其中每一个所述游戏客户端模块分别与不同游戏引擎中的一种游戏引擎对应。从而使得游戏编辑器插件中可以包括基于多个游戏引擎的多个游戏客户端模块,游戏编辑器的开发者由此可以灵活地嵌入所需的游戏引擎,从而增强了便利性和灵活性。
进一步地,包括在所述编辑器窗口模块中嵌入多个所述游戏客户端模块。从而使得游戏开发者可以在同一个游戏编辑器界面中对基于多个游戏引擎的游戏进行编辑,从而进一步增强了游戏编辑器的功能。
进一步地,提取所述游戏客户端接口包括提取用于加载游戏人物的接口。从而可以灵活地加载游戏人物。
进一步地,生成所述编辑器窗口模块包括:生成用于做为所有窗口界面的入口并且能够添加和删除窗口的主界面子模块;和/或生成用于在其中嵌入所述游戏客户端模块的界面的游戏预览界面子模块;和/或生成用于实现确认功能和/或表示对话框的对话框子模块;和/或生成用于展示excel的sheet页的sheet列表子模块;和/或生成用于展示目录树的目录树子模块;和/或生成用于对节点树的每个节点进行编辑的节点树子模块;和/或生成用于展示状态的状态列表子模块。通过生成上述子模块,使得可以在生成的游戏编辑器中表现游戏内容、通过对话框进行各种操作、展示excel的sheet页、展示目录树、对节点树的节点进行展示和编辑、和/或展示游戏中的状态。从而可以灵活地实现游戏编辑器的功能。
进一步地,生成所述对话框子模块包括根据入参定制所述对话框子模块。从而在生成游戏编辑器时,可以根据输入的入参实现对话框子模块的定制化,从而便利使用者的操作。并且更进一步地,所述入参包括对话框的每一行数据和与该行数据对应生成的控件类型。从而可以根据对话框的每一行数据和对应生成的控件类型,实现对话框的子模块的定制。
进一步地,包括用代码实现所述编辑器窗口模块的所有子模块,并且将每种类型的界面封装成一个类。从而增强界面的可扩展性。
进一步地,生成所述数据处理模块包括:生成用于读写excel表的excel读写子模块;和/或生成用于读写图片的图片读写子模块;和/或生成用于读写Json格式数据的Json读写子模块;和/或生成用于解析xml的xml解析子模块。通过生成以上子模块,所生成的游戏编辑器可以实现excel表、图片、Json格式数据等的读写以及xml的解析,进而实现灵活的数据处理操作。
进一步地,生成所述至少一个模块还包括:生成用于在多人同时对同一张表进行编辑时,锁住该表的锁表功能模块;和/或生成用于将编辑后的数据实时更新到游戏中显示的热更功能模块。通过所述的锁表功能模块,可以防止在多人对同一张表进行编辑时产生冲突;并且通过所述热更功能模块,也可以在编辑游戏的过程中将编辑后的数据实时更新到游戏中进行显示,从而提高了游戏编辑器的实时性和互动性。当然,上述模块并不是必需的,在多人通过游戏编辑器对同一张表进行编辑时,也可以不锁住该表。并且在对数据进行编辑时,也可以不将编辑后的数据实时更新到游戏中。一切根据生成游戏编辑器的用户根据具体的情况来确定。
根据另一个实施例,提供一种用于生成游戏编辑器插件的装置400。如图4所示,所述游戏编辑器插件用于生成预定的游戏编辑器,包括:模块生成单元401,用于生成至少一个模块,所述模块分别用于实现所述预定的游戏编辑器在编辑游戏时所使用的功能;插件生成单元402,用于根据所述至少一个模块生成所述编辑器插件。
如前面所述,通过本实施例的装置生成游戏编辑器插件,从而在使用该游戏编辑器插件生成游戏编辑器时,可以将编辑器界面、数据处理、游戏客户端等模块完全抽离出来,形成与项目无关的游戏编辑器框架,从而可以方便地在此框架上进行二次开发,实现各种类型的游戏编辑器。并且游戏编辑器开发人员可以不必关心插件底层的实现,只需要使用所述模块,即可定制自己的编辑器。
进一步地,模块生成单元包括:编辑器窗口模块生成单元,生成用于形成所述预定的游戏编辑器的用户界面的编辑器窗口模块;和/或游戏客户端模块生成单元,生成用于表现游戏的游戏客户端模块;和/或数据处理模块生成单元,生成用于处理所述预定的游戏编辑器的数据的数据处理模块。由于生成了游戏编辑器中的上述模块,使得可以根据实际的需要,生成支持用户界面、游戏内容的预览和/或数据处理等众多功能的游戏编辑器,从而提高了灵活性和扩展性。
进一步地,游戏客户端模块生成单元包括:资源数据生成单元,用于生成游戏资源和数据;封装模块生成单元,用于生成封装有游戏引擎的游戏引擎封装模块;以及接口提取单元,用于从所述游戏引擎封装模块中提取用于调取所述游戏资源和数据,并展示游戏的游戏客户端接口。生成的游戏客户端模块包括了封装有游戏引擎的游戏引擎封装模块以及从游戏引擎封装模块提取的游戏客户端接口。使得在生成游戏编辑器时,开发者可以不必去关心底层的实现。从而增强了便利性和灵活性。
进一步地,所述装置还包括嵌入单元,用于在所述编辑器窗口模块中嵌入至少一个游戏客户端模块。从而使得游戏开发者可以在同一个游戏编辑器界面中对基于多个游戏引擎的游戏进行编辑,从而进一步增强了游戏编辑器的功能。
进一步地,编辑器窗口模块生成单元包括:主界面子模块生成子单元,生成用于做为所有窗口界面的入口并且能够添加和删除窗口的主界面子模块;和/或游戏预览界面子模块生成子单元,生成用于在其中嵌入所述游戏客户端模块的界面的游戏预览界面子模块;和/或对话框子模块生成子单元,生成用于实现确认功能和/或表示对话框的对话框子模块;和/或sheet列表子模块生成单元,生成用于展示excel的sheet页的sheet列表子模块;和/或目录树子模块生成子单元,生成用于展示目录树的目录树子模块;和/或节点树子模块生成子单元,生成用于对节点树的每个节点进行编辑的节点树子模块;和/或状态列表子模块生成子单元,生成用于展示状态的状态列表子模块。通过生成上述子模块,使得可以在生成的游戏编辑器中表现游戏内容、通过对话框进行各种操作、展示excel的sheet页、展示目录树、对节点树的节点进行展示和编辑、和/或展示游戏中的状态。从而可以灵活地实现游戏编辑器的功能。
进一步地,对话框子模块生成子单元包括定制子单元,用于根据入参定制所述对话框子模块。从而在生成游戏编辑器时,可以根据输入的入参实现对话框子模块的定制化,从而便利使用者的操作。
进一步地,数据处理模块生成单元包括:excel读写子模块生成子单元,生成用于读写excel表的excel读写子模块;和/或图片读写子模块生成子单元,生成用于读写图片的图片读写子模块;和/或Json读写子模块生成子单元,生成用于读写Json格式数据的Json读写子模块;和/或xml解析子模块生成子单元,生成用于解析xml的xml解析子模块。通过生成以上子模块,所生成的游戏编辑器可以实现excel表、图片、Json格式数据等的读写以及xml的解析,进而实现灵活的数据处理操作。
进一步地,模块生成单元还包括:锁表功能模块生成单元,生成用于在多人同时对同一张表进行编辑时,锁住该表的锁表功能模块;和/或热更功能模块生成单元,生成用于将编辑后的数据实时更新到游戏中显示的热更功能模块。通过所述的锁表功能模块,可以防止在多人对同一张表进行编辑时产生冲突;并且通过所述热更功能模块,也可以在编辑游戏的过程中将编辑后的数据实时更新到游戏中进行显示,从而提高了游戏编辑器的实时性和互动性。当然,上述模块并不是必需的,在多人通过游戏编辑器对同一张表进行编辑时,也可以不锁住该表。并且在对数据进行编辑时,也可以不将编辑后的数据实时更新到游戏中。一切根据生成游戏编辑器的用户根据具体的情况来确定。
根据另一个实施例,提供一种数据处理方法,所述数据处理方法的流程图如图5所示,包括:
S502:将数据加载到内存中;
S504:将所述内存中的所述数据转换为游戏编辑器的游戏客户端模块和/或编辑器窗口模块能够处理的数据,并将转换后的数据发送至所述游戏客户端模块和/或所述编辑器窗口模块;以及将来自所述游戏客户端模块的数据和/或来自所述编辑器窗口模块的数据转换成新的数据,并将所述新的数据存储到所述内存中。
这样,通过以上方法,在操作数据时就不用关心数据里的各种字段,这样就可以实现数据、游戏客户端和游戏编辑器窗口的分离。并且在对数据修改后,可以很容易地保证编辑器的数据和外观都能得到同步。对于数据宏观结构(比如表的组织方式)相同的项目可以复用一套编辑器,实现不同的项目,共用一套编辑器。
进一步地,所述将数据加载到内存中包括:根据所述数据的存放位置、实例生成方法和/或编辑方法将所述数据加载到内存中。从而可以容易地将数据记载到内存中。
进一步地,所述新的数据为游戏所需的数据。从而可以供游戏使用。
根据另一个实施例,提供一种数据处理装置600,如图6所示,该数据处理装置包括:数据读取配置601,用于将数据加载到内存中;以及数据映射配置602,用于:将所述内存中的所述数据转换为游戏编辑器的游戏客户端模块和/或编辑器窗口模块能够处理的数据,并将转换后的数据发送至所述游戏客户端模块和/或所述编辑器窗口模块;并且将来自所述游戏客户端模块的数据和/或来自所述编辑器窗口模块的数据转换成新的数据,并将所述新的数据存储到所述内存中。
这样,通过以上装置进行数据处理,在操作数据时就不用关心数据里的各种字段,这样就可以实现数据、游戏客户端和游戏编辑器窗口的分离。并且在对数据修改后,可以很容易地保证编辑器的数据和外观都能得到同步。对于数据宏观结构(比如表的组织方式)相同的项目可以复用一套编辑器,实现不同的项目,共用一套编辑器。
在上述实施例中,可以抽象出可分离的游戏编辑器模块,包括游戏客户端模块、编辑器窗口模块、数据处理模块和其他模块。其中,游戏客户端模块具有基于封装的引擎模块实现的外部可调用的接口,编辑器界面均通过传入数据动态生成,数据处理模块包含了多种数据处理方法,其他重要的模块包括锁表、热更新模块。通过合理地方式实现这些抽象出的模块,可以做到游戏编辑器的高度复用。
下面参考附图7-12,将通过一个具体的方案对上述实施方式作出更详细地说明。
<一>关于游戏编辑器的描述
为了更好地理解本发明的实施方式,首先详细描述根据本发明的实施方式的游戏编辑器的抽象模型。
附图7示出了本发明的具体实施方式的游戏编辑器的抽象模型的示意图。如附图7所示,中间的“游戏编辑器操作界面”是面向用户的编辑器,由三个部分组成:游戏客户端、基础数据展示和生成数据展示。
游戏客户端直观地展示一些游戏相关的内容,例如:副本编辑器中展示场景中某个位置的非玩家控制角色(NPC)。游戏客户端本身是嵌入在游戏编辑器操作界面上的,是一个展示的模块,就像PhotoShop中间可见的编辑图形的那部分。
基础数据展示用于提供一些已有数据的直观展示,如由策划人填写的一些NPC、怪物的基本单元,可以通过图片展示出来,这些可以被继承的基本单元会包含一些基本属性,如模型、人工智能(AI)以及血量等。可以类比于PhotoShop中提供的各种可以使用的基础材料、形状等。
生成数据展示用于展示编辑器最终要生成的数据,当然还要能进行编辑,这些数据可能是从零添加的,也有可能是基于基础数据编辑得到的,最后从编辑器中导出,供程序在游戏中使用。
需要注意的是,附图7并不能涵盖所有的游戏编辑器的组成,有些可能会有一些增减。例如,有些编辑器不需要基础数据部分甚至游戏客户端部分,有的游戏编辑器还有一些特殊的部分。但是大部分游戏编辑器都可以进行这样抽象,即使不能这样抽象,也可以进行相似的抽象,不影响通用游戏编辑器框架的抽象设计。
在附图7中,数字1-5表示游戏编辑器的抽象模型中的中数据的交换。
“1”表示从“基础数据”到游戏编辑器界面上的“基础数据展示”的数据传输,也就是将已有的基础数据,如策划表中的数据、一些现有的资源图片,加载到游戏编辑器的内存中,然后在游戏编辑器操作界面的“基础数据展示”中显示出来。
“2”表示将游戏编辑器内存中或“基础数据展示”上的一些数据通过游戏客户端的接口,展现在游戏客户端中。例如,通过将excel表中一行NPC数据传入游戏客户端中用于加载NPC的接口,在游戏客户端中生成一个NPC。
“3”表示将基础数据转换为更具体的生成数据中的一部分,例如一个基础的NPC,转换为一个有具体名称、站在指定位置的具体NPC。
“4”表示游戏客户端返回一些数据供生成数据使用,比如NPC的位置、朝向等信息,需要在游戏客户端中直观的看到并进行操作,返回给生成数据。
“5”是将展示的生成数据导出,成为游戏中实际使用的数据,如xml、json格式的数据,并且这些数据还要能够再次被解析到游戏编辑器中。
<二>关于本实施方式的游戏编辑器框架
附图8示出了根据本发明的具体实施方式的编辑器框架的示意图。该编辑器框架适用于运行在Windows PC上的各种游戏编辑器。但是需要注意的是,本发明的实施方式描述仅用于举例说明,从而方便对本发明进行理解,而不应视为对本发明的限定。例如,所述游戏编辑器框架也可以是运行在Windows PC之外的其他系统的编辑器。
如附图8所示,所述编辑器框架包含一个基础部分—编辑器插件,该编辑器插件是整个游戏编辑器的基石,包括游戏客户端模块、编辑器窗口模块、数据处理模块和其他模块。
本实施方式所述的插件是指一个可以随意拆卸的模块,可包括游戏客户端模块、编辑器窗口模块、数据处理模块和其他模块。然后每个插件模块,可以是一个或是多个插件子模块的集合,这些子模块是相互独立的。例如,游戏客户端模块这个插件模块,就只包含了游戏客户端模块这一个模块,而编辑器窗口模块就包含了各种各样的窗口子模块,各种窗口子模块可以分别加载到游戏编辑器中。
除了编辑器插件之外,所述游戏编辑器框架包括基于编辑器插件实现的一个基本编辑器示例,这个示例调用了编辑器插件里的一些典型模块。所述典型模块包括游戏客户端模块、编辑器窗口模块中的部分子模块、数据处理模块中的部分子模块以及其他模块中的一些典型的子模块,并进行了合理的组织(后面的数据处理流程就是组织方式中的一个重要部分),方便编辑器开发者参考。
编辑器开发人员不用关心插件的底层的实现,只需套用示例的调用方法,即可定制自己的编辑器。其中,游戏编辑器架构中的副本编辑器、地图编辑器等就是仿照基本编辑器示例开发的具体编辑器。一般只需要将基本编辑器示例拷贝一份,然后删掉不需要的模块或模块中的子模块(例如:在基本的编辑器实例中,我们展示了编辑器窗口模块中目录树的使用,在具体的某个编辑器实现里,我们不需要用到目录树结构,但是可以仿照目录树的引入方式,引入编辑器窗口模块里的节点树或者其他子模块),以及补充其他的继承自某个插件或插件子模块的模块,就可以定制化自己的游戏编辑器了。
如附图8所示,编辑器插件包括多个组成模块,例如游戏客户端模块、编辑器窗口模块、数据处理模块以及其他模块。
其中,游戏客户端模块提供一些方法来表现游戏内容,并可以返回一些指定的数据供其他模块使用,并且可以交互的游戏客户端会大大提高编辑器操作的灵活度。
编辑器窗口模块是编辑器的UI(用户界面)部分,所述UI部分上设置有负责数据的展示、编辑以及一些基本操作的窗口界面。窗口界面表现形式是多样的,可以以表格、流程图、目录树、播放器界面等方式展示。合理的展示,可以为数据的操作带来极大的便利。虽然窗口界面和数据息息相关,但如后面所述,可以做到与数据分离,通过传入数据生成相应的窗口。
数据处理模块主要用于数据的读取、转换和写出,根据数据的内容,会有不同的处理方式。常用的包括excel数据的读取和写出、图片的读取、JSON或xml格式数据的读取和写出。这些部分都可以封装出比较通用的基础接口,以供后续复用。
其他模块,常见的有热更、锁表等。热更是将导出的数据直接同步到游戏内,方便对比改动。锁表,用于防止多人同时修改同一张表上传后导致的冲突,预防一些不必要的错误。这些模块需要根据具体的编辑器需求来确定,并且可以封装成通用的模块,也十分重要。
下文中,将详细介绍编辑器插件的各个模块。
<三>关于本实施方式的编辑器插件的各个模块
1.游戏客户端模块
附图9示出根据本发明具体实施方式的游戏客户端模块。其包括封装有游戏引擎的游戏引擎封装模块、游戏客户端接口以及游戏资源和数据。
其中,如附图9所述,游戏客户端底层由游戏引擎支撑,通过封装引擎的游戏引擎封装模块,可以更加清晰的组织引擎。游戏在开发初期,首先会形成自己的游戏引擎封装模块,从而为游戏编辑器的游戏客户端模块的开发带来了很大的便利。
游戏引擎封装模块中可以封装场景、音效、实体、UI、镜头、特效、操作和一些基础库,其中操作是指通过鼠标或键盘的一些响应来控制游戏客户端里的一些实体,例如通过鼠标来选中和拖拽游戏客户端里的一个NPC模型。游戏客户端接口是从游戏引擎封装模块中提取的,暴露给编辑器开发者的部分。通过简单的调用游戏客户端接口,就可以实现各种游戏内容。游戏客户端接口通过传入游戏资源和数据,可以实现游戏内容的展示。
需要注意的是,游戏客户端模块在编辑器中的表现相当于图7中游戏客户端的表现,是直接嵌入在编辑器窗口模块中的主界面模块中的,如果有多个游戏客户端,可以进行替换甚至直接嵌入多个。
为了提高游戏编辑器框架的复用性和扩展性,一种引擎对应于一种游戏客户端模块,通过提供多种引擎的游戏客户端,可以供各种项目开发编辑器使用。此外,全新的引擎也可以很快封装出一套游戏客户端接口模块。游戏客户端接口模块例如包括加载游戏人物的接口,我们可以定义为LoadBiology(args),其中args是入参,统一定义成dict类型,在方法内部进行解析。args中可以包含被加载的游戏人物在游戏场景中的位置和人物模型的资源索引等信息,该方法会返回人物模型的一些信息如可以定位该模型的唯一id。
2.编辑器窗口模块
附图10示出了根据本发明的具体实施方式的编辑器窗口模块的示意图。
如附图10所示,编辑器窗口模块包括主界面子模块、游戏预览界面子模块、对话框子模块、sheet列表子模块、目录树子模块、节点树子模块、状态列表子模块等。
为了增强界面的可扩展性,编辑器窗口模块的所有子模块都用代码实现,而用界面设计工具直接拖拽生成。并且每种类型的界面都被封装成一个类,通过传入数据,来动态展示。窗口类中封装该种类型的基本操作,如右键、单击、双击、关闭等,然后在具体编辑器的模块中重写这些操作方法。
其中,主界面子模块用于作为所有窗口界面的入口,并且在所述主界面中能够随意添加和删除其他窗口。主界面子模块是编辑器窗口模块的基础,如果一个游戏编辑器含有编辑器窗口模块,那么就一定要有主界面这个子模块,其他的子模块可以根据需要来选择是否接入。在qt中,主界面可以通过继承系统的基类MainWindow来封装实现,其他的编辑器窗口子模块可以任意嵌入主界面中。
游戏预览界面子模块用于生成游戏编辑器中放置游戏客户端的界面,其通过PyQt的界面类可以将游戏的windows版本加载到窗口界面里,并且可以在预览界面的类中放置一些刷新或者回调的方法。
需要注意的是,当我们玩一个PC上的客户端游戏时,这个游戏其实就是在PC上开了一个窗口,然后我们操作这个窗口内部。现在我们把这个窗口内嵌到游戏编辑器的主界面中,作为游戏编辑器的一个部分,我们仍然可以操作这个“小窗口”,来继续玩我们的游戏,只不过我们还可以在玩这个“小窗口”游戏的时候,再传递一些消息到这个“小窗口”外层,也就是主界面里。作为主界面的一个子模块,主界面也可以像我们玩游戏一样,给这个游戏“小窗口“发送一些消息。
对话框子模块一般可以用来做一些确认功能或者填写一些数据弹出的弹框,可以通过入参进行定制化,传入的参数应该包括对话框每一行数据和该行数据对应生成的控件类型。
Sheet列表子模块用于实现excel的sheet页的展示方式,可以通过配置自由添加sheet页进行展示,并且可以对sheet页的每行数据进行操作,如增加、复制、删除、改写等。
目录树子模块用于展示文件列表,并且一些特殊文件解析出来也是目录树结构。通过目录树,可以直观展示不同层次的节点。
节点树子模块用于针对作为目录树的扩展的节点树,展示节点树的每个节点,并对节点树每个节点进行编辑,且具有与之匹配的数据类型进行支撑。
状态列表子模块,用于展示一些基础状态的面板。优选地,其通过传入参数名和数据,对基础状态的面板进行合理展示。
需要注意到是,上面介绍的是游戏编辑器中比较常用的编辑器窗口,还可以根据具体需求不断扩展,这样实现的编辑器窗口模块,可以适应于所有的编辑器项目,为新的编辑器提供基础的界面展示。
3.数据处理模块
附图11示出了根据本发明的具体实施方式的数据处理模块的示意图。参见附图11所示,所述数据处理模块包括excel读写子模块、图片读写子模块、Json读写子模块以及xml解析子模块。
其中,游戏的很多数据都是由策划以excel表的形式填写的,通过excel读写子模块可以实现简单通用和多样的excel表读写方式,从而可以大大提高再次开发的效率。在游戏编辑器中编辑的数据,有时候是需要回写到excel中来辅助策划填表,所以excel读写子模块也要提供有效的回写接口。
有些excel表中填写了资源图片的路径,因此图片读写子模块使得可以通过读取资源,展示表中内容,更加直观。
有些类型的游戏编辑器,还要解析xml或者JSON格式数据,进行展示和回写。因此也需要Json读写子模块以及xml解析子模块提供相关的解析和读写接口。
4.其他模块
上面提及的游戏客户端模块、编辑器窗口模块和数据处理模块是大部分编辑器所使用的重要模块,但是为了满足特定编辑器更加复杂的需求,有时候还需要提供一些其他功能模块。
(1)锁表功能模块
策划同时使用编辑器编辑策划表时,可能会造成冲突,锁表功能模块可以锁住相关的表,来避免冲突。锁表功能需要有配套的服务端,不过也可以做成通用模块。
(2)热更功能模块
热更是指将编辑后的数据实时更新到游戏中显示出来,方便看到编辑的效果。热更功能需要补充游戏相关的一些入口,通用模块中可以提供一些和游戏客户端、服务器通信的基础模块,作为热更功能的基础。
<四>根据本发明的具体实施方式的数据处理流程
附图12示出了根据本发明的具体实施方式的数据处理流程图。根据附图12,本实施方式所述的数据处理流程详细描述如下:
如附图12中数字“1”标注的框图内容所示,通过数据读取配置,将基础数据加载到游戏编辑器的内存中。其中,数据读取配置的内容包括:基础数据的存放位置,基础数据的实例生成方法、编辑方法等信息。
如附图12中数字“2”标注的框图内容所示,通过数据映射配置,将由基础数据加载到内存中的内存数据,转换成游戏客户端的入参和编辑器窗口中表现的数据,并发送至所述游戏客户端和编辑器窗口。此外,游戏客户端可以自动生成一些新数据(如NPC位置、朝向信息),编辑器窗口中也可以收到填写一些新数据,这些新数据又可以通过数据映射配置,返回到游戏编辑器的内存中。
如附图12中数字“3”标注的框图内容所示,在“2”中返回到游戏编辑器内存的数据可以通过数据映射配置,转换为游戏程序最终需要的数据,即生成数据。
这样,通过配置文件在中间进行映射,我们在操作数据时就不用关心数据里的各种字段,这样就可以实现数据、游戏客户端和游戏编辑器窗口的分离。基础数据修改后,只需要修改数据读取配置和数据映射配置,就可保证编辑器的数据和外观都能得到同步。对于数据宏观结构(比如表的组织方式)相同的项目完全不用更改任何代码,就可以复用一套编辑器,实现不同的项目,共用一套编辑器,只是拥有不同的配置文件。
此外,关于上述数据流程,需要注意的是:
(1)所述生成数据的来源主要有两个方面:一个方面是直接在编辑器窗口中进行编辑得到的,相当于从无到有;另一个方面是通过将基础数据传入游戏客户端,然后游戏客户端会返回一些新的数据,这样就会产生新的生成数据。多数情况下新的生成数据是由上面的两个共同得到的,但有时也包含基础数据中的部分数据,例如我们本来有一个怪物的基础数据,这个数据里包含了怪物的模型、立绘、AI等基础数据,通过将这些数据传入游戏客户端,我们可以看到和编辑这个怪物的位置和朝向,然后就得到了这个怪物的位置和朝向信息,接下来我们在编辑界面编辑了这个怪物的数据,得到了这个指定怪物的名称、血量,这样我们就得到了副本中一个完整的怪物的数据,导出后就可以在副本中直接读取生成了。
(2)数据读取配置用于记录现有的基础资源的一些信息,如读取记录基本怪物单元的表格的位置,生成怪物的方法,该怪物对应图片的位置等信息。通过数据读取配置,我们可以获取到完整的基础数据,并知道使用什么方法来操作这些怪物。
(3)数据映射配置用于进行变量之间的映射,为了防止在代码中硬编码一些变量。比如生成一个怪物,我们在基础表中定义的数据是{monster_id,model_id,monster_name},但是在游戏客户端中生成怪物,需要传入的是{model_ID,monster_Name},其实model_id就是model_ID,但是程序本身并不能知道,所以就需要我们定义一个数据映射配置,将model_id映射为model_ID。从而游戏客户端取数据时,只用将基础数据通过数据映射配置来映射一下,就可以直接传入相应的生成怪物的方法中,得到相应的表现了。而生成怪物的方法,又被定义在数据读取配置中,这样就完全不需要程序知道自己取的是什么,只需要传进去就可以正确的执行了。
综上所述,通过使用本发明提出的通用游戏编辑器框架,可以实现以下技术效果:
(1)使用同一引擎开发的不同游戏项目,基本只需要修改一些配置参数,就可以实现相同功能游戏编辑器的复用。例如副本编辑器,只要修改生成窗口的数据,就可以适用于不同的项目,而生成数据一般都是通过配置填写来实现的。
(2)不同引擎开发的游戏项目,实现游戏编辑器,只需要实现一次游戏客户端模块,其他部分仍旧可以复用,实现快速开发。而且,可以通过本发明中提及的从初期的游戏代码中剥离出客端接口方式可以快速实现新的编辑器游戏客户端。
(3)本框架可以不断被丰富,基础模块的支持使得游戏编辑器的开发会越来越方便快捷。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (4)

1.一种数据处理方法,其特征在于,包括:
将数据加载到内存中;
将所述内存中的所述数据转换为游戏编辑器的游戏客户端模块和/或编辑器窗口模块能够处理的数据,并将转换后的数据发送至所述游戏客户端模块和/或所述编辑器窗口模块;以及将来自所述游戏客户端模块的数据和/或来自所述编辑器窗口模块的数据转换成新的数据,并将所述新的数据存储到所述内存中,其中,所述游戏客户端模块用于表现游戏内容,所述编辑器窗口模块用于形成所述游戏编辑器的用户界面。
2.权利要求1所述的数据处理方法,其特征在于,所述将所述数据加载到内存中包括:根据所述数据的存放位置、实例生成方法和/或编辑方法将所述数据加载到内存中。
3.权利要求2所述的数据处理方法,其特征在于,所述新的数据为游戏所需的数据。
4. 一种数据处理装置,其特征在于,包括:
数据读取配置,用于将数据加载到内存中;以及
数据映射配置,用于将所述内存中的所述数据转换为游戏编辑器的游戏客户端模块和/或编辑器窗口模块能够处理的数据,并将转换后的数据发送至所述游戏客户端模块和/或所述编辑器窗口模块;以及将来自所述游戏客户端模块的数据和/或来自所述编辑器窗口模块的数据转换成新的数据,并将所述新的数据存储到所述内存中,其中,所述游戏客户端模块用于表现游戏内容,所述编辑器窗口模块用于形成所述游戏编辑器的用户界面。
CN201910482046.4A 2016-08-17 2016-08-17 用于生成游戏编辑器和插件以及数据处理的方法及装置 Active CN110201396B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910482046.4A CN110201396B (zh) 2016-08-17 2016-08-17 用于生成游戏编辑器和插件以及数据处理的方法及装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610686767.3A CN106293761B (zh) 2016-08-17 2016-08-17 用于生成游戏编辑器和插件的方法及装置
CN201910482046.4A CN110201396B (zh) 2016-08-17 2016-08-17 用于生成游戏编辑器和插件以及数据处理的方法及装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201610686767.3A Division CN106293761B (zh) 2016-08-17 2016-08-17 用于生成游戏编辑器和插件的方法及装置

Publications (2)

Publication Number Publication Date
CN110201396A CN110201396A (zh) 2019-09-06
CN110201396B true CN110201396B (zh) 2022-06-21

Family

ID=57660408

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610686767.3A Active CN106293761B (zh) 2016-08-17 2016-08-17 用于生成游戏编辑器和插件的方法及装置
CN201910482046.4A Active CN110201396B (zh) 2016-08-17 2016-08-17 用于生成游戏编辑器和插件以及数据处理的方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201610686767.3A Active CN106293761B (zh) 2016-08-17 2016-08-17 用于生成游戏编辑器和插件的方法及装置

Country Status (1)

Country Link
CN (2) CN106293761B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108043029B (zh) * 2017-12-22 2021-04-27 网易(杭州)网络有限公司 逻辑控制方法及装置
CN108733378B (zh) * 2018-05-22 2021-10-08 武汉微派网络科技有限公司 支持多个原生Cocos游戏接入到安卓应用平台的方法
CN109513212B (zh) * 2018-11-19 2020-06-12 苏州好玩友网络科技有限公司 一种2d手机游戏ui、剧情编辑方法及系统
CN112416329A (zh) * 2019-08-23 2021-02-26 上海幻电信息科技有限公司 一种数据编辑方法、装置和存储介质
CN110465097B (zh) * 2019-09-09 2023-06-27 网易(杭州)网络有限公司 游戏中的角色立绘显示方法及装置、电子设备、存储介质
CN112100531B (zh) * 2020-09-22 2024-05-28 深圳市火星人互动娱乐有限公司 一种基于CocosCreator地图编辑与生成方法
CN112587929B (zh) * 2020-12-22 2022-09-09 上海完美时空软件有限公司 游戏副本的生成方法、装置及设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001009155A (ja) * 1999-06-30 2001-01-16 Namco Ltd ゲームシステム及び情報記憶媒体
CN1801084A (zh) * 2005-01-05 2006-07-12 英业达股份有限公司 游戏开发系统以及方法
CN1896985A (zh) * 2005-07-15 2007-01-17 英业达股份有限公司 计算机游戏开发系统以及方法
CN1949233A (zh) * 2005-10-10 2007-04-18 英业达股份有限公司 开放式网络游戏系统以及方法
CN101335916A (zh) * 2008-07-22 2008-12-31 中山大学 一种通用的手机角色扮演(rpg)网络游戏引擎
CN101699452A (zh) * 2009-03-11 2010-04-28 深圳市伯仲通信技术有限公司 一种游戏引擎
CN102402436A (zh) * 2011-12-29 2012-04-04 苏州新炎龙网络科技有限公司 一种网页游戏引擎及应用其开发网页游戏的方法
CN105005495A (zh) * 2015-06-23 2015-10-28 珠海金山网络游戏科技有限公司 一种游戏引擎
CN105117218A (zh) * 2015-08-12 2015-12-02 北京触控科技有限公司 一种跨平台游戏的渲染方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016176A1 (en) * 2006-07-13 2008-01-17 Ofir Leitner System for development of games for mobile devices and distribution thereof
CN103577172A (zh) * 2012-07-30 2014-02-12 无锡梵天信息技术股份有限公司 一种图形处理引擎系统
CN104267963A (zh) * 2014-10-10 2015-01-07 重庆邮电大学 一种跨平台角色扮演网络游戏客户端引擎及建立方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001009155A (ja) * 1999-06-30 2001-01-16 Namco Ltd ゲームシステム及び情報記憶媒体
CN1801084A (zh) * 2005-01-05 2006-07-12 英业达股份有限公司 游戏开发系统以及方法
CN1896985A (zh) * 2005-07-15 2007-01-17 英业达股份有限公司 计算机游戏开发系统以及方法
CN1949233A (zh) * 2005-10-10 2007-04-18 英业达股份有限公司 开放式网络游戏系统以及方法
CN101335916A (zh) * 2008-07-22 2008-12-31 中山大学 一种通用的手机角色扮演(rpg)网络游戏引擎
CN101699452A (zh) * 2009-03-11 2010-04-28 深圳市伯仲通信技术有限公司 一种游戏引擎
CN102402436A (zh) * 2011-12-29 2012-04-04 苏州新炎龙网络科技有限公司 一种网页游戏引擎及应用其开发网页游戏的方法
CN105005495A (zh) * 2015-06-23 2015-10-28 珠海金山网络游戏科技有限公司 一种游戏引擎
CN105117218A (zh) * 2015-08-12 2015-12-02 北京触控科技有限公司 一种跨平台游戏的渲染方法和系统

Also Published As

Publication number Publication date
CN106293761B (zh) 2020-02-07
CN110201396A (zh) 2019-09-06
CN106293761A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
CN110201396B (zh) 用于生成游戏编辑器和插件以及数据处理的方法及装置
Behr et al. A scalable architecture for the HTML5/X3D integration model X3DOM
Lutz Programming Python: powerful object-oriented programming
Tang et al. A platform independent game technology model for model driven serious games development
CN108897567A (zh) 基于Unity的软件加载文件的方法、装置、设备及存储介质
US8954862B1 (en) System and method for collaborative viewing of a four dimensional model requiring decision by the collaborators
CN110297633A (zh) 代码转换方法、装置、设备和存储介质
Preda et al. Avatar interoperability and control in virtual Worlds
CN117234513B (zh) 页面的数据文件生成方法、装置、电子设备、介质及产品
CN114130017A (zh) 基于游戏引擎的界面部署方法、装置、设备及存储介质
CN104102536B (zh) 一种数据的展示方法和系统
CN107305492A (zh) Gse2D游戏引擎
CN110286893A (zh) 服务生成方法、装置、设备、系统和存储介质
CN112755534B (zh) 一种数据处理方法、装置和存储介质
Ponder Component-based methodology and development framework for virtual and augmented reality systems
US20240009560A1 (en) 3D Image Implementation
CN113687815B (zh) 容器内多组件动效处理方法及装置、电子设备、存储介质
Sung et al. Build Your Own 2D Game Engine and Create Great Web Games.
Fei et al. AVATAR: Autonomous visual authoring of tangible augmented reality
Van der Spuy Advanced Game Design with HTML5 and JavaScript
Barianos Thimel-Content: an inclusive content creation, game customization and gameplay personalization tool.
Bitter Interactive Storytelling in Immersive Augmented Reality: Supporting the Authoring Process with Software Tools
Magnusson Game mechanics engine
CN116328296A (zh) 界面视图的生成方法、装置、存储介质及电子装置
CN117618920A (zh) 基于状态图的剧情生成方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant