一种采用包机制的LUA脚本文件管理方法.pdf

上传人:1*** 文档编号:4266912 上传时间:2018-09-13 格式:PDF 页数:8 大小:1,018.50KB
返回 下载 相关 举报
摘要
申请专利号:

CN201210259067.8

申请日:

2012.07.25

公开号:

CN102819579A

公开日:

2012.12.12

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20120725|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

珠海金山网络游戏科技有限公司; 成都西山居互动娱乐科技有限公司

发明人:

王斌

地址:

519000 广东省珠海市吉大景山路莲山巷8号金山软件大厦

优先权:

专利代理机构:

广州嘉权专利商标事务所有限公司 44205

代理人:

谭志强

PDF下载: PDF下载
内容摘要

本发明提出了一种采用包机制的lua脚本文件管理方法,其中每个不同的lua脚本文件对应于一个包,每个包分配有一独有标识(ID),每个包均具有用于保存当前包所包含的包的ID的父(parents)表以及用于保存当前包所引用到的对象的名字的名字表;所述包被进一步设置为包之间相互独立,并通过特定的应用程序界面(API)在包之间建立称为包含(include)的单向联系。相对于现有技术,本发明所提出的lua脚本管理方法具有保证了内存使用效率和执行效率,不同文件里的同名对象不会互相冲突,不同的lua脚本文件可以通过特定机制共享数据进行通讯,在语法层面仍然保持兼容性等优点。

权利要求书

1.一种采用包机制的lua脚本文件管理方法,其特征在于:包括作为程序中对象名字的容器的包,每个不同的lua脚本文件对应于一个包,每个包分配有一独有标识(ID),每个包均具有用于保存当前包所包含的包的ID的父(parents)表以及用于保存当前包所引用到的对象的名字的名字表,所述包被进一步设置为:包之间相互独立,并通过特定的应用程序界面(API)在包之间建立称为包含(include)的单向联系,一个包可以被多个包所包含,也可以包含多个包,但一个包只知道自己包含了那些包,而不知道自己被那些包所包含;所述方法还包括有全局包,其被配置为不需要被包含即自动为其他所有包可见; 所述方法还包括有统一的lua脚本文件名字到包的包表,用于对包进行检索;所述方法还定义了以下脚本文件加载流程步骤:1)根据名字查找需加载的脚本文件是否在包表中,如是则跳到到步骤6),如否则继续下一步;2)新建包,并分配ID加入包表;3)检查是否包含有其它包,如否则跳到步骤6),如是则继续下一步;4)加载被包含的包;5)将被包含的包加入当前包的parents表;6)加载脚本文件。2.根据权利要求1所述的一种lua脚本文件管理方法,其特征在于:包括以下lua脚本文件名字查找步骤:1)先在当前包中的名字表中查找,找到则结束查找,否者继续下一步;2)在全局包中查找,找到则结束查找,否者继续下一步;3)依次对parents表所引用的包的名字表进行查找。3.根据权利要求3所述的一种lua脚本文件管理方法,其特征在于:查找采用先深搜索的遍历规则。

说明书

一种采用包机制的lua脚本文件管理方法

技术领域

本发明涉及一种脚本语言,尤其是一种采用包机制的lua脚本文件管理方法。

背景技术

在网络游戏的服务器端和客户端,通常需要应用到lua脚本技术。这些lua代码,通常分布在大量的lua脚本中,因此这些lua脚本就需要一个机制来进行管理。这个机制需要满足以下需求:

1.能够管理多个lua脚本,这些lua脚本都必须加载在同一个lua虚拟机里以便进行通讯;

2.不同lua脚本之间的既需要能够互相通讯又必须保持一定的独立性。

lua本身提供了一定的机制来管理多个lua脚本文件,但它却有着比较严重的局限性导致不能直接在游戏产品中直接使用:

1.lua自身虽然提供了模块(module)机制,可以保证一个脚本文件加载一次,但不同的文件的同名对象会相互冲突;

2.不同的文件之间没有一个明显的关联关系,不利于程序逻辑关系的组织。

发明内容

