CN106850650B - 用于游戏客户端访问数据的方法及客户端游戏系统 - Google Patents
用于游戏客户端访问数据的方法及客户端游戏系统 Download PDFInfo
- Publication number
- CN106850650B CN106850650B CN201710093658.5A CN201710093658A CN106850650B CN 106850650 B CN106850650 B CN 106850650B CN 201710093658 A CN201710093658 A CN 201710093658A CN 106850650 B CN106850650 B CN 106850650B
- Authority
- CN
- China
- Prior art keywords
- data
- game
- data file
- file
- binary data
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明的实施方式提供了一种用于游戏客户端访问数据的方法,所述游戏客户端包括脚本层和游戏引擎,所述方法包括:所述游戏引擎将二进制数据文件加载到内存,所述二进制数据文件包含所述脚本层使用的多个数据;所述脚本层调用预定接口以获取相应数据,所述预定接口实现为调用所述游戏引擎;所述游戏引擎访问加载到内存的所述二进制数据文件并返回所述相应数据。这样,可以优化客户端内存的使用,增强游戏效果,改善客户体验。
Description
技术领域
本发明的实施方式涉及通信与计算机技术领域,更具体地,本发明的实施方式涉及用于游戏客户端访问数据的方法及客户端游戏系统。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
现在的许多游戏应用,都包括游戏引擎和脚本层。游戏引擎是游戏应用的基础和核心组件,主要进行游戏中的物理演算、碰撞运算、图像渲染、输入控制、音频视频输出等功能。通常,游戏引擎可包括渲染引擎、物理引擎、碰撞检测引擎、音效引擎、动画引擎、AI引擎等。游戏引擎使得游戏应用中相对稳定的代码独立出来,并可在多款游戏中重复使用。
脚本层一般用于游戏的逻辑控制等功能。通过采用脚本层,可以较容易地基于相同的游戏引擎开发出不同的游戏作品。在需要修改游戏中的任务、场景或剧情时,可以通过修改脚本层来实现,而不必重新编译游戏应用。脚本层使得游戏内容与游戏引擎分离,促成了游戏开发的清晰分工,游戏编程人员可负责游戏引擎等核心技术工作,而游戏策划和设计人员可专注游戏本身的逻辑、场景与策划。
脚本层会用到大量的数据,例如与场景、人物、道具、对话等相关的数据。现有的方式一般是将包含这些数据的表格也存储在脚本层中。
发明内容
但是,脚本层的语言结构一般非常占用内存,在数据量很大时,会导致游戏反应变慢,效果变差。
为此,需要一种改进的用于游戏客户端应用访问数据的方法,以减少或消除大量数据占据内存导致的游戏反应变慢,使用户具有更好的体验。
在本上下文中,本发明的实施方式期望提供一种改进的用于游戏客户端访问数据的方法及客户端游戏系统。
在本发明实施方式的第一方面中,提供一种用于游戏客户端访问数据的方法,所述游戏客户端包括脚本层和游戏引擎,所述方法包括:所述游戏引擎将二进制数据文件加载到内存,所述二进制数据文件包含所述脚本层使用的多个数据;所述脚本层调用预定接口以获取相应数据,所述预定接口实现为调用所述游戏引擎;所述游戏引擎访问加载到内存的所述二进制数据文件并返回所述相应数据。
在一些实施例中,基于前述方案,所述二进制数据文件为压缩格式的二进制数据文件。
在一些实施例中,基于前述方案,所述二进制数据文件为符合c或c++语言数据格式的二进制数据文件。
在一些实施例中,基于前述方案,所述二进制数据文件包括元数据项和数据项。
在一些实施例中,基于前述方案,所述元数据项包括多个数据表的定义及每个数据表的元数据结构定义,所述数据项包括对应于各个数据表的数据部分。
在一些实施例中,基于前述方案,所述游戏引擎访问加载到内存的所述二进制数据文件并返回所述相应数据包括:获取数据表的偏移;获取数据的偏移;读取相应数据。
在一些实施例中,前述方案还包括:所述脚本层或所述游戏引擎预先将预定数据表文件生成为所述二进制数据文件。
在一些实施例中,基于前述方案,所述脚本层包括python语言脚本或LUA语言脚本。
在本发明实施方式的第二方面中,提供一种客户端游戏系统,包括脚本层和游戏引擎,所述脚本层包括数据调用模块,所述游戏引擎包括数据加载模块和数据访问模块,其中:所述数据加载模块用于将二进制数据文件加载到内存,所述二进制数据文件包含所述脚本层使用的多个数据;所述数据调用模块用于调用预定接口以获取相应数据,所述预定接口实现为调用所述游戏引擎;所述数据访问模块用于访问加载到内存的所述二进制数据文件并返回所述相应数据。
在一些实施例中,基于前述方案,所述二进制数据文件为压缩格式的二进制数据文件。
在一些实施例中,基于前述方案,所述二进制数据文件为符合c或c++语言数据格式的二进制数据文件。
在一些实施例中,基于前述方案,所述二进制数据文件包括元数据项和数据项。
在一些实施例中,基于前述方案,所述元数据项包括多个数据表的定义及每个数据表的元数据结构定义,所述数据项包括对应于各个数据表的数据部分。
在一些实施例中,基于前述方案,所述数据访问模块配置为:获取数据表的偏移;获取相应数据的偏移;读取并返回所述相应数据。
在一些实施例中,基于前述方案,客户端游戏系统还包括:二进制数据文件生成模块,位于所述脚本层或所述游戏引擎,用于预先将预定数据表文件生成为所述二进制数据文件。
在一些实施例中,基于前述方案,所述脚本层包括python语言脚本或LUA语言脚本。
在本发明实施方式的第三方面中,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方案中游戏客户端访问数据的方法。
在本发明实施方式的第四方面中,提供一种游戏设备,包括:处理器;存储器,所述存储器存储有通过所述处理器执行的指令,其中,当所述指令被所述处理器执行时,使得所述处理器执行前述方案中游戏客户端访问数据的方法。
根据本发明实施方式的用于游戏客户端访问数据的方法及客户端游戏系统,通过游戏引擎访问二进制数据文件,可以优化客户端内存的使用,增强游戏效果,改善客户体验。根据一些实施例,通过将数据表转换为包括元数据项和数据项的文件格式,可进一步减少内存占用。另外,还可采用压缩格式的数据文件,使得内存占用进一步大大减少。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性示出根据本发明实施方式的用于游戏客户端访问数据的方法;
图2示意性示出根据本发明一些示例性实施例的二进制数据文件格式;
图3示意性示出根据本发明一些示例性实施例的游戏引擎访问数据文件的方法;
图4示意性示出根据本发明实施方式的客户端游戏系统的框图;
图5示意性示出根据本发明实施方式的游戏设备的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种用于游戏客户端访问数据的方法和客户端游戏系统。
下面对本申请中涉及的一些术语和概念作一说明。
客户端:客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括如万维网使用的网页浏览器、收发电子邮件时的电子邮件客户端、即时通讯的客户端软件、游戏客户端软件等。对于这一类应用程序,根据情况需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。
脚本语言:脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,在被调用时进行解释或编译。
C/C++语言:C/C++语言是一门通用计算机编程语言,应用广泛。C/C++语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
游戏引擎:游戏引擎是游戏应用的基础和核心组件,主要进行游戏中的物理演算、碰撞运算、图像渲染、输入控制、音频视频输出等功能。通常,游戏引擎可包括渲染引擎、物理引擎、碰撞检测引擎、音效引擎、动画引擎、AI引擎等。游戏引擎使得游戏应用中相对稳定的代码独立出来,并可在多款游戏中重复使用。游戏引擎一般采用C/C++语言开发。
游戏脚本层:游戏脚本层一般用于游戏的逻辑控制等功能。通过采用脚本层,可以较容易地基于相同的游戏引擎开发出不同的游戏作品。脚本层使得游戏内容与游戏引擎分离,促成了游戏开发的清晰分工,游戏编程人员可负责游戏引擎等核心技术工作,而游戏策划和设计人员可专注游戏本身的逻辑、场景与策划。脚本层一般可采用通用或专属脚本语言进行开发。
二进制文件与文本文件:文本文件与二进制文件的区别并不是物理上的,而是逻辑上的,这两者在编码层次上有差异。二进制文件是基于值编码的文件,可以根据具体应用,指定某个值是的含义(这样一个过程,可以看作是自定义编码)。文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等。或者可简单地认为,如果一个文件专门用于存储文本字符的数据,没有包含字符以外的其他数据,就称之为文本文件,除此之外的文件就是二进制文件。
在本文中,要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,目前的游戏客户端的数据表格存在脚本层中,通过脚本层访问数据表格,导致游戏反应变慢,效果变差,影响用户体验。
为此,本发明的实施方式提供了用于游戏客户端访问数据的方法和客户端游戏系统,通过游戏引擎访问二进制数据文件。这样,可以优化客户端内存使用,避免游戏反应变慢,提升用户体验。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
在游戏客户端产品中,脚本层会使用到类似下面这样格式的各种数据表格:
data={
{'modelId':30001,'name':'道具1','icon':70001,‘modelScale’:1.0,...}
{'modelId':30002,'name':'道具2','icon':70002,‘modelScale’:1.0,...}
....
}
数据表格里可能有几十万到上百万行数据,每行数据可能含有几十个key(键):value(值)这样的键值对。脚本层需要把所有的信息都存储起来。
由于脚本语言的特性,脚本层用来存储数据的数据结构本身比较大。例如,对于python来说,一个整数需要12个字节的内存来表示,而同样的数据c语言只需要4个字节或者更小的内存就能表达。字符串等数据也类似。这导致脚本层数据占用内存非常大。
此外,对于每个数据表格来说,虽然可能含有几十个key:value这样的键值对,但是key的数量是固定的,每一行的数据都包含modelId、name、icon、modelScale这样的数据,不同的只是其中储存的值。现在每行数据都包含了modelId,name,icon等这些字符串,需要消耗很多内存。
本发明的技术方案提供一种方式,将游戏策划人员提供的文本式表格文件生成为二进制数据文件。游戏引擎将二进制数据文件加载到内存,脚本层通过游戏引擎访问数据,而不是脚本层直接访问包含大量数据的文本式数据表格。
示例性方法
下面参考附图来描述根据本发明示例性实施方式的用于游戏客户端访问数据的方法。要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图1示意性示出根据本发明实施方式的用于游戏客户端访问数据的方法。游戏客户端可以基于iOS系统、安卓系统或Windows系统,本发明对此没有限制。游戏可以是各种类型,例如角色扮演类游戏、动作类游戏、冒险类游戏、策略类游戏等。根据本发明实施方式的游戏客户端包括脚本层和游戏引擎。
如图1所示,在S110,游戏引擎将二进制数据文件加载到内存。所述二进制数据文件包含脚本层使用的多个数据。这些数据可包括场景、人物、道具、对话等相关数据。数据的数量通常很大,根据游戏不同,数据的数量可从几十万、几百万到上千万个。
根据具体情况,二进制数据文件可以来自软件安装包或升级包,也可以是在软件配置完成后生成、或在软件启动时生成。
根据本发明实施方式,数据存储为二进制数据文件,并通过游戏引擎加载到内存,这可优化客户端内存的使用,增强游戏效果,改善客户体验。
根据一些实施例,二进制数据文件可包括元数据项和数据项。例如,元数据项可包括多个数据表的定义及每个数据表的元数据结构定义。数据项可包括对应于各个数据表的数据部分。
以前述表格为例,对于一张表的每行数据来说,key(键)的定义是固定的,那么对于这张表存储一遍key的定义即可,数据可以按顺序存放。因此,可先声明modelId是存在第一个位置,name存在第二个位置,后面的key同样处理即可。改进后的存储方式是下面的样子,可以大大节省内存:
30001,道具1,70001,1.0
30002,道具2,70002,1.0。
根据一些实施例,还可采用压缩格式的二进制数据文件,使得内存占用进一步大大减少。可以采用各种适合的压缩格式,本发明对此没有限制。
根据一些实施例,二进制数据文件为符合c或c++语言数据格式的二进制数据文件。在减少内存占用的同时,也利于C/C++语言的游戏引擎进行数据读取。
在S120,脚本层调用预定接口以获取相应数据。所述预定接口实现为调用游戏引擎。例如,在游戏启动后,脚本层需要场景、人物、道具、对话等相关数据以控制游戏画面和进度。为了获取这些数据,脚本层可调用相应的预定接口,这些预定接口实现为调用游戏引擎,从而可通过游戏引擎获取这些数据。
例如,以物品表item_data为例,在已有的脚本层,通过item_data.data.get(icon)这样的接口获取具体物品信息。根据本发明实施例,可将item_data.data替换成新开发的替代类ByteData,然后重写ByteData的get方法来调用游戏引擎提供的数据访问功能。
根据一些实施例,脚本层包括python语言脚本。根据另一些实施例,脚本层包括LUA语言脚本。本发明对脚本层的语言没有限制。根据实际情况,可以采用任何常用或专属的脚本语言。
在S130,游戏引擎访问加载到内存的二进制数据文件并返回相应数据。游戏引擎收到调用请求以后,可访问前述加载到内存的二进制数据文件,并返回相应数据,参见后面的示例。
图2示意性示出根据本发明示例性实施例的二进制数据文件格式。本领域技术人员易于理解,图2的数据文件格式仅是示例性的,而不是对本发明的限制。基于本发明的教导,本领域技术人员可以选择或设计不同的文件格式。
如图2所示,二进制数据文件包括元数据项和数据项。元数据项可包括多个数据表的定义及每个数据表的元数据结构定义。数据项可包括对应于各个数据表的数据部分。参见图2,元数据项可包括210、220、230和240。数据项可包括250。
参见图2,根据示例性实施例,附图标记210表示二进制数据文件里会保存3张表。易于理解,根据实际情况,表的数量可以不同。
附图标记220指示的部分示出了前述3张表的名称。例如,“1,9,item_data”中,1表示数据表的键值是一个整数。9表示表名有九个字母,这里只要读九个字母就可以读取到“item_data”(物品表)这个表名。
附图标记230表示物品表item_data有五个字段。
附图标记240处分别是物品表item_data的元数据结构定义:name(名字)、icon(图标编号)、modelScale(模型缩放)、dropItemSound(掉落声音)、itemFlags(物品标记)。这里分别存储字段的名字长度、类型、以及顺序。例如,“4,3,0,name”中的4表示字段名字name的长度为4,3表示字段类型,0表示顺序。这里的顺序用来读取真正数据的偏移。根据一些实施例,字段类型可包括整型(1)、浮点型(2)、字符串型(3)、E(字符串)型(4)等。
附图标记250表示数据项,该处存储真正的数据。示出的例子中有15535条记录。
根据一些实施例,在游戏引擎访问加载到内存的二进制数据文件以读取相应数据时,首先获取数据表的偏移,查到数据表,例如前述物品表item_data。然后,根据元数据结构定义,获取数据的偏移,从而可进一步读取相应数据。
图3示意性示出根据本发明一些示例性实施例的游戏引擎访问数据文件的方法。
根据一些实施例,游戏所需数据存储在预定数据表文件中。参见图3,在S305,预先将预定数据表文件生成为前述二进制数据文件。这可以通过脚本层或游戏引擎完成,本发明对此不做限制。如果通过脚本层完成,则在需求变动时可具有更大的灵活性。如果通过游戏引擎完成,可在效率上比较有优势。
根据一些实施例,游戏启动后,python或其他脚本会读取数据表文件,然后按照前述的特定格式写入到磁盘中。根据另一些实施例,游戏启动后,游戏引擎会读取数据表文件,然后按照前述的特定格式写入到磁盘中。
接着,在S310、S320和S330的处理与参照图1描述的类似,不再赘述。
示例性系统
在介绍了本发明示例性实施方式的方法之后,接下来,参考图4对本发明示例性实施方式的客户端游戏系统进行描述。
图4示意性示出根据本发明实施方式的客户端游戏系统的框图。系统400可实现前面描述的相应方法。下面描述系统400,与前述方法对应的部分可参看前面的描述。
如图4所示,系统400包括脚本层410和游戏引擎420。脚本层410包括数据调用模块4102。游戏引擎420包括数据加载模块4202和数据访问模块4204。
数据加载模块4202用于将二进制数据文件加载到内存。所述二进制数据文件包含脚本层410使用的多个数据。
如前所述,二进制数据文件可包括元数据项和数据项。例如,元数据项可包括多个数据表的定义及每个数据表的元数据结构定义。数据项可包括对应于各个数据表的数据部分。二进制数据文件可以来自软件安装包或升级包,也可以是在软件配置完成后生成、或在软件启动时生成。
根据一些实施例,还可采用压缩格式的二进制数据文件,使得内存占用进一步大大减少。可以采用各种适合的压缩格式,本发明对此没有限制。
根据一些实施例,二进制数据文件为符合c或c++语言数据格式的二进制数据文件。在减少内存占用的同时,也利于C/C++语言的游戏引擎进行数据读取。
数据调用模块4102用于调用预定接口以获取相应数据。所述预定接口可实现为调用所述游戏引擎。
如前所述,脚本层可包括python语言脚本、LUA语言脚本或者自定义语言脚本。
数据访问模块4204用于访问加载到内存的所述二进制数据文件并返回所述相应数据给脚本层410。
根据一些实施例,数据访问模块4204配置为获取数据表的偏移、获取数据的偏移以及读取并返回相应数据。
根据一些实施例,系统400还可包括二进制数据文件生成模块,用于预先将预定数据表文件生成为所述二进制数据文件。参照前面的描述,该模块可位于所述脚本层或所述游戏引擎。
示例性设备
在介绍了本发明示例性实施方式的方法和系统之后,接下来,介绍根据本发明的另一示例性实施方式的游戏设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的游戏设备可以至少包括至少一个处理器、以及至少一个存储器。其中,所述存储器存储有指令,当所述指令被所述处理器执行时,使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于显示提示信息的方法中的步骤。例如,所述处理器可以执行如图1中所示的步骤S210:游戏引擎将二进制数据文件加载到内存,所述二进制数据文件包含所述脚本层使用的多个数据;步骤S220,脚本层调用预定接口以获取相应数据,所述预定接口实现为调用所述游戏引擎;及S230,游戏引擎访问加载到内存的所述二进制数据文件并返回所述相应数据。
下面参照图5来描述根据本发明的实施方式的游戏设备500。图5显示的设备500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,设备500以通用计算设备的形式表现。设备500的组件可以包括但不限于:上述至少一个处理器16、上述至少一个存储器28、连接不同系统组件(包括存储器28和处理器16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线、或者网络总线。
存储器28可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32,还可以进一步包括只读存储器(ROM)34。
存储器28还可以包括具有一组(至少一个)程序模块42的程序/实用工具40,这样的程序模块42包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
设备500也可以与一个或多个外部设备14(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个能与设备500交互的设备通信,和/或与能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备500还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备500的其它模块通信。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算设备上运行时,所述程序代码用于使所述计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于显示提示信息的方法的步骤。例如,所述计算设备可以执行如图1中所示的步骤S210:游戏引擎将二进制数据文件加载到内存,所述二进制数据文件包含所述脚本层使用的多个数据;步骤S220,脚本层调用预定接口以获取相应数据,所述预定接口实现为调用所述游戏引擎;及S230,游戏引擎访问加载到内存的所述二进制数据文件并返回所述相应数据。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。另外,随着技术的发展,可读存储介质也应进行相应解读。
应当注意,尽管在上文详细描述中提及了用于显示提示信息的系统和设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者指示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种用于游戏客户端访问数据的方法,所述游戏客户端包括脚本层和游戏引擎,所述方法包括:
所述脚本层预先将预定数据表文件生成为二进制数据文件,所述二进制数据文件包括元数据项和数据项,所述元数据项包括多个数据表的定义及每个数据表的元数据结构定义,所述数据项包括对应于各个数据表的数据部分;
所述游戏引擎将所述二进制数据文件加载到内存,所述二进制数据文件包含所述脚本层使用的多个数据;
所述脚本层调用预定接口调用所述游戏引擎以获取相应数据;
所述游戏引擎访问加载到内存的所述二进制数据文件并返回所述相应数据,其中包括:
获取数据表的偏移;
获取数据的偏移;
读取相应数据。
2.如权利要求1所述的方法,其中所述二进制数据文件为压缩格式的二进制数据文件。
3.如权利要求1所述的方法,其中所述二进制数据文件为符合c或c++语言数据格式的二进制数据文件。
4.如权利要求1所述的方法,其中所述脚本层包括python语言脚本或LUA语言脚本。
5.一种客户端游戏系统,包括脚本层和游戏引擎,所述脚本层包括二进制数据文件生成模块和数据调用模块,所述游戏引擎包括数据加载模块和数据访问模块,其中:
所述二进制数据文件生成模块用于预先将预定数据表文件生成为二进制数据文件,所述二进制数据文件包括元数据项和数据项,所述元数据项包括多个数据表的定义及每个数据表的元数据结构定义,所述数据项包括对应于各个数据表的数据部分;
所述数据加载模块用于将所述二进制数据文件加载到内存,所述二进制数据文件包含所述脚本层使用的多个数据;
所述数据调用模块用于调用预定接口调用所述游戏引擎以获取相应数据;
所述数据访问模块用于访问加载到内存的所述二进制数据文件并返回所述相应数据,所述数据访问模块配置为:
获取数据表的偏移;
获取数据的偏移;
读取相应数据。
6.如权利要求5所述的客户端游戏系统,其中所述二进制数据文件为压缩格式的二进制数据文件。
7.如权利要求5所述的客户端游戏系统,其中所述二进制数据文件为符合c或c++语言数据格式的二进制数据文件。
8.如权利要求5所述的客户端游戏系统,其中所述脚本层包括python语言脚本或LUA语言脚本。
9.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-4中任一项所述的游戏客户端访问数据的方法。
10.一种游戏设备,包括:
处理器;
存储器,所述存储器存储有通过所述处理器执行的指令,
其中,当所述指令被所述处理器执行时,使得所述处理器执行如权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710093658.5A CN106850650B (zh) | 2017-02-21 | 2017-02-21 | 用于游戏客户端访问数据的方法及客户端游戏系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710093658.5A CN106850650B (zh) | 2017-02-21 | 2017-02-21 | 用于游戏客户端访问数据的方法及客户端游戏系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106850650A CN106850650A (zh) | 2017-06-13 |
CN106850650B true CN106850650B (zh) | 2021-06-04 |
Family
ID=59133187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710093658.5A Active CN106850650B (zh) | 2017-02-21 | 2017-02-21 | 用于游戏客户端访问数据的方法及客户端游戏系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106850650B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108654090B (zh) * | 2018-05-17 | 2022-03-11 | 北京奇虎科技有限公司 | 操作系统与游戏应用交互的方法及装置 |
CN109529353A (zh) * | 2018-11-21 | 2019-03-29 | 北京像素软件科技股份有限公司 | 基于角色扮演游戏的任务多剧情执行方法及装置 |
CN109871276B (zh) * | 2019-01-14 | 2021-02-02 | 珠海金山网络游戏科技有限公司 | 一种基于Lua获取手机应用内存的方法及装置 |
CN110694269B (zh) * | 2019-09-27 | 2022-12-16 | 网易(杭州)网络有限公司 | 一种脚本文件的加载方法、装置、电子设备及存储介质 |
CN110681153B (zh) * | 2019-09-29 | 2022-03-18 | 腾讯科技(深圳)有限公司 | 游戏存档管理系统、方法、计算机设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317578A (zh) * | 2014-10-13 | 2015-01-28 | 无锡梵天信息技术股份有限公司 | 基于引擎Lua脚本应用和引擎与Lua脚本相互调用方法及装置 |
CN104383684A (zh) * | 2014-11-21 | 2015-03-04 | 珠海金山网络游戏科技有限公司 | 一种通用的游戏状态控制系统和方法 |
CN105404539A (zh) * | 2015-12-30 | 2016-03-16 | 网易(杭州)网络有限公司 | 客户端游戏向网页游戏移植的方法、网页游戏系统及终端 |
CN106325866A (zh) * | 2016-08-22 | 2017-01-11 | 网易(杭州)网络有限公司 | 跨引擎调用方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7667705B2 (en) * | 2001-05-15 | 2010-02-23 | Nintendo Of America Inc. | System and method for controlling animation by tagging objects within a game environment |
US8850414B2 (en) * | 2007-02-02 | 2014-09-30 | Microsoft Corporation | Direct access of language metadata |
-
2017
- 2017-02-21 CN CN201710093658.5A patent/CN106850650B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317578A (zh) * | 2014-10-13 | 2015-01-28 | 无锡梵天信息技术股份有限公司 | 基于引擎Lua脚本应用和引擎与Lua脚本相互调用方法及装置 |
CN104383684A (zh) * | 2014-11-21 | 2015-03-04 | 珠海金山网络游戏科技有限公司 | 一种通用的游戏状态控制系统和方法 |
CN105404539A (zh) * | 2015-12-30 | 2016-03-16 | 网易(杭州)网络有限公司 | 客户端游戏向网页游戏移植的方法、网页游戏系统及终端 |
CN106325866A (zh) * | 2016-08-22 | 2017-01-11 | 网易(杭州)网络有限公司 | 跨引擎调用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106850650A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106850650B (zh) | 用于游戏客户端访问数据的方法及客户端游戏系统 | |
US6678885B2 (en) | System and method for common code generation | |
CN112130837B (zh) | 一种代码处理方法、装置及存储介质 | |
US20120110444A1 (en) | Help Document Animated Visualization | |
CN110673856B (zh) | 一种数据处理方法、装置及机器可读存储介质 | |
CN112765023A (zh) | 测试用例生成方法、装置 | |
US8407678B2 (en) | Method of array interception using data-flow analysis | |
US20100058305A1 (en) | Automatic Generation of Language Bindings for Libraries Using Data from Compiler Generated Debug Information | |
CN112235132A (zh) | 动态配置服务的方法、装置、介质以及服务器 | |
CN112882690B (zh) | 一种应用开发方法及装置 | |
CN112328241B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN114911541B (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
CN109408057B (zh) | 自动生成代码的方法、装置、介质和计算设备 | |
CN113778564B (zh) | 一种高效执行evm智能合约的方法、设备及储存介质 | |
CN114020278B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN109240660B (zh) | 一种广告数据的接入方法、存储介质、电子设备及系统 | |
CN105354052A (zh) | flash游戏加载方法和装置 | |
CN117971350A (zh) | 小程序运行方法、装置和计算机可读存储介质 | |
CN111971655A (zh) | 用于超文本标记语言图形内容的本机运行时技术 | |
CN113626001B (zh) | 一种基于脚本的api动态编排方法及装置 | |
CN116679912A (zh) | 代码生成方法、装置、设备、存储介质及计算机程序 | |
CN111737964B (zh) | 表格动态处理方法、设备及介质 | |
CN116225450A (zh) | 文本转换方法和装置,计算设备和可读存储介质 | |
CN113805854A (zh) | 基于Linux系统的应用层Hook实现方法、系统、装置及存储介质 | |
CN113282328A (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 |