114培訓(xùn)網(wǎng)歡迎您來(lái)到游戲設(shè)計(jì)交流中心!

400-850-8622

全國(guó)統(tǒng)一學(xué)習(xí)專線 9:00-21:00

MOBA類型游戲的人機(jī)對(duì)戰(zhàn)的模式中,電腦的AI是如何設(shè)計(jì)的?

現(xiàn)代的游戲AI很多是由專門的AI引擎來(lái)實(shí)現(xiàn)的,如果用文字把AI的規(guī)則寫下來(lái),那是非常的多

MOBA( Online Battle Arena)中文譯為多人在線戰(zhàn)術(shù)競(jìng)技游戲。 online battle arena(MOBA),也被稱為Action real-time strategy(Action RTS,ARTS)

這類游戲的玩法是:在戰(zhàn)斗中一般需要購(gòu)買裝備,玩家通常被分為兩隊(duì),兩隊(duì)在分散的游戲地圖中互相競(jìng)爭(zhēng),每個(gè)玩家都通過一個(gè)RTS風(fēng)格的界面控制所選的角色。但不同于《星際爭(zhēng)霸》等傳統(tǒng)的硬核的RTS游戲,這類游戲通常無(wú)需操作RTS游戲中常見的建筑群、資源、訓(xùn)練兵種等組織單位,玩家只控制自己所選的角色。

MOBA游戲相比傳統(tǒng)的RTS游戲更偏向于休閑娛樂,對(duì)玩家的操作要求均遠(yuǎn)遠(yuǎn)低于RTS游戲。再加上這類游戲中很多是免費(fèi)游戲,因此吸引了一大批難以適應(yīng)RTS游戲大規(guī)模高要求操作的玩家。因?yàn)椴辉龠^高地要求玩家的操作水平,這個(gè)玩家群體比傳統(tǒng)RTS游戲的硬核傾向的玩家群體要大得多。

1998年,《星際爭(zhēng)霸》發(fā)行,暴雪娛樂公司*次在暴雪娛樂制作并發(fā)行的游戲中綁定了地圖編輯器。利用這款地圖編輯器,當(dāng)時(shí)有一位叫做Aeon64的玩家制作出一張名為Aeon Of Strife的自定義地圖,這就是所有MOBA游戲的雛形。在這個(gè)自定義地圖中,玩家們可以控制一個(gè)英雄單位與電腦控制的敵方團(tuán)隊(duì)進(jìn)行作戰(zhàn),地圖有3條兵線,并且連接雙方主基地,獲勝的目標(biāo)就是摧毀對(duì)方主基地[2]?。值得一提的是,這款老地圖現(xiàn)今依然在《星際爭(zhēng)霸Ⅱ》中保持著更新。

這張星際爭(zhēng)霸的自定義地圖是DOTA的前身,也是所有moba的雛形,因此MOBA游戲的源頭應(yīng)該追尋至《星際爭(zhēng)霸》時(shí)代的RPG地圖。到英雄聯(lián)盟的出現(xiàn),在剛開始英雄聯(lián)盟自稱為類DOTA游戲,但隨后拳頭游戲開始將游戲定義為MOBA游戲,隨后MOBA游戲的叫法開始更加流行,但本質(zhì)上是從類DOTA游戲進(jìn)化過來(lái)的游戲類型,它囊括了比“類DOTA游戲”更多的內(nèi)容,甚至連DOTA自身也開始被定義為MOBA了。

游戲里的AI是如何實(shí)現(xiàn)的?

比如賽車游戲的AI,和你一起跑得賽車根據(jù)不同等級(jí)的AI表現(xiàn)出不同能力。它基本的設(shè)計(jì)思想是,通過對(duì)地圖場(chǎng)景進(jìn)行數(shù)學(xué)建模然后結(jié)合模型中的應(yīng)變量結(jié)合賽車本身的參數(shù)進(jìn)行數(shù)學(xué)結(jié)合。*特出了帶有系數(shù)的近似等式。然后通過數(shù)學(xué)變換(比如三角變換,等比變化,隨即變換等)使得AI變的非常具備“人”的思維。 還有一種AI是通過行為庫(kù)來(lái)實(shí)現(xiàn)的,在行為庫(kù)中,定義了大量的行為,這些行為可能是預(yù)先定義好的,可能是游戲者在平時(shí)游戲的時(shí)候被系統(tǒng)錄入的。然后AI通過類似責(zé)任鏈(不同等級(jí)的責(zé)任者對(duì)應(yīng)不同等級(jí)的責(zé)任行為,你可以去網(wǎng)絡(luò)搜索一下)的形式獲取到某一個(gè)時(shí)候的行為,從而表現(xiàn)的比較有"智能".

