[发明专利]一种采用包机制的lua脚本文件管理方法有效
申请号: | 201210259067.8 | 申请日: | 2012-07-25 |
公开(公告)号: | CN102819579A | 公开(公告)日: | 2012-12-12 |
发明(设计)人: | 王斌 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司;成都西山居互动娱乐科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 谭志强 |
地址: | 519000 广东省珠*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 采用 机制 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类型的映射表,用于脚本文件名到对应的包的映射,在本发明中用于对包进行检索。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司;成都西山居互动娱乐科技有限公司,未经珠海金山网络游戏科技有限公司;成都西山居互动娱乐科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210259067.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种铝材合成板的后边框
- 下一篇:一种封堵器