本公開涉及軟件測試技術(shù)領(lǐng)域,具體而言,涉及一種故障節(jié)點定位方法以及一種故障節(jié)點定位裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)游戲也越來越受到歡迎。但是,不管是端游還是手游,都可以包括一些類似于NPC(Non-Player-Controlled Character,非玩家控制角色)、副本里的怪物等游戲角色,而這些游戲角色都可以利用一套固定的邏輯來進行控制,使得這些游戲角色可以模擬真實的人物行為。上述游戲行為可以被稱之為AI(人工智能,Artificial Intelligence)行為。
在任一游戲中,小到一個副本的小怪,大到一個副本里的大BOSS,都可以利用不同復(fù)雜程度的AI行為來控制。并且,隨著小怪以及大BOSS數(shù)量的增加,AI行為的數(shù)量也在增加;因此,一個大型的游戲可能包含有成百上千個不同的AI行為邏輯。在游戲的開發(fā)中,一個AI行為可以通過一個基于XML(可擴展標(biāo)記語言,Extensible Markup Language)格式的文本來進行控制,類似于計算機中常見的多叉樹結(jié)構(gòu),該XML文本以樹的結(jié)構(gòu)組織每個AI的行為邏輯;并且,每個AI表現(xiàn)出來的每個動作或者每個行為,都是這個AI行為樹的一個分支上的不同節(jié)點;每個AI行為樹可以包括幾個分支或者幾個節(jié)點;也可以包括幾十、幾百個分支或者節(jié)點。
對于一個游戲來說,保證小怪或者大BOSS的AI行為正確無誤是非常重要的。因此,為了保證小怪或者大BOSS的AI行為正確無誤,在游戲正式上線之前,是需要經(jīng)過測試的。那么,如果當(dāng)一個測試人員發(fā)現(xiàn)某一AI行為有異常或者不正確的時候,如何定位該AI行為的BUG,尤其在游戲上線前,當(dāng)你面對一個分支和節(jié)點非常龐大的AI行為樹時,如何高效率地定位到BUG,是相當(dāng)重要的。
需要說明的是,在上述背景技術(shù)部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實現(xiàn)要素:
本公開的目的在于提供一種故障節(jié)點定位方法以及一種故障節(jié)點定位裝置,進而至少在一定程度上克服由于相關(guān)技術(shù)的限制和缺陷而導(dǎo)致的一個或者多個問題。
根據(jù)本公開的一個方面,提供一種故障節(jié)點定位方法,包括:
利用一網(wǎng)絡(luò)消息服務(wù)器接收一測試客戶端發(fā)送的包括與待運行行為樹關(guān)聯(lián)的行為樹標(biāo)識以及與待運行行為樹關(guān)聯(lián)的運行方式的RPC信息;
通過所述網(wǎng)絡(luò)消息服務(wù)器將所述RPC信息發(fā)送至一行為樹運行服務(wù)器中,并由所述行為樹運行服務(wù)器根據(jù)所述行為樹標(biāo)識獲取待運行行為樹;以及
利用所述行為樹運行服務(wù)器將所述待運行行為樹加載至一NPC場景中,并根據(jù)所述運行方式運行所述待運行行為樹以得到一與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果;
利用所述網(wǎng)絡(luò)消息服務(wù)器接收所述運行結(jié)果并將所述運行結(jié)果發(fā)送至所述測試客戶端以使得所述測試客戶端對所述運行結(jié)果進行差異性的繪制并根據(jù)繪制后的運行結(jié)果定位故障節(jié)點。
在本公開的一種示例性實施例中,所述運行方式包括單步聯(lián)機執(zhí)行單次行為樹運行、多步聯(lián)機執(zhí)行單次行為樹運行、單步聯(lián)機執(zhí)行多次行為樹運行以及多步聯(lián)機執(zhí)行多次行為樹運行中的一種或多種。
在本公開的一種示例性實施例中,根據(jù)所述運行方式運行所述待運行行為樹并得到一與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果包括:
根據(jù)所述運行方式運行所述待運行行為樹,并對所述待運行行為樹上已經(jīng)運行的各節(jié)點進行標(biāo)識;
當(dāng)所述待運行行為樹上的各所述節(jié)點均完成標(biāo)識時,得到與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果。
在本公開的一種示例性實施例中,在根據(jù)所述運行方式運行所述待運行行為樹前還包括:
為所述待運行行為樹配置一預(yù)設(shè)運行時間以及一預(yù)設(shè)間隔運行時間。
在本公開的一種示例性實施例中,在得到與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果后還包括:
將與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果發(fā)送至一網(wǎng)絡(luò)消息服務(wù)器中。
在本公開的一種示例性實施例中,所述故障節(jié)點定位方法還包括:
為游戲客戶端配置一IP地址以及一端口號并將所述IP地址以及所述端口號發(fā)送至所述測試客戶端;
當(dāng)所述測試客戶端開啟時,通過所述IP地址以及所述端口號建立與所述游戲客戶端的連接。
在本公開的一種示例性實施例中,所述故障節(jié)點定位方法還包括:
刪除所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支無關(guān)的其他分支。
在本公開的一種示例性實施例中,所述故障節(jié)點定位方法還包括:
為所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支增加阻礙節(jié)點。
在本公開的一種示例性實施例中,所述故障節(jié)點定位方法還包括:
為所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支增加輸入和/或輸出節(jié)點。
根據(jù)本公開的一個方面,提供一種故障節(jié)點定位裝置,包括:
測試客戶端,用于向網(wǎng)絡(luò)消息服務(wù)器發(fā)送包括與待運行行為樹關(guān)聯(lián)的行為樹標(biāo)識以及與待運行行為樹關(guān)聯(lián)的運行方式的RPC信息;
網(wǎng)絡(luò)消息服務(wù)器,用于接收所述RPC信息并將所述RPC信息發(fā)送至一行為樹運行服務(wù)器中;
行為樹運行服務(wù)器,用于接收所述RPC信息并根據(jù)所述行為樹標(biāo)識獲取待運行行為樹,以及,將所述待運行行為樹加載至一NPC場景中,然后根據(jù)所述運行方式運行所述待運行行為樹并得到一與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果;
所述網(wǎng)絡(luò)消息服務(wù)器還用于,獲取所述運行結(jié)果并將所述運行結(jié)果發(fā)送至所述測試客戶端以使得所述測試客戶端對所述運行結(jié)果進行差異性的繪制并根據(jù)繪制后的運行結(jié)果定位故障節(jié)點。
在本公開的一種示例性實施例中,所述運行方式包括單步聯(lián)機執(zhí)行單次行為樹運行、多步聯(lián)機執(zhí)行單次行為樹運行、單步聯(lián)機執(zhí)行多次行為樹運行以及多步聯(lián)機執(zhí)行多次行為樹運行中的一種或多種。
在本公開的一種示例性實施例中,根據(jù)所述運行方式運行所述待運行行為樹并得到一與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果包括:
根據(jù)所述運行方式運行所述待運行行為樹,并對所述待運行行為樹上已經(jīng)運行的各節(jié)點進行標(biāo)識;
當(dāng)所述待運行行為樹上的各所述節(jié)點均完成標(biāo)識時,得到與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果。
在本公開的一種示例性實施例中,在根據(jù)所述運行方式運行所述待運行行為樹前還包括:
為所述待運行行為樹配置一預(yù)設(shè)運行時間以及一預(yù)設(shè)間隔運行時間。
在本公開的一種示例性實施例中,在得到與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果后還包括:
將與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果發(fā)送至一網(wǎng)絡(luò)消息服務(wù)器中。
在本公開的一種示例性實施例中,所述故障節(jié)點定位裝置還包括:
配置模塊,用于為游戲客戶端配置一IP地址以及一端口號并將所述IP地址以及所述端口號發(fā)送至所述測試客戶端;
連接模塊,用于當(dāng)所述測試客戶端開啟時,通過所述IP地址以及所述端口號建立與所述游戲客戶端的連接。
在本公開的一種示例性實施例中,所述故障節(jié)點定位裝置還包括:
刪除模塊,用于刪除所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支無關(guān)的其他分支。
在本公開的一種示例性實施例中,所述故障節(jié)點定位裝置還包括:
第一節(jié)點增加模塊,用于為所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支增加阻礙節(jié)點。
在本公開的一種示例性實施例中,所述故障節(jié)點定位裝置還包括:
第二節(jié)點增加模塊,用于為所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支增加輸入和/或輸出節(jié)點。
本公開一種故障節(jié)點定位方法及裝置,通過接收一測試客戶端發(fā)送的RPC信息然后將RPC信息發(fā)送至一行為樹運行服務(wù)器中,行為樹運行服務(wù)器接收RPC信息后根據(jù)行為樹標(biāo)識獲取待運行行為樹然后將待運行行為樹加載至一NPC場景中,并根據(jù)運行方式運行待運行行為樹后得到一運行結(jié)果;將運行結(jié)果發(fā)送至測試客戶端以使得測試客戶端對運行結(jié)果進行差異性的繪制并根據(jù)繪制后的運行結(jié)果定位故障節(jié)點;一方面,通過按照預(yù)設(shè)的運行方式運行待運行行為樹并得到運行結(jié)果,使得測試人員可以得到預(yù)期的運行結(jié)果,更加快速的定位到故障節(jié)點,提高了故障節(jié)點的定位速度,節(jié)省了時間成本;另一方面,測試客戶端獲取運行結(jié)果后對運行結(jié)果進行差異性的繪制,使得測試人員可以直接的找出所有的故障節(jié)點,避免了故障節(jié)點的遺漏,使得游戲的運行更加順暢,提高了用戶體驗;進一步的,通過發(fā)送RPC信息,采用遠程過程調(diào)用協(xié)議進行通信,不但可以保證測試客戶端以及游戲客戶端的安全,而且可以實現(xiàn)跨語言平臺調(diào)用,使得測試更加方便。
本公開一種故障節(jié)點定位方法及裝置,通過為行為樹設(shè)置運行時間以及間隔運行時間,使得行為樹可以停止在某一步或者某一次思考,調(diào)試定位故障節(jié)點也更加容易;并且,行為樹在執(zhí)行完上一次運行后,可以間隔一段時間再進行下一次運行,使得測試人員可以在此段間隔時間內(nèi)進行修正,提高了測試人員的效率。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。顯而易見地,下面描述中的附圖僅僅是本公開的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示意性示出一種故障節(jié)點定位方法的流程圖。
圖2示意性示出一種待運行行為樹的示例圖。
圖3示意性示出待運行行為樹運行的方法流程圖。
圖4示意性示出一種待運行行為樹的運行結(jié)果圖。
圖5示意性示出預(yù)設(shè)運行時間以及預(yù)設(shè)間隔時間設(shè)置的示例圖。
圖6示意性示出另一種故障節(jié)點定位方法的流程圖。
圖7示意性示出另一種待運行行為樹的示例圖。
圖8示意性示出一種為待運行行為樹增加阻礙節(jié)點的示例圖。
圖9示意性示出一種故障節(jié)點定位裝置的方框圖。
具體實施方式
現(xiàn)在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實施方式使得本公開將更加全面和完整,并將示例實施方式的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施方式中。在下面的描述中,提供許多具體細節(jié)從而給出對本公開的實施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本公開的技術(shù)方案而省略所述特定細節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知技術(shù)方案以避免喧賓奪主而使得本公開的各方面變得模糊。
此外,附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。附圖中所示的一些方框圖是功能實體,不一定必須與物理或邏輯上獨立的實體相對應(yīng)??梢圆捎密浖问絹韺崿F(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。
本示例實施方式中首先提供了一種故障節(jié)點定位方法。參考圖1所示,該故障節(jié)點定位方法可以包括以下步驟:
步驟S110.利用一網(wǎng)絡(luò)消息服務(wù)器接收一測試客戶端發(fā)送的包括與待運行行為樹關(guān)聯(lián)的行為樹標(biāo)識以及與待運行行為樹關(guān)聯(lián)的運行方式的RPC信息。
步驟S120.通過所述網(wǎng)絡(luò)消息服務(wù)器將所述RPC信息發(fā)送至一行為樹運行服務(wù)器中,并由所述行為樹運行服務(wù)器根據(jù)所述行為樹標(biāo)識獲取待運行行為樹。
步驟S130.利用所述行為樹運行服務(wù)器將所述待運行行為樹加載至一NPC場景中,并根據(jù)所述運行方式運行所述待運行行為樹以得到一與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果。
步驟S140.利用所述網(wǎng)絡(luò)消息服務(wù)器接收所述運行結(jié)果并將所述運行結(jié)果發(fā)送至所述測試客戶端以使得所述測試客戶端對所述運行結(jié)果進行差異性的繪制并根據(jù)繪制后的運行結(jié)果定位故障節(jié)點。
在上述故障節(jié)點定位方法中,一方面,通過按照預(yù)設(shè)的運行方式運行待運行行為樹并得到運行結(jié)果,使得測試人員可以得到預(yù)期的運行結(jié)果,更加快速的定位到故障節(jié)點,提高了故障節(jié)點的定位速度,節(jié)省了時間成本;另一方面,測試客戶端獲取運行結(jié)果后對運行結(jié)果進行差異性的繪制,使得測試人員可以直接的找出所有的故障節(jié)點,避免了故障節(jié)點的遺漏,使得游戲的運行更加順暢,提高了用戶體驗;進一步的,通過發(fā)送RPC信息,采用遠程過程調(diào)用協(xié)議進行通信,不但可以保證測試客戶端以及游戲客戶端的安全,而且可以實現(xiàn)跨語言平臺調(diào)用,使得測試更加方便。
下面,將對本示例實施方式中上述故障節(jié)點定位方法的各步驟進行詳細的說明。
在步驟S110中,利用一網(wǎng)絡(luò)消息服務(wù)器接收一測試客戶端發(fā)送的包括與待運行行為樹關(guān)聯(lián)的行為樹標(biāo)識以及與待運行行為樹關(guān)聯(lián)的運行方式的RPC信息。
在本示例實施方式中,上述測試客戶端例如可以是AI Debug(Artificial Intelligence Debug,人工智能消除故障)客戶端;上述RPC(Remote Procedure Call Protocol,遠程過程調(diào)用協(xié)議)信息例如可以包括行為樹標(biāo)識、運行方式;也可以包括函數(shù)名、發(fā)送/接收消息等,本示例實施方式對此不做特殊限制;上述運行方式例如可以包括單步聯(lián)機執(zhí)行單次行為樹運行、多步聯(lián)機執(zhí)行單次行為樹運行、單步聯(lián)機執(zhí)行多次行為樹運行以及多步聯(lián)機執(zhí)行多次行為樹運行等等,本示例實施方式對此不做特殊限制。在本示例中,首先開啟測試客戶端(即AI Debug),然后將包括上述行為樹標(biāo)識(例如可以是目標(biāo)行為樹ID)以及上述運行方式(例如可以是單步聯(lián)機執(zhí)行單次行為樹運行)的RPC信息發(fā)送至網(wǎng)絡(luò)消息服務(wù)器(例如可以是Http Server)中。
在步驟S120中,通過所述網(wǎng)絡(luò)消息服務(wù)器將所述RPC信息發(fā)送至一行為樹運行服務(wù)器中,并由所述行為樹運行服務(wù)器根據(jù)所述行為樹標(biāo)識獲取待運行行為樹。
在本示例實施方式中,例如,可以通過Http Server將上述RPC信息發(fā)送至行為樹運行服務(wù)器(AI Runner)中;AI Runner接收RPC信息后,根據(jù)上述行為樹標(biāo)識獲取待運行行為樹,該待運行行為樹可以參考圖2所示。
在步驟S130中,利用所述行為樹運行服務(wù)器將所述待運行行為樹加載至一NPC場景中,并根據(jù)所述運行方式運行所述待運行行為樹以得到一與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果。參考圖3所示,運行上述待運行行為樹可以包括步驟S1302~S1304。其中:
在步驟S1302中,根據(jù)所述運行方式運行所述待運行行為樹,并對所述待運行行為樹上已經(jīng)運行的各節(jié)點進行標(biāo)識。
在本示例實施方式中,當(dāng)AI Runner接收到上述RPC信息后,將上述待運行行為樹加載至NPC場景中,然后根據(jù)上述運行方式運行該待運行行為樹;進一步的,每執(zhí)行成功待運行行為樹上的一個節(jié)點后,就為該節(jié)點打上一個成功標(biāo)記;對執(zhí)行失敗的節(jié)點,為該節(jié)點打上失敗標(biāo)記;更進一步的,為了使得待運行行為樹可以在運行的過程中,停止在某一步或者某一次運行上,可以為待運行行為樹設(shè)置一預(yù)設(shè)運行時間(Duration),該預(yù)設(shè)運行時間例如可以是3s、5s或者10s等等,可以根據(jù)實際需要自行調(diào)整,本示例對此不做特殊限制;更進一步的,為了可以較為容易的調(diào)試定位,在上一次運行完畢后不立即執(zhí)行下一次運行,可以為待運行行為樹設(shè)置一預(yù)設(shè)間隔運行時間(Interval),該預(yù)設(shè)間隔運行時例如可以是30s、1min或者2min等等,可以根據(jù)實際需要自行調(diào)整,本示例對此不做特殊限制。詳細而言:
當(dāng)AI Runner接收到上述RPC信息后,將上述待運行行為樹加載至NPC中,然后根據(jù)上述運行方式(例如是單步聯(lián)機執(zhí)行單次行為樹運行)運行該待運行行為樹;然后,每執(zhí)行成功待運行行為樹上的一個節(jié)點后,就為該節(jié)點打上一個成功標(biāo)記;對執(zhí)行失敗的節(jié)點,為該節(jié)點打上失敗標(biāo)記;參考圖4所示,待運行行為樹中運行成功的節(jié)點可以以底色為灰色的標(biāo)識進行標(biāo)記,運行失敗的節(jié)點可以以底色為白色的標(biāo)識進行標(biāo)記;此外,在本公開的其他示例實施方式中,也可以以其他的標(biāo)識分別對運行成功的節(jié)點以及運行失敗的節(jié)點進行標(biāo)記,本示例實施方式對此不做特殊限制。進一步的,當(dāng)上述運行方式為多步聯(lián)機執(zhí)行多次行為樹運行時,首先設(shè)置該待運行行為樹的預(yù)設(shè)運行時間(例如可以是10s)以及預(yù)設(shè)間隔預(yù)設(shè)時間(例如可以是1min),參考圖5所示,點擊頁面上的Log按鈕,然后設(shè)置Duration為10s,Interval為1min,設(shè)置完成后,點擊Accept按鈕使得待運行行為樹按照多步聯(lián)機執(zhí)行多次行為樹運行的方式運行,然后運行10s后停止運行并得到運行結(jié)果;然后間隔1min后,繼續(xù)運行該待運行行為樹;最終,將所有的運行結(jié)果匯總,然后分頁查看各運行結(jié)果,使得測試人員可以更加方便的看到各部分的運行結(jié)果,同時也提高了測試的效率。
在步驟S1304中,當(dāng)所述待運行行為樹上的各所述節(jié)點均完成標(biāo)識時,得到與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果。
在本示例實施方式中,當(dāng)運行完該待運行行為樹上的所有節(jié)點并對該待運行行為書上的所有節(jié)點都完成標(biāo)識時,得到一運行結(jié)果;進一步的,將包括該運行結(jié)果的RPC信息發(fā)送至Http Server中。
在步驟S140中,利用所述網(wǎng)絡(luò)消息服務(wù)器接收所述運行結(jié)果并將所述運行結(jié)果發(fā)送至所述測試客戶端以使得所述測試客戶端對所述運行結(jié)果進行差異性的繪制并根據(jù)繪制后的運行結(jié)果定位故障節(jié)點。
具體而言:Http Server接收到該運行結(jié)果后,再將包括該運行結(jié)果的RPC信息發(fā)送至AI Debug客戶端;當(dāng)AI Debug客戶端接收到該運行結(jié)果后,利用AI樹編輯器將該運行結(jié)果進行差異性的繪制,以可視化樹的方式將執(zhí)行過的分支和未執(zhí)行過的分支以顏色(也可以是圖形或者其他標(biāo)識)進行標(biāo)記,使得測試人員可以直觀的觀察到具體的執(zhí)行結(jié)果,進而具體的定位到出現(xiàn)故障的節(jié)點。此外,在本公開的其他示例性實施例中,也可以根據(jù)實際情況以其他的方式處理上述運行結(jié)果以使得測試人員可以更加直觀的觀察到具體的執(zhí)行結(jié)果,本示例性實施例中對此不做特殊限定。
本示例實施方式還提供了另一種故障節(jié)點定位方法。參考圖6所示,該故障幾點定位方法包括步驟S610以及步驟S620。其中:
在步驟S610中,為游戲客戶端配置一IP地址以及一端口號并將所述IP地址以及所述端口號發(fā)送至所述測試客戶端。
在本示例實施方式中,為了使得AI Debug客戶端與游戲客戶端之間更加方便的建立連接,可以為游戲客戶端配置一IP地址以及一端口號;并將配置好的IP地址以及端口號發(fā)送至AI Debug客戶端。
在步驟S620中,當(dāng)所述測試客戶端開啟時,通過所述IP地址以及所述端口號建立與所述游戲客戶端的連接。
在本示例實施方式中,當(dāng)AI Debug客戶端接收到上述IP地址以及端口號后,每一次AI Debug客戶端開啟時可以直接輸入IP地址以及端口號建立AI Debug客戶端與游戲客戶端之間的連接。此外,在本公開的其他示例性實施例中,也可以根據(jù)實際情況以其他的方式建立AI Debug客戶端與游戲客戶端之間的連接,本示例性實施例中對此不做特殊限定。
在本公開的另一種示例實施方式中,為了提高測試速度,可以刪除上述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支無關(guān)的其他分支;具體而言:為了縮小執(zhí)行范圍,可以刪除上述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支無關(guān)且運行正常的分支,然后單獨執(zhí)行該與待定位故障節(jié)點關(guān)聯(lián)的分支;
進一步的,為了防止NPC進入其他分支,可以為上述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支增加阻礙節(jié)點;具體而言:
在與待定位故障節(jié)點關(guān)聯(lián)的分支左右,增加阻礙節(jié)點(例如可以是AlwaysTrue節(jié)點或者AlwaysFalse節(jié)點等等);使得在NPC即將進入其他分支時,會直接返回AlwaysTrue節(jié)點或者AlwaysFalse節(jié)點,以此來提醒測試人員。
更進一步的,為了方便確認待運行行為樹中需要執(zhí)行的節(jié)點是否執(zhí)行到以及是否執(zhí)行成功,可以在與該待執(zhí)行節(jié)點關(guān)聯(lián)的分支前后分別加入輸入和/或輸出節(jié)點;具體而言:
參考圖7所示,例如,需要在待運行行為樹中執(zhí)行一個“距離小于20”的節(jié)點,為了確認已經(jīng)執(zhí)行到“距離小于20”的節(jié)點或者確認“距離小于20”的節(jié)點已經(jīng)執(zhí)行,可以在“距離小于20”的節(jié)點前后加入一DebugMessage節(jié)點,然后分別填寫信息字符串“BeforeTest”以及“BeforeCheck”等(參考圖8所示),然后保存上述待運行行為樹,并將保存后的待運行行為樹重新加載至NPC中,若在執(zhí)行的過程中,兩個DebugMessage節(jié)點“BeforeTest”以及“BeforeCheck”均打印成功后,則證明“距離小于20”的節(jié)點執(zhí)行成功。
此外,盡管在附圖中以特定順序描述了本公開中方法的各個步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實現(xiàn)期望的結(jié)果。附加的或備選的,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,以及/或者將一個步驟分解為多個步驟執(zhí)行等。
本示例實施方式還提供了一種故障節(jié)點定位裝置。參考圖9所示,該故障節(jié)點定位裝置可以包括:測試客戶端910、網(wǎng)絡(luò)消息服務(wù)器920以及行為樹運行服務(wù)器930。其中:
測試客戶端910,用于向網(wǎng)絡(luò)消息服務(wù)器發(fā)送包括與待運行行為樹關(guān)聯(lián)的行為樹標(biāo)識以及與待運行行為樹關(guān)聯(lián)的運行方式的RPC信息;
網(wǎng)絡(luò)消息服務(wù)器920,用于接收所述RPC信息并將所述RPC信息發(fā)送至一行為樹運行服務(wù)器中;
行為樹運行服務(wù)器930,用于接收所述RPC信息并根據(jù)所述行為樹標(biāo)識獲取待運行行為樹,以及,將所述待運行行為樹加載至一NPC場景中,然后根據(jù)所述運行方式運行所述待運行行為樹并得到一與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果;
所述網(wǎng)絡(luò)消息服務(wù)器920還用于,獲取所述運行結(jié)果并將所述運行結(jié)果發(fā)送至所述測試客戶端以使得所述測試客戶端對所述運行結(jié)果進行差異性的繪制并根據(jù)繪制后的運行結(jié)果定位故障節(jié)點。
在本示例實施方式中,所述運行方式包括單步聯(lián)機執(zhí)行單次行為樹運行、多步聯(lián)機執(zhí)行單次行為樹運行、單步聯(lián)機執(zhí)行多次行為樹運行以及多步聯(lián)機執(zhí)行多次行為樹運行中的一種或多種。
在本示例實施方式中,根據(jù)所述運行方式運行待運行行為樹后得到一與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果包括:
將所述RPC信息發(fā)送至一行為樹運行服務(wù)器中;所述行為樹運行服務(wù)器接收所述RPC信息并根據(jù)所述運行方式運行所述待運行行為樹,并對所述待運行行為樹上已經(jīng)運行的各節(jié)點進行標(biāo)識;當(dāng)所述待運行行為樹上的各所述節(jié)點均完成標(biāo)識時,得到與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果。
在本示例實施方式中,在根據(jù)所述運行方式運行所述待運行行為樹前還包括:
為所述待運行行為樹配置一預(yù)設(shè)運行時間以及一預(yù)設(shè)間隔運行時間。
在本示例實施方式中,在得到與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果后還包括:
將與所述待運行行為樹關(guān)聯(lián)的運行結(jié)果發(fā)送至一網(wǎng)絡(luò)消息服務(wù)器中。
在本示例實施方式中,所述故障節(jié)點定位裝置還包括:
配置模塊可以用于為游戲客戶端配置一IP地址以及一端口號并將所述IP地址以及所述端口號發(fā)送至所述測試客戶端。
連接模塊可以用于當(dāng)所述測試客戶端開啟時,通過所述IP地址以及所述端口號建立與所述游戲客戶端的連接。
在本示例實施方式中,所述故障節(jié)點定位裝置還包括:
刪除模塊可以用于刪除所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支無關(guān)的其他分支。
在本示例實施方式中,所述故障節(jié)點定位裝置還包括:
第一節(jié)點增加模塊可以用于為所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支增加阻礙節(jié)點。
在本示例實施方式中,所述故障節(jié)點定位裝置還包括:
第二節(jié)點增加模塊:用于為所述待運行行為樹中與待定位故障節(jié)點關(guān)聯(lián)的分支增加輸入和/或輸出節(jié)點。
上述故障節(jié)點定位裝置中各模塊的具體細節(jié)已經(jīng)在對應(yīng)的故障節(jié)點定位方法中進行了詳細想描述,因此此處不再贅述。
應(yīng)當(dāng)注意,盡管在上文詳細描述中提及了用于動作執(zhí)行的設(shè)備的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據(jù)本公開的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進一步劃分為由多個模塊或者單元來具體化。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM,U盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、移動終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實施方式的方法。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由所附的權(quán)利要求指出。