游戲設(shè)計(jì)模式 之 AI_行為樹

引擎:.1.0
語(yǔ)言:
Git倉(cāng)庫(kù)地址:

定義——
行為被定義為層次化的目標(biāo)的集合,其表現(xiàn)為樹形結(jié)構(gòu)。
智能體首先選擇高級(jí)抽象目標(biāo),然后遞歸分解成一個(gè)可以遵照?qǐng)?zhí)行的原子目標(biāo)的集合。
以此實(shí)現(xiàn)原子目標(biāo),最終實(shí)現(xiàn)高級(jí)抽象目標(biāo)。

類圖——

行為樹圖——

類圖看起來(lái)比較復(fù)雜~,哈哈,其實(shí)不難,記住幾個(gè)關(guān)鍵單就行。
1、樹形結(jié)構(gòu),使用“組件模式”實(shí)現(xiàn)。
從“行為樹圖”中可以看出,復(fù)合目標(biāo)和子目標(biāo)組成了一個(gè)樹形結(jié)構(gòu)。
think每次根據(jù)權(quán)重(由數(shù)值策劃提供公式)選擇一個(gè)“分支”,一次執(zhí)行完整個(gè)分支下的所有葉節(jié)點(diǎn),即可完成策略——實(shí)際項(xiàng)目中會(huì)有很多層,這里簡(jiǎn)化一下。
2、通過權(quán)重選擇策略,每個(gè)策略都對(duì)應(yīng)一個(gè)繼承自Goal_Evaluator的類,對(duì)應(yīng)其返回權(quán)重的以及設(shè)置目標(biāo)的邏輯。

下面來(lái)看看具體實(shí)現(xiàn)
簡(jiǎn)單講,需要做的事情有3個(gè)
1、編寫戰(zhàn)略目標(biāo)

重寫Enter()函數(shù),負(fù)責(zé)插入子目標(biāo)

2、編寫子目標(biāo)
Goal_

Goal_

Goal_

以上就是策略與子目標(biāo)的實(shí)現(xiàn),主要工作就是在Enter(),與Process(dt)中,在恰當(dāng)?shù)臅r(shí)機(jī)返回目標(biāo)狀態(tài)即可。

3、(用樹形結(jié)構(gòu),即組合模式)組織起來(lái)

如圖,Goal_Think類通過每個(gè)策略的Goal_Evaluator類計(jì)算權(quán)重,然后,策略在Enter()中也。
這樣便組成了一個(gè)樹形結(jié)構(gòu),然后通過Process(dt)驅(qū)動(dòng)行為樹運(yùn)行。

擴(kuò)展:
配置化——我的思路是策劃在json表中配置 戰(zhàn)略目標(biāo)以及其對(duì)應(yīng)的子目表“樹”。

如何設(shè)計(jì)出優(yōu)秀的游戲AI

游戲發(fā)展這么多年,并不是沒有狡猾的AI,只是市面上主流的游戲沒有使用到狡猾的AI而已,舉個(gè)最簡(jiǎn)單的例子,我相信很多人下象棋都下不過大師難度的電腦或者機(jī)器人吧,這就是狡猾的AI,再聯(lián)想下圍棋界的阿爾法狗,游戲AI其實(shí)并不是沒有發(fā)展,相反有些ai發(fā)展的有點(diǎn)可怕
那么為什么主流游戲,比如RPG、SLG游戲的AI會(huì)給很多玩家AI還是很蠢的感覺呢,為什么他們不狡猾一點(diǎn)呢,簡(jiǎn)單的來(lái)說(shuō)就是——他們不蠢怎么襯托玩家的聰明呢
游戲AI,作為游戲內(nèi)的設(shè)計(jì)元素之一,他所最終服務(wù)的對(duì)象是玩家,一個(gè)游戲AI是好是壞不是根據(jù)AI的聰明程度來(lái)判定的,而是根據(jù)他能給玩家?guī)?lái)什么樣的反饋來(lái)判定的,這個(gè)才是游戲AI的最終設(shè)計(jì)目的
游戲AI服務(wù)于玩家的體驗(yàn),設(shè)計(jì)目的決定了他的設(shè)計(jì)方式,想要設(shè)計(jì)一個(gè)好游戲AI,并不是越聰明越好