为克服以上所述的缺陷,本发明实现了一种lua虚拟机的管理方法,对现有的lua虚拟机进行改造,可以灵活高效地管理大量lua脚本文件。

本发明为此提出了一种采用包机制的lua脚本文件管理方法,其包括作为程序中对象名字的容器的包,每个不同的lua脚本文件对应于一个包,每个包分配有一独有标识(ID),每个包均具有用于保存当前包所包含的包的ID的父(parents)表以及用于保存当前包所引用到的对象的名字的名字表,所述包被进一步设置为:包之间相互独立,并通过特定的应用程序界面(API)在包之间建立称为包含(include)的单向联系,一个包可以被多个包所包含,也可以包含多个包,但一个包只知道自己包含了那些包,而不知道自己被那些包所包含;

所述方法还包括有全局包,其被配置为不需要被包含即自动为其他所有包可见; 

所述方法还包括有统一的lua脚本文件名字到包的包表,用于对包进行检索;

所述方法还定义了以下脚本文件加载流程:

1)查找需加载的脚本文件是否在包表中,如是则跳到到6),如否则继续下一步;

2)新建包,并分配ID加入包表;

3)检查是否包含有其它包,如否则跳到6),如是则继续下一步;

4)加载被包含的包;

5)将被包含的包加入当前包的parents表;

6)加载脚本文件。

作为以上技术方案的一种改进,所述方法还引入了全局包,所述全局包被配置为不需要被其它包所包含即自动为其他所有包可见。

作为以上技术方案的一种改进,所述方法包括以下文件名查找步骤:

1)先在当前包中的名字表中查找,找到则结束查找,否者继续下一步;

2)在全局包中查找,找到则结束查找,否者继续下一步;

3)依次对parents表所引用的包的名字表进行查找。

作为以上技术方案的一种改进,其中查找采用先深搜索的遍历规则。

相对于现有技术,本发明所提出的lua脚本管理方法具有以下优点:

1.lua脚本文件都加载在同一个lua虚拟机里,保证了内存使用效率和执行效率;

2.不同的lua脚本文件相互独立,不同文件里的同名对象不会互相冲突;

3.不同的lua脚本文件可以通过特定机制共享数据进行通讯;

4.虽然对lua虚拟机进行了改造,但是在语法层面仍然保持兼容性。

附图说明

下面结合附图和实施例对本发明进一步说明。

图1为本发明中包的相互关系的示意图;

图2为本发明中包的结构组成的示意图;

图3为本发明中脚本文件加载流程的示意图。

具体实施方式

本发明的技术方案利用一种包机制来管理每个lua脚本文件,每个不同的lua脚本文件对应于一个包,其中包为一种程序中对象名字的容器,而对象则为程序中数据结构或者函数的实体。每个包用一个数字来标识(ID),在一个优选的实施例中,包的标识为一个大于等于0的整数,即从数字1开始递增。

每个包都有自己独立的名字空间,即对象名字和对象的映射表。本发明还包括有一个统一的文件名到包的包表,其是一种key-value类型的映射表,用于脚本文件名到对应的包的映射,在本发明中用于对包进行检索。

在本发明中,包被配置为相互独立,但可以通过特定的应用程序界面(API)在包之间建立单向联系,这个单向联系称为包含(include)。也即是说,include是包与包之间的一种单向联系的称呼,也是建立这种连接所用API名字。具体来讲,如果包B 包含(include)了包A,则包A的对象为包B可见;但不能同时建立反向联系,即如果包B 包含了包A,则不允许包A包含包B。一个包可以被多个包所包含,也可以包含多个包。但一个包只知道自己包含了那些包,而不知道自己被那些包所包含。具体如图1所示。

另外,本发明还包括有一个特殊的全局包,数字标识为0,不需要被其它包所包含即自动为其他所有包可见。

具体来说,每个包中均具有有两种主要数据结构:

1.父(parents)表:一种被包所用到集合表,成员是被当前包所Include的包的ID,在本发明中用于保存当前包所包含的包的ID;

2.名字表:一种key-value类型的映射表,用于对象名字到对象的映射,在本发明中用于保存当前包所引用到的对象的名字。

