本發(fā)明涉及游戲技術領域,具體地,涉及自動生成行為樹代碼的方法及系統(tǒng)。
背景技術:
為了便于實現(xiàn)游戲中的人工智能行為,很多游戲里面采用行為樹作為人工智能的解決方案。如何描述行為樹有很多種方法,例如直接編寫代碼去描述行為樹。直接編寫行為樹代碼的方式不方便進行維護,且不能清晰的顯示人工智能的邏輯。
經(jīng)檢索,申請?zhí)枮椋?01480033537.6,名稱為:自動源代碼生成,提出了從包括變量代碼元素和方法的簡檔中自動生成源代碼語句。簡檔從具有已標識的變量代碼元素的現(xiàn)有代碼基構建,已標識的變量代碼元素在被用于源代碼語句的不同版本中時不同。開發(fā)者可定義變量代碼元素的值,其接著被簡檔中的方法用于自動生成對應的源代碼語句。
申請?zhí)枮椋?01110391484.3,名稱為:代碼自動生成方法及裝置,提出了一種代碼自動生成方法及裝置,該方法包括:獲取通過用戶界面輸入的待生成代碼的代碼配置信息,根據(jù)獲取的所述代碼配置信息得到表結構信息;根據(jù)確定的代碼類型和選擇的操作類型,提取相應的代碼模板;將所述表結構信息以及用戶配置的配置信息填充到提取的所述代碼模板中,得到所述待生成代碼。可以自動生成各種不同類型的代碼,具有普遍適用性。
上述專利申請針對源代碼的自動生成,但是不能用來描述游戲中的人工智能行為,目前還未檢索到關于行為樹代碼的自動生成技術。
為此,本發(fā)現(xiàn)提供了一種用數(shù)據(jù)和文本描述行為樹的方法和系統(tǒng),可以根據(jù)數(shù)據(jù)文本自動生成行為樹代碼。
技術實現(xiàn)要素:
針對現(xiàn)有技術中的缺陷,本發(fā)明的目的是提供一種自動生成行為樹代碼的方法及系統(tǒng)。
根據(jù)本發(fā)明提供的自動生成行為樹代碼的方法,包括如下步驟:
步驟1:定義需要用到的行為樹節(jié)點;
步驟2:配置人工智能數(shù)據(jù),具體地,利用步驟1中定義的行為樹節(jié)點組裝成具有人工智能的行為樹;
步驟3:加載步驟2的人工智能配置數(shù)據(jù),按照數(shù)據(jù)描述的各種節(jié)點以及節(jié)點之間的組裝關系組建成能夠運行的行為樹代碼;
步驟4:重復步驟3,依次遍歷配置數(shù)據(jù)中的所有節(jié)點以及節(jié)點之間的組裝關系,直到遍歷完所有配置數(shù)據(jù),遍歷完所有配置數(shù)據(jù)后,返回創(chuàng)建的整套行為樹代碼;其中,遍歷是指按照配置數(shù)據(jù)的順序依次讀取配置數(shù)據(jù)。
優(yōu)選地,所述步驟1包括:由于每個行為樹節(jié)點都有一個列表用于存儲孩子節(jié)點,每個行為樹節(jié)點都有一個位置描述,所述位置描述表示在兄弟節(jié)點里面該行為樹節(jié)點所處的順序;其中,行為樹節(jié)點是指能夠按照特定邏輯運行的一套代碼;行為樹節(jié)點能夠相互嵌套,即一個行為樹節(jié)點能夠嵌套若干個不同的行為樹節(jié)點,形成層級關系;
孩子節(jié)點是指:嵌套在行為樹節(jié)點上的下一層級的行為樹節(jié)點,相對于上層行為樹節(jié)點,下一層的行為樹節(jié)點被稱為孩子節(jié)點;
兄弟節(jié)點是指:屬于同一層級的行為樹節(jié)點,該同一層級的行為樹節(jié)點互為兄弟節(jié)點;
具體地,所述行為樹節(jié)點包括:順序節(jié)點、選擇節(jié)點、條件節(jié)點、動作節(jié)點;
所述順序節(jié)點是指:按照順序依次執(zhí)行,一旦某一個節(jié)點執(zhí)行失敗則返回結果;
所述選擇節(jié)點是指:按照順序依次執(zhí)行,一旦某一個節(jié)點執(zhí)行成功則返回;
所述條件節(jié)點是指:用來判斷條件是否符合的節(jié)點;
所述動作節(jié)點是指:執(zhí)行具體業(yè)務邏輯的節(jié)點。
優(yōu)選地,所述步驟2中配置人工智能數(shù)據(jù)是指用不同的行為樹節(jié)點進行組合的文本描述,其中的人工智能數(shù)據(jù)由多個行為樹節(jié)點組成,組成方式包括嵌套和順序組合。
根據(jù)本發(fā)明提供的自動生成行為樹代碼的系統(tǒng),包括如下模塊:
定義模塊:用于定義需要用到的行為樹節(jié)點;
配置模塊:用于配置人工智能數(shù)據(jù),具體地,根據(jù)定義的行為樹節(jié)點組成人工智能的行為樹;
行為樹代碼組建模塊:用于加載人工智能配置文件,按照數(shù)據(jù)文本描述的各種節(jié)點以及節(jié)點之間的關系依次組建可運行的行為樹代碼;
遍歷模塊:用于對所有配置數(shù)據(jù)進行遍歷,遍歷結束后,返回創(chuàng)建的整套行為樹代碼。
優(yōu)選地,所述定義模塊中由于每個行為樹節(jié)點都有一個列表用于存儲孩子節(jié)點,每個行為樹節(jié)點都有一個位置描述,所述位置描述表示在兄弟節(jié)點里面該行為樹節(jié)點所處的順序;其中,行為樹節(jié)點是指能夠按照特定邏輯運行的一套代碼;行為樹節(jié)點能夠相互嵌套,即一個行為樹節(jié)點能夠嵌套若干個不同的行為樹節(jié)點,形成層級關系;
孩子節(jié)點是指:嵌套在行為樹節(jié)點上的下一層級的行為樹節(jié)點,相對于上層行為樹節(jié)點,下一層的行為樹節(jié)點被稱為孩子節(jié)點;
兄弟節(jié)點是指:屬于同一層級的行為樹節(jié)點,該同一層級的行為樹節(jié)點互為兄弟節(jié)點;
具體地,所述行為樹節(jié)點包括:順序節(jié)點、選擇節(jié)點、條件節(jié)點、動作節(jié)點;
所述順序節(jié)點是指:按照順序依次執(zhí)行,一旦某一個節(jié)點執(zhí)行失敗則返回結果;
所述選擇節(jié)點是指:按照順序依次執(zhí)行,一旦某一個節(jié)點執(zhí)行成功則返回;
所述條件節(jié)點是指:用來判斷條件是否符合的節(jié)點;
所述動作節(jié)點是指:執(zhí)行具體業(yè)務邏輯的節(jié)點。
優(yōu)選地,所述配置模塊中配置人工智能數(shù)據(jù)是指用不同的行為樹節(jié)點進行組合的文本描述,其中的人工智能數(shù)據(jù)由多個行為樹節(jié)點組成,組成方式包括嵌套和順序組合。
與現(xiàn)有技術相比,本發(fā)明具有如下的有益效果:
本發(fā)明提供的自動生成行為樹代碼的方法及系統(tǒng),根據(jù)lua數(shù)據(jù)文本自動生成lua代碼,減少了大量代碼的編寫工作,讓行為樹的生成過程更加簡單易懂。從而能夠更加有效地實現(xiàn)游戲中的人工智能行為,加快游戲開發(fā)進度,便于代碼的升級和維護。
附圖說明
通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
圖1為本發(fā)明提供的自動生成行為樹代碼的方法的流程圖。
具體實施方式
下面結合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領域的技術人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應當指出的是,對本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變化和改進。這些都屬于本發(fā)明的保護范圍。
根據(jù)本發(fā)明提供的自動生成行為樹代碼的方法,包括如下步驟:
步驟1:定義需要用到的行為樹節(jié)點;每個行為樹節(jié)點都有一個列表存儲孩子節(jié)點,每個行為樹節(jié)點都有一個位置描述,所述位置描述表示在兄弟節(jié)點里面該行為樹節(jié)點所處的順序;其中,行為樹節(jié)點是指可以按照特定邏輯運行的一套代碼,行為樹節(jié)點可以嵌套,即一個行為樹節(jié)點可以嵌套若干個其他節(jié)點,運行若干個其他節(jié)點代碼,形成層級關系;
孩子節(jié)點是指:嵌套在其他節(jié)點的行為樹節(jié)點,相對于上層節(jié)點,下面一層的節(jié)點稱為孩子節(jié)點。
兄弟節(jié)點是指:相對于同一層級的節(jié)點,互相稱為兄弟節(jié)點。
所述行為樹節(jié)點包括:順序節(jié)點(按照子節(jié)點順序依次執(zhí)行,一旦某一個節(jié)點執(zhí)行失敗則返回結果);選擇節(jié)點(按照子節(jié)點順序依次執(zhí)行,一旦某一個節(jié)點執(zhí)行成功則返回),條件節(jié)點(專門用來判斷條件是否符合的節(jié)點),動作節(jié)點(執(zhí)行具體業(yè)務邏輯的節(jié)點)
步驟2:配置人工智能數(shù)據(jù)用步驟1中定義的幾種行為樹節(jié)點組成人工智能的行為樹。其中配置是指用不同的行為樹節(jié)點進行組合的文本描述。其中的數(shù)據(jù)由多個行為樹節(jié)點組成,組成方式包括嵌套和順序組合。
步驟3:加載人工智能配置文件,按照數(shù)據(jù)文本描述的各種節(jié)點以及節(jié)點之間的關系依次組建可運行的行為樹代碼,重復這個步驟進行編譯,遍歷結束后,返回創(chuàng)建的整套代碼。
任何應用行為樹技術的方案,都可以采用這種方法進行自動代碼的生成技術。所以任何應用行為樹技術的實例都可以用到。
本發(fā)明還提供了一種自動生成行為樹代碼的系統(tǒng),包括如下模塊:
定義模塊:用于定義需要用到的行為樹節(jié)點;
配置模塊:用于配置人工智能數(shù)據(jù),具體地,根據(jù)定義的行為樹節(jié)點組成人工智能的行為樹;
行為樹代碼組建模塊:用于加載人工智能配置文件,按照數(shù)據(jù)文本描述的各種節(jié)點以及節(jié)點之間的關系依次組建可運行的行為樹代碼;
遍歷模塊:用于對所有配置數(shù)據(jù)進行遍歷,遍歷結束后,返回創(chuàng)建的整套行為樹代碼。
所述定義模塊中由于每個行為樹節(jié)點都有一個列表用于存儲孩子節(jié)點,每個行為樹節(jié)點都有一個位置描述,所述位置描述表示在兄弟節(jié)點里面該行為樹節(jié)點所處的順序;其中,行為樹節(jié)點是指能夠按照特定邏輯運行的一套代碼;行為樹節(jié)點能夠相互嵌套,即一個行為樹節(jié)點能夠嵌套若干個不同的行為樹節(jié)點,形成層級關系;
孩子節(jié)點是指:嵌套在行為樹節(jié)點上的下一層級的行為樹節(jié)點,相對于上層行為樹節(jié)點,下一層的行為樹節(jié)點被稱為孩子節(jié)點;
兄弟節(jié)點是指:屬于同一層級的行為樹節(jié)點,該同一層級的行為樹節(jié)點互為兄弟節(jié)點;
具體地,所述行為樹節(jié)點包括:順序節(jié)點、選擇節(jié)點、條件節(jié)點、動作節(jié)點;
所述順序節(jié)點是指:按照順序依次執(zhí)行,一旦某一個節(jié)點執(zhí)行失敗則返回結果;
所述選擇節(jié)點是指:按照順序依次執(zhí)行,一旦某一個節(jié)點執(zhí)行成功則返回;
所述條件節(jié)點是指:用來判斷條件是否符合的節(jié)點;
所述動作節(jié)點是指:執(zhí)行具體業(yè)務邏輯的節(jié)點。
所述配置模塊中配置人工智能數(shù)據(jù)是指用不同的行為樹節(jié)點進行組合的文本描述,其中的人工智能數(shù)據(jù)由多個行為樹節(jié)點組成,組成方式包括嵌套和順序組合。
以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領域技術人員可以在權利要求的范圍內(nèi)做出各種變化或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。在不沖突的情況下,本申請的實施例和實施例中的特征可以任意相互組合。