即時(shí)戰(zhàn)略游戲(比如 WAR3)的 AI 是怎樣實(shí)現(xiàn)的?

War3的AI沒有必要使用你提及的算法,或者說(shuō),根本無(wú)法使用。
有相關(guān)經(jīng)驗(yàn)表明,游戲的AI如果采用神經(jīng)網(wǎng)絡(luò)等算法,會(huì)傻得出奇。
使用派算法的AI總會(huì)做出匪夷所思的動(dòng)作,讓人無(wú)法理解,游戲性盡失。
其主要原因在于遺傳算法、模擬退火算法、神經(jīng)網(wǎng)絡(luò)算法、各種分類算法等等,都是高度概括化的,旨在找到*解/或者找到全局關(guān)系。但是我們的AI實(shí)際不需要*解和全局關(guān)系,一是你的電腦沒那么叼,這么復(fù)雜的情況,如果真的高度概括出來(lái)了,其復(fù)雜程度是很高的,你的電腦也帶不動(dòng),其次是算法在訓(xùn)練過程中收斂也會(huì)很慢,因?yàn)闃颖咎^復(fù)雜,所以也許要花上很久(幾年?猜的)來(lái)收斂,如果我們降低收斂精度要求來(lái)使速度加快,AI就會(huì)變得非常傻,做游戲明顯不能這樣。即使上述問題都被解決了,還有個(gè)問題就是,電腦得到了*解和*數(shù)學(xué)模型,你作為玩家就沒有勝利的希望了,這游戲給誰(shuí)玩?
即使設(shè)計(jì)公司神經(jīng)病般的決定如此設(shè)計(jì),每當(dāng)你的游戲有更新,兵種變化,數(shù)據(jù)變化,整個(gè)算法就要重新訓(xùn)練,玩家需要重新下載AI的全部?jī)?nèi)容,對(duì)用戶的體驗(yàn)和公司的工作效率都有損害。
戰(zhàn)略類游戲的AI,還是有限狀態(tài)機(jī)。根據(jù)不同情況分類做不一樣的事情,全都設(shè)計(jì)好,設(shè)計(jì)的盡量詳細(xì),就OK了。
關(guān)于其復(fù)雜度:
這類AI的程序體往往超乎想象的長(zhǎng),當(dāng)然具體長(zhǎng)度和游戲本身的設(shè)計(jì)也有一定關(guān)系,和游戲其它部分代碼的設(shè)計(jì)優(yōu)化程度也有關(guān)系,但是即使在較優(yōu)環(huán)境中,其AI長(zhǎng)度也是很長(zhǎng)的。具體原因就在于其事無(wú)巨細(xì)的分類了所有情況,規(guī)定了AI在不同時(shí)間不同情況所做的不同事情,作為一個(gè)戰(zhàn)略類游戲,尤其是即時(shí)戰(zhàn)略類游戲,這是十分復(fù)雜的,情況十分多,因此程序本身也會(huì)相當(dāng)?shù)拈L(zhǎng)。
但是他運(yùn)行速度又快!又像人類在玩!又給了玩家勝利的可能!又容易設(shè)計(jì)和更改!

DNF的怪物AI是如何設(shè)計(jì)的?

DNF游戲中的怪物AI設(shè)計(jì)理念如下:
首先判斷設(shè)置半徑范圍內(nèi)是否有敵對(duì)單位;
有的話則生成隨機(jī)數(shù),根據(jù)該隨機(jī)數(shù)對(duì)應(yīng)的路線,驅(qū)動(dòng)怪物向玩家靠近。
沒有的話仍然產(chǎn)生隨機(jī)數(shù),依據(jù)該數(shù)字產(chǎn)生對(duì)應(yīng)的路線,驅(qū)動(dòng)怪物在范圍內(nèi)移動(dòng)。
其中玩家設(shè)置為怪物的敵對(duì)單位,接近到一定距離后怪物會(huì)對(duì)敵對(duì)單位進(jìn)行攻擊。

溫馨提示:為不影響您的學(xué)業(yè),來(lái)校區(qū)前請(qǐng)先電話咨詢,方便我校安排相關(guān)的專業(yè)老師為您解答
相關(guān)資料
姓名不能為空
手機(jī)號(hào)格式錯(cuò)誤