其具体结构如图2所示。图3显示了根据本发明的脚本文件加载流程,其步骤包括:

1)查找需加载的脚本文件是否在包表中,如是则跳到到6),如否则继续下一步;

2)新建包,并分配ID加入包表;

3)检查是否包含有其它包,如否则跳到6),如是则继续下一步;

4)加载被包含的包;

5)将被包含的包加入当前包的parents表;

6)加载脚本文件。

lua在执行时需要根据名字来获取对应的对象,这个过程被称为名字查找。在本发明中,在本发明中lua脚本文件名字的查找通过以下步骤实现:

1.先在当前包的名字表中查找,找到则结束查找;

2.在全局包中查找,找到则结束查找;

3.依次对parents表所引用的包的名字表进行查找,找到则结束查找。

其中查找的遍历规则为先深搜索,或称为深度优先搜索。

这样,相对于现有技术,本发明所提出的lua脚本管理方法具有以下优点:

1.lua脚本文件都加载在同一个lua虚拟机里,保证了内存使用效率和执行效率;

2.不同的lua脚本文件相互独立,不同文件里的同名对象不会互相冲突;

3.不同的lua脚本文件可以通过特定机制共享数据进行通讯;

4.虽然对lua虚拟机进行了改造,但是在语法层面仍然保持兼容性。

当然,本发明除了上述实施方式之外,其它等同技术方案也应当在其保护范围之内。

一种采用包机制的LUA脚本文件管理方法.pdf_第1页
第1页 / 共8页
一种采用包机制的LUA脚本文件管理方法.pdf_第2页
第2页 / 共8页
一种采用包机制的LUA脚本文件管理方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《一种采用包机制的LUA脚本文件管理方法.pdf》由会员分享,可在线阅读,更多相关《一种采用包机制的LUA脚本文件管理方法.pdf(8页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102819579 A (43)申请公布日 2012.12.12 C N 1 0 2 8 1 9 5 7 9 A *CN102819579A* (21)申请号 201210259067.8 (22)申请日 2012.07.25 G06F 17/30(2006.01) (71)申请人珠海金山网络游戏科技有限公司 地址 519000 广东省珠海市吉大景山路莲山 巷8号金山软件大厦 申请人成都西山居互动娱乐科技有限公司 (72)发明人王斌 (74)专利代理机构广州嘉权专利商标事务所有 限公司 44205 代理人谭志强 (54) 发明名称 一种采用包机制的lua脚本文件管理方。

2、法 (57) 摘要 本发明提出了一种采用包机制的lua脚本文 件管理方法,其中每个不同的lua脚本文件对应 于一个包,每个包分配有一独有标识(ID),每个 包均具有用于保存当前包所包含的包的ID的父 (parents)表以及用于保存当前包所引用到的对 象的名字的名字表;所述包被进一步设置为包之 间相互独立,并通过特定的应用程序界面(API) 在包之间建立称为包含(include)的单向联系。 相对于现有技术,本发明所提出的lua脚本管理 方法具有保证了内存使用效率和执行效率,不同 文件里的同名对象不会互相冲突,不同的lua脚 本文件可以通过特定机制共享数据进行通讯,在 语法层面仍然保持兼容性等。

3、优点。 (51)Int.Cl. 权利要求书1页 说明书3页 附图3页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 3 页 附图 3 页 1/1页 2 1.一种采用包机制的lua脚本文件管理方法,其特征在于:包括作为程序中对象名字 的容器的包,每个不同的lua脚本文件对应于一个包,每个包分配有一独有标识(ID),每个 包均具有用于保存当前包所包含的包的ID的父(parents)表以及用于保存当前包所引用 到的对象的名字的名字表,所述包被进一步设置为:包之间相互独立,并通过特定的应用程 序界面(API)在包之间建立称为包含(include)的单向联系,一。

4、个包可以被多个包所包含, 也可以包含多个包,但一个包只知道自己包含了那些包,而不知道自己被那些包所包含; 所述方法还包括有全局包,其被配置为不需要被包含即自动为其他所有包可见; 所述方法还包括有统一的lua脚本文件名字到包的包表,用于对包进行检索; 所述方法还定义了以下脚本文件加载流程步骤: 1)根据名字查找需加载的脚本文件是否在包表中,如是则跳到到步骤6),如否则继续 下一步; 2)新建包,并分配ID加入包表; 3)检查是否包含有其它包,如否则跳到步骤6),如是则继续下一步; 4)加载被包含的包; 5)将被包含的包加入当前包的parents表; 6)加载脚本文件。 2.根据权利要求1所述的一。

