欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種腳本游戲服務器引擎的制作方法

文檔序號:10665704閱讀:234來源:國知局
一種腳本游戲服務器引擎的制作方法【專利摘要】本發(fā)明公開了一種腳本游戲服務器引擎,涉及游戲服務器開發(fā)領域。該腳本游戲服務器引擎包括C/C++層、網(wǎng)絡層、中間層和Lua腳本層,通過解釋型語言和編譯型語言的結合實現(xiàn),通過利用編譯型語言實現(xiàn)一些效率關鍵系統(tǒng):如游戲服務器的網(wǎng)絡層,一些關鍵的壓縮或者加解密算法;而利用腳本解釋型語言實現(xiàn)經常變更的邏輯系統(tǒng),使得服務器引擎不僅具有更高的開發(fā)效率,而且實現(xiàn)了線上快速熱更新服務器的所有邏輯系統(tǒng),以及線上快速的修改bug,而不需要停服更新,從而具有更高的游戲執(zhí)行效率?!緦@f明】一種腳本游戲服務器引擎
技術領域
[0001]本發(fā)明涉及游戲服務器開發(fā)領域,尤其涉及一種腳本游戲服務器引擎。【
背景技術
】[0002]隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,網(wǎng)絡游戲人群的不斷壯大,游戲服務器引擎的優(yōu)劣直接影響著游戲開發(fā)的難以程度以及游戲玩家的體驗。[0003]目前,游戲服務器引擎的架構一般通過以下兩種方式實現(xiàn):純編譯型語言(如C++,C)和純解釋型語言(如java,lua,python等)。其中,純編譯型語言實現(xiàn)的服務器引擎架構可以編譯成本地指令,游戲執(zhí)行效率高,但是不利于快速迭代開發(fā)和線上更新;而純解釋型語言實現(xiàn)的服務器引擎架構需要相應的字節(jié)碼虛擬機支持,源程序編譯成中間字節(jié)碼后在虛擬機上執(zhí)行,這種實現(xiàn)方式很“輕”,可以提高游戲開發(fā)效率、降低游戲開發(fā)難度,但是游戲的執(zhí)行效率卻比較低。【
發(fā)明內容】[0004]本發(fā)明的目的在于提供一種腳本游戲服務器引擎,從而解決現(xiàn)有技術中存在的前述問題。[0005]為了實現(xiàn)上述目的,本發(fā)明采用的技術方案如下:[0006]一種腳本游戲服務器引擎,包括:[0007]C/C++層:用于提供底層的基礎Iib庫;[0008]網(wǎng)絡層:用于實現(xiàn)游戲服務器與客戶端之間的通信;[0009]中間層:用于實現(xiàn)所述C/C++層接口和Lua腳本層耦合,還用于擴展所述Lua腳本層的功能;[0010]Lua腳本層:用于實現(xiàn)服務器的邏輯和保存玩家的數(shù)據(jù)。[0011]優(yōu)選地,所述Lua腳本層中設置有Lua代碼文件,所述Lua代碼文件中游戲數(shù)[0012]據(jù)部分的結構如下:[0013]module(“xxxx”,packet,seeall)[0014]data=dataor{}[0015][0016]優(yōu)選地,所述Lua腳本層中設置有Lua代碼文件,所述Lua代碼文件中需要初始化部分的結構如下:[0017]funct1nInitO[0018]end[0019][0020]優(yōu)選地,所述Lua腳本層中設置有Lua代碼文件,所述Lua代碼文件中需要釋放引用部分的結構如下:[0021]funct1nRelease()[0022]end[0023][0024]優(yōu)選地,所述網(wǎng)絡層利用Protobuf實現(xiàn)通信協(xié)議、數(shù)據(jù)描述及數(shù)據(jù)存儲。[0025]優(yōu)選地,所述網(wǎng)絡層利用Libevent開源庫實現(xiàn)。[0026]優(yōu)選地,所述中間層采用Luatinker做為所述C/C++層向所述Lua腳本層注冊接口的API。[0027]優(yōu)選地,所述Lua腳本層利用Lua模塊機制實現(xiàn)邏輯腳本代碼的重新編譯。[0028]更優(yōu)選地,Lua模塊通過模塊名稱調用其他模塊的接口。[0029]本發(fā)明的有益效果是:本發(fā)明實施例提供的腳本游戲服務器引擎通過解釋型語言和編譯型語言的結合實現(xiàn),通過利用編譯型語言實現(xiàn)一些效率關鍵系統(tǒng):如游戲服務器的網(wǎng)絡層,一些關鍵的壓縮或者加解密算法;而利用腳本解釋型語言實現(xiàn)經常變更的邏輯系統(tǒng),使得服務器引擎不僅具有更高的開發(fā)效率,而且實現(xiàn)了線上快速熱更新服務器的所有邏輯系統(tǒng),以及線上快速的修改bug,而不需要停服更新,從而具有更高的游戲執(zhí)行效率?!靖綀D說明】[0030]圖1是本發(fā)明實施例提供的腳本游戲服務器引擎的結構示意圖。【具體實施方式】[0031]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的【具體實施方式】僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。[0032]如圖1所示,本發(fā)明實施例提供了一種腳本游戲服務器引擎,包括:[0033]C/C++層:用于提供底層的基礎Iib庫;[0034]網(wǎng)絡層:用于實現(xiàn)游戲服務器與客戶端之間的通信;[0035]中間層:用于實現(xiàn)C/C++層接口和Lua腳本層耦合,還用于擴展Lua腳本層的功倉泛;[0036]Lua腳本層:用于實現(xiàn)服務器的邏輯和保存玩家的數(shù)據(jù)。[0037]其中,C/C++層提供的基礎Iib庫包括:protobuf協(xié)議庫、Iua虛擬機、加解密庫坐寸ο[0038]網(wǎng)絡層用于實現(xiàn)游戲服務器與游戲客戶端的通信。由于游戲服務器要求高并發(fā),所以對效率要求比較高,本發(fā)明實施例提供的服務器引擎的網(wǎng)絡層采用C++語言實現(xiàn),可以更快的處理網(wǎng)絡包。本發(fā)明實施例提供的網(wǎng)絡層可以提供最底層的通信服務,上層的數(shù)據(jù)同步、數(shù)據(jù)發(fā)送都基于此通信服務。[0039]中間層用于實現(xiàn)C/C++層接口和Lua腳本層耦合,相當于C/C++層和Lua腳本層之間膠水的作用。因為一些復雜的算法不適合用Lua語言實現(xiàn),如md5,網(wǎng)絡數(shù)據(jù)包的收發(fā)等,而中間層,可以實現(xiàn)在Lua代碼里就可以直接調用C/C++層的接口,實現(xiàn)對Lua的擴展。所以,本發(fā)明實施例提供的腳本游戲服務器引擎,結合了C/C++語言和Lua語言實現(xiàn)的優(yōu)勢。[0040]Lua腳本層包括邏輯系統(tǒng)、游戲對象、游戲數(shù)據(jù)和配置表等。Lua腳本層采用Lua語言實現(xiàn)。Lua是一種解釋型腳本語言,具有跨平臺,效率高的特點。一個完整的Lua解釋器不過200k。這非常適合作為一種嵌入式語言。Lua的本身提供的數(shù)據(jù)類型也非常簡潔統(tǒng)一,除了基本類型,復雜類型都統(tǒng)一使用table結構去描述。Lua是開放源代碼的,它的整個實現(xiàn)簡潔而統(tǒng)一,所以它的執(zhí)行效率非常高。Lua作為一種十分適合游戲開發(fā)的腳本語言,還有一個比較重要的原因是:lua的垃圾收集機制是增量式標記清除回收器,不會出現(xiàn)為了垃圾回收而暫停游戲世界運行的情況。[0041]本發(fā)明實施例中,Lua腳本層可以在線上熱編譯模塊代碼的同時,不丟失玩家的數(shù)據(jù)。從而可以實現(xiàn)不停服在線熱更新服務器。這種特色可以應付線上的突發(fā)狀況,在出現(xiàn)邏輯bug或者其他異常情況的時候,可以在玩家毫無感覺的情況下,進行修復。不影響玩家的游戲體驗。[0042]本發(fā)明實施例提供的腳本游戲服務器引擎的上述架構,通過解釋型語言和編譯型語言的結合實現(xiàn),通過利用編譯型語言實現(xiàn)一些效率關鍵系統(tǒng):如游戲服務器的網(wǎng)絡層,一些關鍵的壓縮或者加解密算法;而利用腳本解釋型語言實現(xiàn)經常變更的邏輯系統(tǒng),使得服務器引擎不僅具有更高的開發(fā)效率,而且實現(xiàn)了線上熱更新服務器的所有邏輯系統(tǒng),以及線上快速的修改bug,而不需要停服更新,從而具有更高的游戲執(zhí)行效率。[0043]本發(fā)明的一個優(yōu)選實施例中,所述Lua腳本層中,Lua代碼文件的數(shù)據(jù)部分的結構如下:[0044]Module(“xxxx”,packet,seeall)[0045]Data=dataor{}[0046][0047]數(shù)據(jù)部分采用上述結構,可以有效的保證在代碼熱編譯的時候,玩家游戲數(shù)據(jù)不會丟失。從而實現(xiàn)邏輯代碼重新編譯而數(shù)據(jù)不變。如果不采用這種結構,需要自己動手寫代碼保證玩家游戲數(shù)據(jù)不會丟失,從而加大實現(xiàn)難度,也會使玩家數(shù)據(jù)丟失的概率大大提高。不能加實現(xiàn)真正意義上的熱更新。[0048]本發(fā)明的一個優(yōu)選實施例中,所述Lua腳本層中,Lua代碼文件的需要初始化部分的結構如下:[0049]funct1nInitO[0050]end[0051][0052]用來處理關于熱更新的一些特殊初始化和模塊之間數(shù)據(jù)的強關聯(lián)關系。在上述函數(shù)里可以做一些特殊的需求,比如說配置文件的解析和重組,模塊數(shù)據(jù)之間的關聯(lián)等。所以采用上述函數(shù)可以從框架結構上明確何時執(zhí)行初始化,避免機制會出現(xiàn)混亂的情況。[0053]在本發(fā)明的一個優(yōu)選實施例中,所述Lua腳本層中,Lua代碼文件的需要釋放弓I用部分的結構如下:[0054]funct1nRelease()[0055]end[0056][0057]采用上述結構,可以使Lua代碼文件能夠釋放一些特殊的引用,防止Lua腳本層熱更新后,還指向老代碼,造成熱更新的失敗。[0058]本發(fā)明的一個優(yōu)選實施例中,所述網(wǎng)絡層利用Protobuf做通信協(xié)議,實現(xiàn)數(shù)據(jù)描述及數(shù)據(jù)存儲。[0059]Protobuf是google的一種數(shù)據(jù)交換格式,它獨立于語言,獨立于平臺。google提供了三種語言的實現(xiàn):java、c++和python,每一種實現(xiàn)都包含了相應語言的編譯器以及庫文件。由于它是一種二進制的格式,比使用xml進行數(shù)據(jù)交換快許多??梢园阉糜诜植际綉弥g的數(shù)據(jù)通信或者異構環(huán)境下的數(shù)據(jù)交換。作為一種效率和兼容性都很優(yōu)秀的二進制數(shù)據(jù)傳輸格式,可以用于諸如網(wǎng)絡傳輸、配置文件、數(shù)據(jù)存儲等諸多領域。[0060]本發(fā)明的一個優(yōu)選實施例中,所述網(wǎng)絡層利用Libevent開源庫實現(xiàn)。[0061]Libevent開源庫是一個基于事件驅動的高效網(wǎng)絡庫,利用多路復用技術,支持高并發(fā)要求,同時還支持時鐘管理。這個開源庫經過了很多優(yōu)秀的商業(yè)軟件系統(tǒng)的經驗,是一個非常穩(wěn)定的網(wǎng)絡庫?;谑录寗拥哪P?,也提供了非常好的開發(fā)模式。本發(fā)明實施例提供的腳本游戲服務器引擎對Iibevent開源庫的接口進行了擴展,使其更易于使用和簡潔。[0062]本發(fā)明的一個優(yōu)選實施例中,所述中間層采用Luatinker做為所述C/C++層向所述Lua腳本層注冊接口的API。[0063]Luatinker是利用C++模板實現(xiàn)的一套C/C++層向Iua層注冊接口的API,接口非常簡潔。整個代碼只有一個頭文件和Cpp文件,非常的小巧統(tǒng)一。[0064]本發(fā)明的一個優(yōu)選實施例中,所述Lua腳本層利用Lua模塊機制實現(xiàn)邏輯腳本代碼的重新編譯。[0065]在Lua腳本層中,有效的利用Lua模塊機制,可以進一步提高Lua腳本層熱更新服務器邏輯系統(tǒng)的效率。[0066]其中,在利用Lua模塊機制的過程中,各Lua模塊之間的接口可以相互調用,本發(fā)明實施例提供的腳本游戲服務器引擎中,Lua模塊通過模塊名稱調用其他模塊的接口,這樣,通過模塊名稱間接的調用其他模塊的接口,就可以避免在模塊內直接引用其他模塊的接口,就不會造成在熱更新后還引用老代碼接口,導致熱更新失敗的情況。[0067]通過采用本發(fā)明公開的上述技術方案,得到了如下有益的效果:本發(fā)明實施例提供的腳本游戲服務器引擎通過解釋型語言和編譯型語言的結合實現(xiàn),通過利用編譯型語言實現(xiàn)一些效率關鍵系統(tǒng):如游戲服務器的網(wǎng)絡層,一些關鍵的壓縮或者加解密算法;而利用腳本解釋型語言實現(xiàn)經常變更的邏輯系統(tǒng),使得服務器引擎不僅具有更高的開發(fā)效率,而且實現(xiàn)了線上熱更新服務器的所有邏輯系統(tǒng),以及線上快速的修改bug,而不需要停服更新,從而具有更聞的游戲執(zhí)彳丁效率。[0068]本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。[0069]本領域人員應該理解的是,上述實施例提供的方法步驟的時序可根據(jù)實際情況進行適應性調整,也可根據(jù)實際情況并發(fā)進行。[0070]上述實施例涉及的方法中的全部或部分步驟可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于計算機設備可讀取的存儲介質中,用于執(zhí)行上述各實施例方法所述的全部或部分步驟。所述計算機設備,例如:個人計算機、服務器、網(wǎng)絡設備、智能移動終端、智能家居設備、穿戴式智能設備、車載智能設備等;所述的存儲介質,例如:RAM、ROM、磁碟、磁帶、光盤、閃存、U盤、移動硬盤、存儲卡、記憶棒、網(wǎng)絡服務器存儲、網(wǎng)絡云存儲坐寸ο[0071]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。[0072]以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本
技術領域
的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視本發(fā)明的保護范圍?!局鳈囗棥?.一種腳本游戲服務器引擎,其特征在于,包括:C/C++層:用于提供底層的基礎Iib庫;網(wǎng)絡層:用于實現(xiàn)游戲服務器與客戶端之間的通信;中間層:用于實現(xiàn)所述C/C++層接口和Lua腳本層耦合,還用于擴展所述Lua腳本層的功能;Lua腳本層:用于實現(xiàn)服務器的邏輯和保存玩家的數(shù)據(jù)。2.根據(jù)權利要求1所述的腳本游戲服務器引擎,其特征在于,所述Lua腳本層中設置有Lua代碼文件,所述Lua代碼文件中游戲數(shù)據(jù)部分的結構如下:module(“xxxx,,,packet,seeall)οι*{}3.根據(jù)權利要求1所述的腳本游戲服務器引擎,其特征在于,所述Lua腳本層中設置有Lua代碼文件,所述Lua代碼文件中需要初始化部分的結構如下:funct1nInitOend4.根據(jù)權利要求1所述的腳本游戲服務器引擎,其特征在于,所述Lua腳本層中設置有Lua代碼文件,所述Lua代碼文件中需要釋放引用部分的結構如下:funct1nRelease()end5.根據(jù)權利要求1所述的腳本游戲服務器引擎,其特征在于,所述網(wǎng)絡層利用Protobuf實現(xiàn)通信協(xié)議、數(shù)據(jù)描述及數(shù)據(jù)存儲。6.根據(jù)權利要求1所述的腳本游戲服務器引擎,其特征在于,所述網(wǎng)絡層利用Libevent開源庫實現(xiàn)。7.根據(jù)權利要求1所述的腳本游戲服務器引擎,其特征在于,所述中間層采用Luatinker做為所述C/C++層向所述Lua腳本層注冊接口的API。8.根據(jù)權利要求1所述的腳本游戲服務器引擎,其特征在于,所述Lua腳本層利用Lua模塊機制實現(xiàn)邏輯腳本代碼的重新編譯。9.根據(jù)權利要求8所述的腳本游戲服務器引擎,其特征在于,Lua模塊通過模塊名稱調用其他模塊的接口。【文檔編號】G06F9/45GK106033367SQ201510119633【公開日】2016年10月19日【申請日】2015年3月18日【發(fā)明人】賀志堅【申請人】廣州四三九九信息科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
观塘区| 手游| 什邡市| 罗源县| 余姚市| 青川县| 绍兴市| 咸宁市| 深州市| 应用必备| 乌兰浩特市| 共和县| 调兵山市| 库车县| 靖安县| 淳安县| 泾川县| 兴义市| 平江县| 西华县| 资源县| 大港区| 山阴县| 泌阳县| 英德市| 卓尼县| 江阴市| 北票市| 塘沽区| 苍山县| 延寿县| 霸州市| 靖西县| 方山县| 改则县| 双鸭山市| 桐柏县| 安多县| 南丹县| 顺义区| 霍州市|