專利名稱:一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性ai的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI (Artificial Intelligence,即 人工智能)的方法,特別涉及一種用C#(C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語言。它包括了諸如單一繼承、接口、與Java幾乎同樣的語 法和編譯成中間代碼再運(yùn)行的過程,是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。)技術(shù)實(shí) 現(xiàn)的在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI的方法。
背景技術(shù):
在網(wǎng)絡(luò)游戲中,經(jīng)常會(huì)有用戶因?yàn)楦鞣N原因掉線或者在牌型很簡(jiǎn)單的情況下主動(dòng) 托管給計(jì)算機(jī)自動(dòng)處理,另外還有可能在游戲人數(shù)不夠時(shí),為了使游戲能正常進(jìn)行,也需要 補(bǔ)充一些AI來與真人進(jìn)行游戲。而一般在這些不同的狀況下,應(yīng)該為用戶提供不同智商的 AI代替用戶操作。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI的方 法,它可以進(jìn)行靈活配置以使得在不同情況下,能夠?yàn)橛脩籼峁┎煌腁I服務(wù)。本發(fā)明所述的一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI的方法,該方法至少包括如 下的步驟步驟1 寫一個(gè)AI接口,所有類型的AI必須實(shí)現(xiàn)此接口 ;步驟2 使用房間配置工具在每個(gè)游戲房間中配置Al,對(duì)每一種客戶端“不能出牌 的狀態(tài)”配置AI實(shí)現(xiàn)類的全名和此類此AI實(shí)現(xiàn)類所在的程序集名稱,并將這些配置信息將 寫入數(shù)據(jù)庫(kù)或者配置文件;步驟3 當(dāng)房間啟動(dòng)的時(shí)候,初始化一個(gè)AI配置緩存器,它把房間的AI配置信息 讀入內(nèi)存,進(jìn)行緩存;步驟4:當(dāng)有用戶的狀態(tài)因?yàn)榫W(wǎng)絡(luò)斷掉等異常情況變成“不能出牌的狀態(tài)”的時(shí) 候,房間服務(wù)器根據(jù)用戶狀態(tài),從AI配置緩存器中獲取AI的類全名;步驟5 房間服務(wù)器以AI類的全名為傳入?yún)?shù),從AI工廠中獲取一個(gè)AI實(shí)例;步驟6 房間服務(wù)器調(diào)用此AI實(shí)例的方法,完成AI操作;本發(fā)明所述的一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI的方法,房間服務(wù)器以AI類 的全名為傳入?yún)?shù),從AI工廠中獲取一個(gè)AI實(shí)例,其步驟為步驟51 :AI工廠類從緩存的AI字典列表中,以AI類的全名為鍵,查找是否有緩存 過的AI對(duì)象;步驟52 如果已經(jīng)有緩存的對(duì)象,直接返回給調(diào)用者;步驟53 如果沒有緩存的對(duì)象,從房間的AI緩存配置中讀取此類全名所在的程序 集,根據(jù)這些信息,用反射的方式生成一個(gè)AI對(duì)象;步驟54 把生成的AI對(duì)象緩存在AI工廠的AI字典列表中,并把此對(duì)象返回給調(diào)用者;本發(fā)明涉及的一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI的方法,使得AI的實(shí)現(xiàn)完全 是可配置的,并且這種可配置的AI可以以插件的方式附加到游戲服務(wù)器中,修改一個(gè)已有 的AI或者增加一個(gè)新的都不會(huì)對(duì)其他邏輯構(gòu)成任何影響。
具體實(shí)施例方式本發(fā)明的主要步驟如下步驟1 寫一個(gè)AI接口,所有類型的AI必須實(shí)現(xiàn)此接口 ;步驟2 使用房間配置工具在每個(gè)游戲房間中配置Al,對(duì)每一種客戶端“不能出牌 的狀態(tài)”配置AI實(shí)現(xiàn)類的全名和此類此AI實(shí)現(xiàn)類所在的程序集名稱,并將這些配置信息將 寫入數(shù)據(jù)庫(kù)或者配置文件;步驟3 當(dāng)房間啟動(dòng)的時(shí)候,初始化一個(gè)AI配置緩存器,它把房間的AI配置信息 讀入內(nèi)存,進(jìn)行緩存;步驟4:當(dāng)有用戶的狀態(tài)因?yàn)榫W(wǎng)絡(luò)斷掉等異常情況變成“不能出牌的狀態(tài)”的時(shí) 候,房間服務(wù)器根據(jù)用戶狀態(tài),從AI配置緩存器中獲取AI的類全名;步驟5 房間服務(wù)器以AI類的全名為傳入?yún)?shù),從AI工廠中獲取一個(gè)AI實(shí)例;步驟6 房間服務(wù)器調(diào)用此AI實(shí)例的方法,完成AI操作;上述步驟5,房間服務(wù)器以AI類的全名為傳入?yún)?shù),從AI工廠中獲取一個(gè)AI實(shí)例 的具體步驟如下步驟51 =AI工廠類從緩存的AI字典列表中,以AI類的全名為鍵,查找是否有緩存 過的AI對(duì)象;步驟52 如果已經(jīng)有緩存的對(duì)象,直接返回給調(diào)用者;步驟53 如果沒有緩存的對(duì)象,從房間的AI配置緩存中讀取此類全名所在的程序 集,根據(jù)這些信息,用反射的方式生成一個(gè)AI對(duì)象;步驟54 把生成的AI對(duì)象緩存在AI工廠的AI字典列表中,并把此對(duì)象返回給調(diào) 用者;上述的技術(shù)方案實(shí)施時(shí),游戲房間服務(wù)器的開發(fā)人員可以很方便靈活的為不同房 間的不同用戶狀態(tài)指定Al,這種可配置的AI可以以插件的方式附加到游戲服務(wù)器中,修改 一個(gè)已有的AI或者增加一個(gè)新的都不會(huì)對(duì)其他邏輯構(gòu)成任何影響,日后擴(kuò)展游戲AI功能
將變得非常容易。最后所應(yīng)說明的是,以上實(shí)施例僅用以說明而并非限制本發(fā)明所描述的技術(shù)方 案;因此,盡管本說明書參照上述的實(shí)施例對(duì)本發(fā)明已進(jìn)行了詳細(xì)的說明,但是,本領(lǐng)域的 普通技術(shù)人員應(yīng)當(dāng)理解,仍然可以對(duì)本發(fā)明進(jìn)行修改或者等同地替換;而一切不脫離本發(fā) 明的精神和范圍的技術(shù)方案及其改進(jìn),其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI的方法,其特征在于該方法至少包括如下的步驟步驟1寫一個(gè)AI接口,所有類型的AI必須實(shí)現(xiàn)此接口。步驟2使用房間配置工具在每個(gè)游戲房間中配置AI,對(duì)每一種客戶端“不能出牌的狀態(tài)”配置AI實(shí)現(xiàn)類的全名和此類此AI實(shí)現(xiàn)類所在的程序集名稱,并將這些配置信息將寫入數(shù)據(jù)庫(kù)或者配置文件。步驟3當(dāng)房間啟動(dòng)的時(shí)候,初始化一個(gè)AI配置緩存器,它把房間的AI配置信息讀入內(nèi)存,進(jìn)行緩存。步驟4當(dāng)有用戶的狀態(tài)因?yàn)榫W(wǎng)絡(luò)斷掉等異常情況變成“不能出牌的狀態(tài)”的時(shí)候,房間服務(wù)器根據(jù)用戶狀態(tài),從AI配置緩存器中獲取AI的類全名。步驟5房間服務(wù)器以AI類的全名為傳入?yún)?shù),從AI工廠中獲取一個(gè)AI實(shí)例。步驟6房間服務(wù)器調(diào)用此AI實(shí)例的方法,完成AI操作。
2.根據(jù)權(quán)利要求1所述的一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI的方法,其特征在于 房間服務(wù)器以AI類的全名為傳入?yún)?shù),從AI工廠中獲取一個(gè)AI實(shí)例,其步驟為步驟51 =AI工廠類從緩存的AI字典列表中,以AI類的全名為鍵,查找是否有緩存過的 AI對(duì)象。步驟52 如果已經(jīng)有緩存的對(duì)象,直接返回給調(diào)用者。步驟53 如果沒有緩存的對(duì)象,從房間的AI緩存配置中讀取此類全名所在的程序集, 根據(jù)這些信息,用反射的方式生成一個(gè)AI對(duì)象。步驟54:把生成的AI對(duì)象緩存在AI工廠的AI字典列表中,并把此對(duì)象返回給調(diào)用者。
全文摘要
一種在網(wǎng)絡(luò)游戲中實(shí)現(xiàn)高可擴(kuò)展性AI的方法,首先寫一個(gè)AI接口,所有類型的AI必須實(shí)現(xiàn)此接口;使用房間配置工具在每個(gè)游戲房間中配置AI,對(duì)每一種客戶端“不能出牌的狀態(tài)”配置AI實(shí)現(xiàn)類的全名和此類此AI實(shí)現(xiàn)類所在的程序集名稱,并將這些配置信息將寫入數(shù)據(jù)庫(kù)或者配置文件;然后當(dāng)房間啟動(dòng)的時(shí)候,初始化一個(gè)AI配置緩存器,它把房間的AI配置信息讀入內(nèi)存,進(jìn)行緩存;房間服務(wù)器以AI類的全名為傳入?yún)?shù),從AI工廠中獲取一個(gè)AI實(shí)例;最后房間服務(wù)器調(diào)用此AI實(shí)例的方法,完成AI操作。本發(fā)明使得AI的實(shí)現(xiàn)完全是可配置的,并且這種可配置的AI可以以插件的方式附加到游戲服務(wù)器中,修改一個(gè)已有的AI或者增加一個(gè)新的都不會(huì)對(duì)其他邏輯構(gòu)成任何影響。
文檔編號(hào)G06F19/00GK101887480SQ200910084079
公開日2010年11月17日 申請(qǐng)日期2009年5月14日 優(yōu)先權(quán)日2009年5月14日
發(fā)明者劉立軍, 張守文, 王磊, 陶勇勝 申請(qǐng)人:灰熊(北京)科技有限公司