5、种lua脚本文件管理方法,其特征在于:包括以下lua脚 本文件名字查找步骤: 1)先在当前包中的名字表中查找,找到则结束查找,否者继续下一步; 2)在全局包中查找,找到则结束查找,否者继续下一步; 3)依次对parents表所引用的包的名字表进行查找。 3.根据权利要求3所述的一种lua脚本文件管理方法,其特征在于:查找采用先深搜 索的遍历规则。 权 利 要 求 书CN 102819579 A 1/3页 3 一种采用包机制的 lua 脚本文件管理方法 技术领域 0001 本发明涉及一种脚本语言,尤其是一种采用包机制的lua脚本文件管理方法。 背景技术 0002 在网络游戏的服务器端和客户端,通。

6、常需要应用到lua脚本技术。这些lua代码, 通常分布在大量的lua脚本中,因此这些lua脚本就需要一个机制来进行管理。这个机制 需要满足以下需求: 1.能够管理多个lua脚本,这些lua脚本都必须加载在同一个lua虚拟机里以便进行 通讯; 2.不同lua脚本之间的既需要能够互相通讯又必须保持一定的独立性。 0003 lua本身提供了一定的机制来管理多个lua脚本文件,但它却有着比较严重的局 限性导致不能直接在游戏产品中直接使用: 1.lua自身虽然提供了模块(module)机制,可以保证一个脚本文件加载一次,但不同 的文件的同名对象会相互冲突; 2.不同的文件之间没有一个明显的关联关系,不利。

7、于程序逻辑关系的组织。 发明内容 0004 为克服以上所述的缺陷,本发明实现了一种lua虚拟机的管理方法,对现有的lua 虚拟机进行改造,可以灵活高效地管理大量lua脚本文件。 0005 本发明为此提出了一种采用包机制的lua脚本文件管理方法,其包括作为程序中 对象名字的容器的包,每个不同的lua脚本文件对应于一个包,每个包分配有一独有标识 (ID),每个包均具有用于保存当前包所包含的包的ID的父(parents)表以及用于保存当前 包所引用到的对象的名字的名字表,所述包被进一步设置为:包之间相互独立,并通过特定 的应用程序界面(API)在包之间建立称为包含(include)的单向联系,一个包。

8、可以被多个 包所包含,也可以包含多个包,但一个包只知道自己包含了那些包,而不知道自己被那些包 所包含; 所述方法还包括有全局包,其被配置为不需要被包含即自动为其他所有包可见; 所述方法还包括有统一的lua脚本文件名字到包的包表,用于对包进行检索; 所述方法还定义了以下脚本文件加载流程: 1)查找需加载的脚本文件是否在包表中,如是则跳到到6),如否则继续下一步; 2)新建包,并分配ID加入包表; 3)检查是否包含有其它包,如否则跳到6),如是则继续下一步; 4)加载被包含的包; 5)将被包含的包加入当前包的parents表; 6)加载脚本文件。 0006 作为以上技术方案的一种改进,所述方法还引。

9、入了全局包,所述全局包被配置为 说 明 书CN 102819579 A 2/3页 4 不需要被其它包所包含即自动为其他所有包可见。 0007 作为以上技术方案的一种改进,所述方法包括以下文件名查找步骤: 1)先在当前包中的名字表中查找,找到则结束查找,否者继续下一步; 2)在全局包中查找,找到则结束查找,否者继续下一步; 3)依次对parents表所引用的包的名字表进行查找。 0008 作为以上技术方案的一种改进,其中查找采用先深搜索的遍历规则。 0009 相对于现有技术,本发明所提出的lua脚本管理方法具有以下优点: 1.lua脚本文件都加载在同一个lua虚拟机里,保证了内存使用效率和执行效。

