本申請(qǐng)涉及軟件測(cè)試技術(shù)領(lǐng)域,具體而言,涉及用于對(duì)游戲中人工智能ai行為進(jìn)行測(cè)試的方法、裝置及電子設(shè)備。
背景技術(shù):
在目前的各大游戲中,不管是端游,還是手游,或多或少都存在著一些npc、副本里的怪物這些游戲角色,而這些游戲角色都有一套固定的邏輯來控制他們,讓他們模擬真實(shí)的人物行為,通常把這些游戲行為稱之為ai行為。小到一個(gè)副本的小怪,大到一個(gè)副本里的大boss,都依賴著不同復(fù)雜程度的ai行為來控制。在一個(gè)游戲中,隨著怪物的增加,boss的增加,ai行為的數(shù)量也在增加,一個(gè)大型的游戲可能包含了成百上千的不同ai行為邏輯。在游戲的開發(fā)中,一個(gè)ai行為是通過一個(gè)基于xml格式的文本來控制的,類似于計(jì)算機(jī)中常見的多叉樹結(jié)構(gòu),該xml文本以樹的結(jié)構(gòu)組織每個(gè)ai的行為邏輯,每個(gè)ai表現(xiàn)出來的每個(gè)動(dòng)作或者每個(gè)行為,都是這個(gè)ai行為樹的一個(gè)分支上的不同節(jié)點(diǎn)。每個(gè)ai行為樹,小到只有幾個(gè)分支、幾個(gè)節(jié)點(diǎn),大到幾十、幾百個(gè)分支或者節(jié)點(diǎn)。
對(duì)于一個(gè)游戲來說,保證怪物的ai行為正確無誤,是一項(xiàng)很重要的工作。但是,面對(duì)如此龐大數(shù)量的ai行為樹文件,如何高效率的進(jìn)行測(cè)試,保證所有ai行為都按照游戲設(shè)計(jì)者或者說游戲策劃的邏輯運(yùn)行,是一個(gè)游戲開發(fā)周期里相當(dāng)重要的一環(huán)。每個(gè)游戲在開發(fā)過程中,眾多行為樹也會(huì)面對(duì)不同版本時(shí)候的更新和迭代,在進(jìn)行游戲各版本的迭代回歸測(cè)試時(shí)候,靠人力來挨個(gè)驗(yàn)證和測(cè)試,是非常效率低下的。
目前在針對(duì)ai行為樹測(cè)試的方面,一種方式是靠人工把a(bǔ)i行為樹加載到游戲中,通過肉眼觀看角色行為,但是這樣針對(duì)一些涉及到數(shù)值的方面,比如范圍判斷,是只能有一個(gè)大概的范圍,無法得到準(zhǔn)確數(shù)值,人工觀察也耗費(fèi)時(shí)間,效率低下。
還有一種方式是半自動(dòng)化方式,測(cè)試人員自己定義樹的分支,將分支再自行組合成行為樹的方案。這種方式雖然在一定程度上可以幫助測(cè)試人員提高測(cè)試效率,但是存在多方面的問題。首先,在涉及到數(shù)值相關(guān)時(shí)候,無法準(zhǔn)確獲取結(jié)果,只能通過人工估算,不準(zhǔn)確,效率比較低。其次,通過自行組合可能會(huì)遺漏掉部分ai行為樹分支,導(dǎo)致測(cè)試覆蓋不全。另外,這種方式的測(cè)試邏輯不健全,未從最基本的單個(gè)行為樹組合節(jié)點(diǎn)和游戲基本功能節(jié)點(diǎn)入手開始,如果后續(xù)有用到功能有缺陷的單個(gè)節(jié)點(diǎn)的行為樹分支,該分支的執(zhí)行失敗,可能會(huì)誤導(dǎo)測(cè)試人員判斷是這條分支其他節(jié)點(diǎn)和條件的問題。而且,這種方式缺乏結(jié)果收集相關(guān)部分,在面對(duì)大量ai行為樹的情況下,不能直觀的給出各棵樹的執(zhí)行情況。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)公開測(cè)試游戲中人工智能行為的方法,以提升游戲測(cè)試中針對(duì)ai行為方面的測(cè)試效率。
本發(fā)明的其他特性和優(yōu)點(diǎn)將通過下面的詳細(xì)描述變得顯然,或部分地通過本發(fā)明的實(shí)踐而習(xí)得。
根據(jù)本發(fā)明的第一方面,提供一種測(cè)試游戲中人工智能行為的方法,包括:
對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象;
對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄;
分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試。
根據(jù)一些實(shí)施例,在對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象之前還包括:
根據(jù)所述配置文件獲取待測(cè)試的人工智能行為樹的目錄,根據(jù)所述目錄獲取所述人工智能行為樹。
根據(jù)一些實(shí)施例,所述人工智能行為樹以可擴(kuò)展標(biāo)記語言文件存儲(chǔ)。
根據(jù)一些實(shí)施例,根據(jù)所述目錄獲取所述人工智能行為樹包括:根據(jù)所述目錄獲取用于存儲(chǔ)所述人工智能行為樹的可擴(kuò)展標(biāo)記語言文件。
根據(jù)一些實(shí)施例,所述樹對(duì)象的節(jié)點(diǎn)包括用于記錄下層子節(jié)點(diǎn)集的子節(jié)點(diǎn)集屬性;
對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集包括:根據(jù)所述樹對(duì)象的節(jié)點(diǎn)的子節(jié)點(diǎn)集屬性對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集。
根據(jù)一些實(shí)施例,在分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行設(shè)置后進(jìn)行測(cè)試、以及分別對(duì)所述樹對(duì)象的執(zhí)行條件進(jìn)行設(shè)置后進(jìn)行測(cè)試之后還包括:對(duì)所述測(cè)試得到的結(jié)果進(jìn)行匯總和/或展示。
根據(jù)本發(fā)明的第二方面,提供一種測(cè)試游戲中人工智能行為的裝置,其包括:
建模單元,用于對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象;
拆分單元,用于對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄;
測(cè)試單元,用于分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試。
根據(jù)一些實(shí)施例,所述裝置還包括行為樹獲取單元,用于在對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象之前,根據(jù)所述配置文件獲取待測(cè)試的人工智能行為樹的目錄,根據(jù)所述目錄獲取所述人工智能行為樹。
根據(jù)一些實(shí)施例,所述人工智能行為樹以可擴(kuò)展標(biāo)記語言文件存儲(chǔ)。
根據(jù)一些實(shí)施例,所述行為樹獲取單元用于:根據(jù)所述目錄獲取用于存儲(chǔ)所述人工智能行為樹的可擴(kuò)展標(biāo)記語言文件。
根據(jù)一些實(shí)施例,所述樹對(duì)象的節(jié)點(diǎn)包括用于記錄下層子節(jié)點(diǎn)集的子節(jié)點(diǎn)集屬性;
所述拆分單元用于:根據(jù)所述樹對(duì)象的節(jié)點(diǎn)的子節(jié)點(diǎn)集屬性對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集。
根據(jù)一些實(shí)施例,所述裝置還包括結(jié)果處理單元,用于在分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行設(shè)置后進(jìn)行測(cè)試、以及分別對(duì)所述樹對(duì)象的執(zhí)行條件進(jìn)行設(shè)置后進(jìn)行測(cè)試之后,對(duì)所述測(cè)試得到的結(jié)果進(jìn)行匯總和/或展示。
根據(jù)本發(fā)明的第三方面,提供一種電子設(shè)備,包括:處理器;存儲(chǔ)器,存儲(chǔ)用于所述處理器控制如上述第一方面任一項(xiàng)所述操作的指令。
本申請(qǐng)的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
本實(shí)施例的技術(shù)方案通過對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象,對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄,然后分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試,以提升游戲測(cè)試中針對(duì)人工智能行為方面的測(cè)試效率。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性的,并不能限制本發(fā)明。
附圖說明
通過參照附圖詳細(xì)描述其示例實(shí)施例,本發(fā)明的上述和其它特征及優(yōu)點(diǎn)將變得更加明顯。
圖1示出了根據(jù)本發(fā)明一實(shí)施例的測(cè)試游戲中人工智能行為的方法;
圖2示出了根據(jù)本發(fā)明另一實(shí)施例的測(cè)試游戲中人工智能行為的方法;
圖3示出了根據(jù)本發(fā)明一實(shí)施例的測(cè)試游戲中人工智能行為的裝置的框圖;
圖4示出了根據(jù)本發(fā)明另一實(shí)施例的測(cè)試游戲中人工智能行為的裝置的框圖;
圖5示出了根據(jù)本發(fā)明一實(shí)施例的電子設(shè)備。
具體實(shí)施方式
現(xiàn)在將參考附圖更全面地描述示例實(shí)施例。然而,示例實(shí)施例能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的實(shí)施例;相反,提供這些實(shí)施例使得本發(fā)明將全面和完整,并將示例實(shí)施例的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。在圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對(duì)它們的重復(fù)描述。
此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個(gè)或更多實(shí)施例中。在下面的描述中,提供許多具體細(xì)節(jié)從而給出對(duì)本發(fā)明的實(shí)施例的充分理解。然而,本領(lǐng)域技術(shù)人員將意識(shí)到,可以實(shí)踐本發(fā)明的技術(shù)方案而沒有特定細(xì)節(jié)中的一個(gè)或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細(xì)示出或描述公知方法、裝置、實(shí)現(xiàn)或者操作以避免模糊本發(fā)明的各方面。
附圖中所示的方框圖僅僅是功能實(shí)體,不一定必須與物理上獨(dú)立的實(shí)體相對(duì)應(yīng)。即,可以采用軟件形式來實(shí)現(xiàn)這些功能實(shí)體,或在一個(gè)或多個(gè)硬件模塊或集成電路中實(shí)現(xiàn)這些功能實(shí)體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實(shí)現(xiàn)這些功能實(shí)體。
附圖中所示的流程圖僅是示例性說明,不是必須包括所有的內(nèi)容和操作/步驟,也不是必須按所描述的順序執(zhí)行。例如,有的操作/步驟還可以分解,而有的操作/步驟可以合并或部分合并,因此實(shí)際執(zhí)行的順序有可能根據(jù)實(shí)際情況改變。
圖1示出了根據(jù)本發(fā)明一實(shí)施例的測(cè)試游戲中人工智能行為的方法,本實(shí)施例可適用于對(duì)游對(duì)中人工智能行為進(jìn)行測(cè)試的情況,如圖1所示,本實(shí)施例所述的測(cè)試游戲中人工智能行為的方法包括:
在步驟s110中,對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象。
其中,所述人工智能行為樹可以多種方式存儲(chǔ),例如可以可擴(kuò)展標(biāo)記語言文件存儲(chǔ)。所述人工智能行為樹可根據(jù)所述配置文件獲取待測(cè)試的人工智能行為樹的目錄獲取,例如根據(jù)所述目錄獲取用于存儲(chǔ)所述人工智能行為樹的可擴(kuò)展標(biāo)記語言文件。
所述配置文件供測(cè)試人員指定目前待測(cè)試的人工智能行為樹目錄,可同時(shí)配置多個(gè)人工智能行為樹的目錄。該行為樹目錄可自由配置,存儲(chǔ)在多個(gè)目錄都可同時(shí)配置進(jìn)去,避免了目錄多后,人工排查和自由組后,遺漏某些目錄的ai樹,也方便測(cè)試人員一眼就知道目前測(cè)試的ai樹都在哪些位置,不用單獨(dú)人工記錄。
在步驟s120中,對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄。
在步驟s130中,分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試。
另外,所述樹對(duì)象的節(jié)點(diǎn)可包括用于記錄下層子節(jié)點(diǎn)集的子節(jié)點(diǎn)集屬性,若包括子節(jié)點(diǎn)集屬性,可根據(jù)所述樹對(duì)象的節(jié)點(diǎn)的子節(jié)點(diǎn)集屬性對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集。
在完成上述步驟之后,還可對(duì)所述測(cè)試得到的結(jié)果進(jìn)行匯總和/或展示。例如,針對(duì)每項(xiàng)測(cè)試執(zhí)行后的結(jié)果進(jìn)行匯總統(tǒng)計(jì),把執(zhí)行結(jié)果反饋給測(cè)試人員。
本實(shí)施例的技術(shù)方案通過對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象,對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄,然后分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試,以提升游戲測(cè)試中針對(duì)人工智能行為方面的測(cè)試效率。
圖2示出了根據(jù)本發(fā)明另一實(shí)施例的測(cè)試游戲中人工智能行為的方法,如圖2所示,本實(shí)施例所述的測(cè)試游戲中人工智能行為的方法包括:
在步驟s201中,讀取配置文件,獲取需要測(cè)試的ai行為樹目錄。
所述配置文件供測(cè)試人員指定待測(cè)試的ai樹目錄,可同時(shí)配置多個(gè)ai樹的目錄。
需要說明的是,所述配置文件可自由配置,存儲(chǔ)在多個(gè)目錄都可同時(shí)配置進(jìn)去,避免了目錄多后,人工排查和自由組后,遺漏某些目錄的ai樹,也方便測(cè)試人員一眼就知道目前測(cè)試的ai樹都在哪些位置,避免了用單獨(dú)人工記錄。
在步驟s202中,讀取單個(gè)ai行為樹的xml文件,進(jìn)行解析,建模成一棵樹的對(duì)象。
遍歷指定的ai目錄,選取第一個(gè)行為樹的xml文件,解析xml文檔,建立一個(gè)樹對(duì)象,該行為樹的每個(gè)節(jié)點(diǎn)除了自己本身的一些基本屬性外,都額外包含一個(gè)屬性:子節(jié)點(diǎn)集。通過該子節(jié)點(diǎn)集屬性,可以往下層遍歷,拿到該節(jié)點(diǎn)下層所有節(jié)點(diǎn)。
通過本步驟,可以將一個(gè)xml文本轉(zhuǎn)化為一棵多叉樹,并且每個(gè)多叉樹節(jié)點(diǎn)包含一個(gè)子節(jié)點(diǎn)集,方便之后針對(duì)樹的diff計(jì)算。
在步驟s203中,讀取單棵ai行為樹對(duì)象,開始拆分,記錄單個(gè)功能節(jié)點(diǎn)、記錄每條分支及各層級(jí)的執(zhí)行條件。
例如,讀取建模好的樹對(duì)象,開始深度優(yōu)先搜索遍歷,拆分,把樹中包含的不重復(fù)的功能節(jié)點(diǎn)和組合節(jié)點(diǎn)記錄下來,同時(shí)記錄每條分支的各層級(jí)節(jié)點(diǎn)形成單獨(dú)的分支,并記錄該分支執(zhí)行條件。
通過本步驟,能將一棵行為樹中構(gòu)成的樹節(jié)點(diǎn)拆分出來,分類,保證下一步能夠首先針對(duì)這些基本的節(jié)點(diǎn)進(jìn)行測(cè)試;另外記錄的每條分支的條件,可在接下來的分支測(cè)試時(shí)候,自動(dòng)讀取條件來設(shè)置條件。
在步驟s204中,拆分的單個(gè)節(jié)點(diǎn)的加載測(cè)試及結(jié)果獲取。
將把拆分出來的各類節(jié)點(diǎn),分別將單個(gè)加載進(jìn)游戲中,執(zhí)行,獲取單個(gè)節(jié)點(diǎn)執(zhí)行后的返回,例如執(zhí)行成功返回真(true),執(zhí)行失敗則返回假(false),直到所有拆分出來的各類節(jié)點(diǎn)均執(zhí)行完畢并獲取結(jié)果。
本步驟首先針對(duì)單個(gè)的節(jié)點(diǎn)進(jìn)行測(cè)試,記錄執(zhí)行結(jié)果,能輔助之后包含該節(jié)點(diǎn)的分支執(zhí)行結(jié)果進(jìn)行問題排除。
在步驟s205中,單個(gè)節(jié)點(diǎn)是否有剩余,若是則返回步驟s204,否則執(zhí)行步驟s206。
在步驟s206中,讀取拆分的多個(gè)分支,載入游戲執(zhí)行,獲取結(jié)果。
讀取剛拆分的多個(gè)分支,分別設(shè)置每條分支之前記錄的條件,設(shè)置條件后,執(zhí)行分支,獲取分支返回結(jié)果。
通過讀取之前記錄的每個(gè)分支執(zhí)行條件,設(shè)置后執(zhí)行拆分的每個(gè)分支,可針對(duì)每條分支進(jìn)行單獨(dú)驗(yàn)證,在最后整棵樹的執(zhí)行后,幫助定位排查問題。
在步驟s207中,判斷分支是否有剩余,若是則返回步驟s206,否則執(zhí)行步驟s208。
在步驟s208中,根據(jù)拆分時(shí)候的各分支條件,設(shè)置條件,進(jìn)行單棵ai行為樹的整體執(zhí)行,獲取每條分支是否都執(zhí)行到的情況并記錄。
本步驟用于整體執(zhí)行整棵ai行為樹,分別把剛每條分支條件遍歷設(shè)置一遍,獲取執(zhí)行結(jié)果,檢查是否每條分支都執(zhí)行到。
該步驟能確保整棵樹加載到游戲后,給定不同條件,會(huì)映射到不同分支,確保每條分支在給定相應(yīng)條件下均能覆蓋執(zhí)行到。
在步驟s209中,判斷人工智能行為ai行為樹文件是否有剩余,若是則返回步驟s203,否則執(zhí)行步驟s210。
在步驟s210中,獲取匯總結(jié)果,測(cè)試結(jié)束。
重復(fù)以上過程遍歷完其他的ai行為樹目錄。匯總結(jié)果,給出結(jié)果展示。該步驟整理之前的每棵行為樹的三種執(zhí)行結(jié)果匯總并展示,包括各類單個(gè)節(jié)點(diǎn)、單條分支和整棵樹執(zhí)行結(jié)果,直觀顯示給測(cè)試人員。
本實(shí)施例所述的技術(shù)方案,通過將游戲行為樹目錄下的多個(gè)行為樹,逐個(gè)進(jìn)行單棵行為樹進(jìn)行樹建模,把這棵樹進(jìn)行分支拆分,節(jié)點(diǎn)拆分。拆分時(shí),記錄下基本節(jié)點(diǎn)和每條分支及每條分支各層級(jí)的執(zhí)行條件;拆分后,分為兩類節(jié)點(diǎn),基本的組合節(jié)點(diǎn)和游戲中的功能節(jié)點(diǎn),首先自動(dòng)把這些節(jié)點(diǎn)加載到游戲,針對(duì)最基本單個(gè)節(jié)點(diǎn)測(cè)試;之后把每條樹的分支自動(dòng)加載到游戲中,通過獲取游戲中執(zhí)行該條分支末端節(jié)點(diǎn)的執(zhí)行返回,來判斷該條分支是否執(zhí)行成功;最后進(jìn)行整棵樹的加載,通過之前記錄的每條分支的執(zhí)行條件,逐個(gè)設(shè)置,獲取最終執(zhí)行結(jié)果,檢查每條分支是否都能執(zhí)行到。通過這樣的自動(dòng)拆分和加載及收集結(jié)果的方式,能高效地測(cè)試一個(gè)游戲里數(shù)以百計(jì)的行為樹,能夠很好解決上述所講四個(gè)不足:在涉及到數(shù)值方面的測(cè)試等時(shí)候,可準(zhǔn)確獲取數(shù)值,譬如范某范圍下執(zhí)行某個(gè)行為等,保證了數(shù)值的準(zhǔn)確性測(cè)試,避免了人工上的不準(zhǔn)確,或者說人工方法獲取該準(zhǔn)確度花費(fèi)的時(shí)間可能更大;解決了之前其他方案的自動(dòng)組合可能存在的問題,比如遺漏掉部分分支導(dǎo)致測(cè)試覆蓋不全;從最基本的單個(gè)行為樹組合節(jié)點(diǎn)和游戲基本功能節(jié)點(diǎn)入手開始到單條分支,再到整棵樹,能夠幫助后續(xù)單條分支或者整棵樹在出問題的情況下,定位問題;具有結(jié)果收集和展示部分,能直觀的展示給測(cè)試人員單棵樹的單節(jié)點(diǎn)單分支整棵樹執(zhí)行結(jié)果情況。
圖3示出了根據(jù)本發(fā)明一實(shí)施例的測(cè)試游戲中人工智能行為的裝置的框圖,如圖3所示,本實(shí)施例所述的測(cè)試游戲中人工智能行為的裝置包括建模單元310、拆分單元320、以及測(cè)試單元330。
該建模單元310被配置為,用于對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象;
該拆分單元320被配置為,用于對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄;
該測(cè)試單元330被配置為,用于分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試。
根據(jù)本發(fā)明的一些實(shí)施例,所述人工智能行為樹以可擴(kuò)展標(biāo)記語言文件存儲(chǔ)。
根據(jù)本發(fā)明的一些實(shí)施例,所述樹對(duì)象的節(jié)點(diǎn)包括用于記錄下層子節(jié)點(diǎn)集的子節(jié)點(diǎn)集屬性;
所述拆分單元320用于:根據(jù)所述樹對(duì)象的節(jié)點(diǎn)的子節(jié)點(diǎn)集屬性對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集。
關(guān)于上述實(shí)施例中的裝置,其中各個(gè)單元執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
本實(shí)施例提供的測(cè)試游戲中人工智能行為的裝置可執(zhí)行本發(fā)明實(shí)施例一和實(shí)施例二所提供的測(cè)試游戲中人工智能行為的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。
圖4示出了根據(jù)本發(fā)明另一實(shí)施例的測(cè)試游戲中人工智能行為的裝置的框圖,如圖4所示,本實(shí)施例所述的測(cè)試游戲中人工智能行為的裝置包括行為樹獲取單元410、建模單元420、拆分單元430、測(cè)試單元440、以及結(jié)果處理單元450:
該行為樹獲取單元410,用于根據(jù)所述配置文件獲取待測(cè)試的人工智能行為樹的目錄,根據(jù)所述目錄獲取所述人工智能行為樹。
該建模單元420被配置為,用于對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象。
該拆分單元430被配置為,用于對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄。
該測(cè)試單元440被配置為,用于分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試。
該結(jié)果處理單元450被配置為,用于在分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行設(shè)置后進(jìn)行測(cè)試、以及分別對(duì)所述樹對(duì)象的執(zhí)行條件進(jìn)行設(shè)置后進(jìn)行測(cè)試之后,對(duì)所述測(cè)試得到的結(jié)果進(jìn)行匯總和/或展示。
根據(jù)本發(fā)明的一些實(shí)施例,所述人工智能行為樹以可擴(kuò)展標(biāo)記語言文件存儲(chǔ)。
根據(jù)本發(fā)明的一些實(shí)施例,所述行為樹獲取單元410用于:根據(jù)所述目錄獲取用于存儲(chǔ)所述人工智能行為樹的可擴(kuò)展標(biāo)記語言文件。
根據(jù)本發(fā)明的一些實(shí)施例,所述樹對(duì)象的節(jié)點(diǎn)包括用于記錄下層子節(jié)點(diǎn)集的子節(jié)點(diǎn)集屬性;
所述拆分單元430用于:根據(jù)所述樹對(duì)象的節(jié)點(diǎn)的子節(jié)點(diǎn)集屬性對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集。
本實(shí)施例提供的測(cè)試游戲中人工智能行為的裝置可執(zhí)行本發(fā)明方法實(shí)施例所提供的測(cè)試游戲中人工智能行為的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。
圖5示出了根據(jù)本發(fā)明一實(shí)施例的電子設(shè)備,如圖5所示,電子設(shè)備500可包括處理器510、存儲(chǔ)器520、發(fā)射器530及接收器540。
存儲(chǔ)器520可存儲(chǔ)用于處理器510控制操作處理的指令。存儲(chǔ)器520可包括易失性或非易失性存儲(chǔ)器,如靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、可擦除可編程只讀存儲(chǔ)器(eprom)、可編程只讀存儲(chǔ)器(prom)、只讀存儲(chǔ)器(rom)等,本發(fā)明對(duì)此沒有限制。
處理器510可調(diào)用存儲(chǔ)器520中存儲(chǔ)的指令控制相關(guān)操作。根據(jù)一實(shí)施例,存儲(chǔ)器520存儲(chǔ)用于處理器510控制以下操作的指令:
對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象;
對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄;
分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試。
易于理解,存儲(chǔ)器520還可存儲(chǔ)用于處理器510控制根據(jù)本發(fā)明實(shí)施例的其他操作的指令,這里不再贅述。
處理器510還可控制發(fā)射器530和接收器540進(jìn)行信號(hào)收發(fā)等。
通過以上的詳細(xì)描述,本領(lǐng)域的技術(shù)人員易于理解,根據(jù)本發(fā)明實(shí)施例的系統(tǒng)和方法具有以下優(yōu)點(diǎn)中的一個(gè)或多個(gè)。
根據(jù)本發(fā)明的實(shí)施例,在對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象之前還包括:根據(jù)所述配置文件獲取待測(cè)試的人工智能行為樹的目錄,根據(jù)所述目錄獲取所述人工智能行為樹。
根據(jù)本發(fā)明的一些實(shí)施例,所述樹對(duì)象的節(jié)點(diǎn)包括用于記錄下層子節(jié)點(diǎn)集的子節(jié)點(diǎn)集屬性;對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集包括:根據(jù)所述樹對(duì)象的節(jié)點(diǎn)的子節(jié)點(diǎn)集屬性對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集。
根據(jù)本發(fā)明的實(shí)施例,在分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行設(shè)置后進(jìn)行測(cè)試、以及分別對(duì)所述樹對(duì)象的執(zhí)行條件進(jìn)行設(shè)置后進(jìn)行測(cè)試之后還包括:對(duì)所述測(cè)試得到的結(jié)果進(jìn)行匯總和/或展示。
根據(jù)一些實(shí)施例,本發(fā)明還提供一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如包括指令的存儲(chǔ)器,上述指令可由裝置的處理器執(zhí)行以完成上述方法。例如,非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是rom、隨機(jī)存取存儲(chǔ)器(ram)、cd-rom、磁帶、軟盤和光數(shù)據(jù)存儲(chǔ)設(shè)備等。當(dāng)存儲(chǔ)介質(zhì)中的指令由終端的處理器執(zhí)行時(shí),使得終端能夠執(zhí)行下述方法:對(duì)配置文件中的人工智能行為樹進(jìn)行建模得到樹對(duì)象;對(duì)所述樹對(duì)象進(jìn)行節(jié)點(diǎn)拆分得到節(jié)點(diǎn)集,以及對(duì)所述樹對(duì)象進(jìn)行分支拆分得到分支集,并分別對(duì)所述分支集中的分支的執(zhí)行條件進(jìn)行記錄;分別將所述節(jié)點(diǎn)集中的節(jié)點(diǎn)加載到所述游戲中進(jìn)行測(cè)試、分別將所述分支集中的分支設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試、以及將所述樹對(duì)象分別設(shè)置所記錄的所述執(zhí)行條件后加載到所述游戲中進(jìn)行測(cè)試。
本領(lǐng)域技術(shù)人員可以理解,附圖只是示例實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的,因此不能用于限制本發(fā)明的保護(hù)范圍。
本領(lǐng)域技術(shù)人員可以理解上述各模塊可以按照實(shí)施例的描述分布于裝置中,也可以進(jìn)行相應(yīng)變化唯一不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
以上具體地示出和描述了本發(fā)明的示例性實(shí)施例。應(yīng)該理解,本發(fā)明不限于所公開的實(shí)施例,相反,本發(fā)明意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效布置。