[發(fā)明專利]一種采用包機(jī)制的lua腳本文件管理方法有效
| 申請?zhí)枺?/td> | 201210259067.8 | 申請日: | 2012-07-25 |
| 公開(公告)號: | CN102819579A | 公開(公告)日: | 2012-12-12 |
| 發(fā)明(設(shè)計)人: | 王斌 | 申請(專利權(quán))人: | 珠海金山網(wǎng)絡(luò)游戲科技有限公司;成都西山居互動娛樂科技有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 廣州嘉權(quán)專利商標(biāo)事務(wù)所有限公司 44205 | 代理人: | 譚志強(qiáng) |
| 地址: | 519000 廣東省珠*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 采用 機(jī)制 lua 腳本 文件 管理 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種腳本語言,尤其是一種采用包機(jī)制的lua腳本文件管理方法。
背景技術(shù)
在網(wǎng)絡(luò)游戲的服務(wù)器端和客戶端,通常需要應(yīng)用到lua腳本技術(shù)。這些lua代碼,通常分布在大量的lua腳本中,因此這些lua腳本就需要一個機(jī)制來進(jìn)行管理。這個機(jī)制需要滿足以下需求:
1.能夠管理多個lua腳本,這些lua腳本都必須加載在同一個lua虛擬機(jī)里以便進(jìn)行通訊;
2.不同lua腳本之間的既需要能夠互相通訊又必須保持一定的獨(dú)立性。
lua本身提供了一定的機(jī)制來管理多個lua腳本文件,但它卻有著比較嚴(yán)重的局限性導(dǎo)致不能直接在游戲產(chǎn)品中直接使用:
1.lua自身雖然提供了模塊(module)機(jī)制,可以保證一個腳本文件加載一次,但不同的文件的同名對象會相互沖突;
2.不同的文件之間沒有一個明顯的關(guān)聯(lián)關(guān)系,不利于程序邏輯關(guān)系的組織。
發(fā)明內(nèi)容
為克服以上所述的缺陷,本發(fā)明實(shí)現(xiàn)了一種lua虛擬機(jī)的管理方法,對現(xiàn)有的lua虛擬機(jī)進(jìn)行改造,可以靈活高效地管理大量lua腳本文件。
本發(fā)明為此提出了一種采用包機(jī)制的lua腳本文件管理方法,其包括作為程序中對象名字的容器的包,每個不同的lua腳本文件對應(yīng)于一個包,每個包分配有一獨(dú)有標(biāo)識(ID),每個包均具有用于保存當(dāng)前包所包含的包的ID的父(parents)表以及用于保存當(dāng)前包所引用到的對象的名字的名字表,所述包被進(jìn)一步設(shè)置為:包之間相互獨(dú)立,并通過特定的應(yīng)用程序界面(API)在包之間建立稱為包含(include)的單向聯(lián)系,一個包可以被多個包所包含,也可以包含多個包,但一個包只知道自己包含了那些包,而不知道自己被那些包所包含;
所述方法還包括有全局包,其被配置為不需要被包含即自動為其他所有包可見;?
所述方法還包括有統(tǒng)一的lua腳本文件名字到包的包表,用于對包進(jìn)行檢索;
所述方法還定義了以下腳本文件加載流程:
1)查找需加載的腳本文件是否在包表中,如是則跳到到6),如否則繼續(xù)下一步;
2)新建包,并分配ID加入包表;
3)檢查是否包含有其它包,如否則跳到6),如是則繼續(xù)下一步;
4)加載被包含的包;
5)將被包含的包加入當(dāng)前包的parents表;
6)加載腳本文件。
作為以上技術(shù)方案的一種改進(jìn),所述方法還引入了全局包,所述全局包被配置為不需要被其它包所包含即自動為其他所有包可見。
作為以上技術(shù)方案的一種改進(jìn),所述方法包括以下文件名查找步驟:
1)先在當(dāng)前包中的名字表中查找,找到則結(jié)束查找,否者繼續(xù)下一步;
2)在全局包中查找,找到則結(jié)束查找,否者繼續(xù)下一步;
3)依次對parents表所引用的包的名字表進(jìn)行查找。
作為以上技術(shù)方案的一種改進(jìn),其中查找采用先深搜索的遍歷規(guī)則。
相對于現(xiàn)有技術(shù),本發(fā)明所提出的lua腳本管理方法具有以下優(yōu)點(diǎn):
1.lua腳本文件都加載在同一個lua虛擬機(jī)里,保證了內(nèi)存使用效率和執(zhí)行效率;
2.不同的lua腳本文件相互獨(dú)立,不同文件里的同名對象不會互相沖突;
3.不同的lua腳本文件可以通過特定機(jī)制共享數(shù)據(jù)進(jìn)行通訊;
4.雖然對lua虛擬機(jī)進(jìn)行了改造,但是在語法層面仍然保持兼容性。
附圖說明
下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)一步說明。
圖1為本發(fā)明中包的相互關(guān)系的示意圖;
圖2為本發(fā)明中包的結(jié)構(gòu)組成的示意圖;
圖3為本發(fā)明中腳本文件加載流程的示意圖。
具體實(shí)施方式
本發(fā)明的技術(shù)方案利用一種包機(jī)制來管理每個lua腳本文件,每個不同的lua腳本文件對應(yīng)于一個包,其中包為一種程序中對象名字的容器,而對象則為程序中數(shù)據(jù)結(jié)構(gòu)或者函數(shù)的實(shí)體。每個包用一個數(shù)字來標(biāo)識(ID),在一個優(yōu)選的實(shí)施例中,包的標(biāo)識為一個大于等于0的整數(shù),即從數(shù)字1開始遞增。
每個包都有自己獨(dú)立的名字空間,即對象名字和對象的映射表。本發(fā)明還包括有一個統(tǒng)一的文件名到包的包表,其是一種key-value類型的映射表,用于腳本文件名到對應(yīng)的包的映射,在本發(fā)明中用于對包進(jìn)行檢索。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于珠海金山網(wǎng)絡(luò)游戲科技有限公司;成都西山居互動娛樂科技有限公司,未經(jīng)珠海金山網(wǎng)絡(luò)游戲科技有限公司;成都西山居互動娛樂科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210259067.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種鋁材合成板的后邊框
- 下一篇:一種封堵器
- 一種機(jī)制蛋的制造方法
- 手機(jī)制式的校準(zhǔn)方法、系統(tǒng)及手機(jī)檢測設(shè)備
- 一種考慮激勵機(jī)制電量電價彈性矩陣的耗電量估測方法
- 選擇區(qū)塊鏈共識機(jī)制的方法、裝置以及共識節(jié)點(diǎn)
- 一種復(fù)合改性機(jī)制砂及其制備方法
- 一種存儲設(shè)備糾錯方法及糾錯裝置
- 區(qū)塊鏈中共識機(jī)制的處理方法、裝置和電子設(shè)備
- 一種建筑用機(jī)制砂整形裝置
- 通信方法、通信裝置及存儲介質(zhì)
- 一種網(wǎng)絡(luò)預(yù)約出租車市場準(zhǔn)入機(jī)制的優(yōu)化方法及系統(tǒng)
- 腳本處理方法及裝置
- 一種實(shí)現(xiàn)腳本引擎的系統(tǒng)及方法
- 代理自動配置腳本的處理方法及代理自動配置腳本服務(wù)器
- 一種腳本執(zhí)行方法、裝置及計算設(shè)備
- 腳本轉(zhuǎn)換方法、裝置、計算機(jī)設(shè)備及存儲介質(zhì)
- 性能測試平臺腳本存儲方法、裝置、設(shè)備及存儲介質(zhì)
- 一種實(shí)現(xiàn)測試腳本驗(yàn)證的方法及系統(tǒng)
- 結(jié)構(gòu)化查詢語言腳本審查方法及相關(guān)設(shè)備
- 基于FitNesse框架的數(shù)據(jù)驅(qū)動腳本庫的方法、系統(tǒng)及介質(zhì)
- 一種腳本審計方法、裝置、設(shè)備及存儲介質(zhì)