10、率; 2.不同的lua脚本文件相互独立,不同文件里的同名对象不会互相冲突; 3.不同的lua脚本文件可以通过特定机制共享数据进行通讯; 4.虽然对lua虚拟机进行了改造,但是在语法层面仍然保持兼容性。 附图说明 0010 下面结合附图和实施例对本发明进一步说明。 0011 图1为本发明中包的相互关系的示意图; 图2为本发明中包的结构组成的示意图; 图3为本发明中脚本文件加载流程的示意图。 具体实施方式 0012 本发明的技术方案利用一种包机制来管理每个lua脚本文件,每个不同的lua脚 本文件对应于一个包,其中包为一种程序中对象名字的容器,而对象则为程序中数据结构 或者函数的实体。每个包用一个。

11、数字来标识(ID),在一个优选的实施例中,包的标识为一个 大于等于0的整数,即从数字1开始递增。 0013 每个包都有自己独立的名字空间,即对象名字和对象的映射表。本发明还包括有 一个统一的文件名到包的包表,其是一种key-value类型的映射表,用于脚本文件名到对 应的包的映射,在本发明中用于对包进行检索。 0014 在本发明中,包被配置为相互独立,但可以通过特定的应用程序界面(API)在包 之间建立单向联系,这个单向联系称为包含(include)。也即是说,include是包与包之 间的一种单向联系的称呼,也是建立这种连接所用API名字。具体来讲,如果包B 包含 (include)了包A,。

12、则包A的对象为包B可见;但不能同时建立反向联系,即如果包B 包含 了包A,则不允许包A包含包B。一个包可以被多个包所包含,也可以包含多个包。但一个 包只知道自己包含了那些包,而不知道自己被那些包所包含。具体如图1所示。 0015 另外,本发明还包括有一个特殊的全局包,数字标识为0,不需要被其它包所包含 即自动为其他所有包可见。 0016 具体来说,每个包中均具有有两种主要数据结构: 1.父(parents)表:一种被包所用到集合表,成员是被当前包所Include的包的ID,在 本发明中用于保存当前包所包含的包的ID; 2.名字表:一种key-value类型的映射表,用于对象名字到对象的映射,在。

13、本发明中用 于保存当前包所引用到的对象的名字。 说 明 书CN 102819579 A 3/3页 5 0017 其具体结构如图2所示。图3显示了根据本发明的脚本文件加载流程,其步骤包 括: 1)查找需加载的脚本文件是否在包表中,如是则跳到到6),如否则继续下一步; 2)新建包,并分配ID加入包表; 3)检查是否包含有其它包,如否则跳到6),如是则继续下一步; 4)加载被包含的包; 5)将被包含的包加入当前包的parents表; 6)加载脚本文件。 0018 lua在执行时需要根据名字来获取对应的对象,这个过程被称为名字查找。在本发 明中,在本发明中lua脚本文件名字的查找通过以下步骤实现: 1。

14、.先在当前包的名字表中查找,找到则结束查找; 2.在全局包中查找,找到则结束查找; 3.依次对parents表所引用的包的名字表进行查找,找到则结束查找。 0019 其中查找的遍历规则为先深搜索,或称为深度优先搜索。 0020 这样,相对于现有技术,本发明所提出的lua脚本管理方法具有以下优点: 1.lua脚本文件都加载在同一个lua虚拟机里,保证了内存使用效率和执行效率; 2.不同的lua脚本文件相互独立,不同文件里的同名对象不会互相冲突; 3.不同的lua脚本文件可以通过特定机制共享数据进行通讯; 4.虽然对lua虚拟机进行了改造,但是在语法层面仍然保持兼容性。 0021 当然,本发明除了上述实施方式之外,其它等同技术方案也应当在其保护范围之 内。 说 明 书CN 102819579 A 1/3页 6 图1 说 明 书 附 图CN 102819579 A 2/3页 7 图2 说 明 书 附 图CN 102819579 A 3/3页 8 图3 说 明 书 附 图CN 102819579 A 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1