当前位置: 首页>开发笔记>正文

游戲編程技術貼:AI設計的若干規則闡述

游戲編程技術貼:AI設計的若干規則闡述

一般來講,網絡游戲的AI歷來就是很簡單的AI。相比之下,很多單機游戲的AI就要得復雜一些。而筆者并未從事過大型單機游戲的AI設計,所以也就不班門弄斧了。但至于網游的AI,還是略知一二。

目前游戲中的AI,都是事件引發行為的機制。它們并不會自我學習和成長,都是寫死的一些事件(條件)和行為,類似于昆蟲的應激性表現。有限狀態機或者行為樹,都是在此基礎上進行設計的。不過這不屬于策劃工作范疇,在此也就不多加描述了。

以下就AI的一些規則進行描述,目標主要是做一個MMORPG游戲的怪物AI。

一、普通AI

在設計AI時,我們先需要設計一個基本的模板。這個模板會有一個基本的流程,如下:

登場前→非戰斗狀態→戰斗狀態→脫離戰斗或死亡

流程圖就不畫了,想必接觸過AI的童鞋都能清晰的知道這個流程。流程中每一個節點都是AI的一個狀態,策劃要做的,就是規定每一個狀態AI的行為特征,以及狀態切換的條件和AI行為。這其實也是有限狀態機的思路。

我簡單舉例一下。

登場前AI載體特征:不可被選中,不可被攻擊,有登場范圍。

登場前→非戰斗狀態:敵人進入登場范圍,執行登場行為,執行完畢后切入非戰斗狀態。

非戰斗狀態:AI持續待機或巡邏,有鎖敵范圍。

非戰斗狀態→戰斗狀態:敵人進入鎖敵范圍,或遭遇鎖敵范圍之外的敵人攻擊。

...

好了,舉例完畢。

策劃只需要規定好每個狀態AI的特征,以及切換狀態的條件,AI也就能自己運作起來。這是有限狀態機的思路,但是其實很多項目是運用的行為樹結構。這個大家百度一下即可,行為樹容易構造更復雜的AI,條理更加清晰。簡單講就是列出所有的AI行為,然后按照一定的優先級順序執行下去。(程序向的東西就不多說了,有興趣的策劃可以自行百度,或者就問自己項目的程序就行啦,不難的啦~)

二、特殊AI

以上第一點講的是最基本的AI流程,我們不妨稱之為普通AI,由于是入門必須懂得的流程,所以我想不用贅述。而這第二點,則是相對進階一些的AI設計了。

如果把AI設計比作造車的話,普通AI就已經是車的構架了,至少能保證這車能啟動。而特殊AI更像是改裝配件,能一定程度提升整車的性能。

特殊AI是獨立于普通AI之外的補丁。也是由一系列的條件和行為構成。在此,策劃需要做的事情就是構建一個條件和行為庫,以便于程序逐一開發以及以后搭配。

條件庫:

1)目標距離≥n

2)自身生命值≤n

3)任意單位擁有idXXX的狀態n層

4)目標施放魔法技能

...

行為庫:

1)施放idxxxx的技能

2)逃跑

3)增減idxxxx的技能(或者直接替換技能列表,看具體項目實現方式)

4)增加idxxxx的狀態

...

待程序逐一開發完畢,具體應用上我們只需要做一些搭配即可。比如當條件4)目標施放魔法技能,則執行行為2)逃跑。當自身生命值≤30%,則執行行為3)替換自身的技能組。

最后,特殊AI的優先級高于普通AI。它更像是一個補丁,來彌補普通AI的不足,補充特殊的條件以及特殊的行為。而其并不具有普適性,因為可不是所有的怪物都會做這些事情,我們我們還是將其封裝成特殊的AI來處理。

也正因特殊AI并不具有普適性,并不建議過于廣泛的使用,增加性能的壓力。主要應用于精英怪和BOSS等地方。

三、特殊AI是否必要

特殊AI并不是必須的。很多游戲都是沒有特殊AI的,多見于回合制游戲。他們有多個普通AI的模板,或者直接將一些AI行為封裝在技能中(可見MT1,刀塔傳奇)。但如果你需要讓怪物變得更加聰明多樣一些,或者你們游戲是更加強調BOSS戰的話,特殊AI還是能起到重要的作用。具體設計時,則需要注意有些行為直接封裝在技能中會比封裝在AI中更合理,一般來講,技能能做的事情盡量不要讓AI來做。

四、集團AI(區域AI控制器)

當你設計好普通AI和特殊AI之后,單個AI載體基本上已經能夠滿足網游AI的需求了。但是依然有人希望戰斗能變得更加有趣。他們希望看到怪物之間的協作關系,也希望看到怪物不是一股腦的沖上來,而是會尋找機會伺機待發。

那么,你需要使用到集團AI了。

目前筆者還沒見到過什么網游有使用集團AI,基本只局限于《戰神》、《鬼泣》這種割草游戲有大范圍使用。

集團AI你可以想象成一個無形的指揮官,在每個區域戰斗時,他們都左右著戰局的進展。他們做的事情是這樣。

①相對于主角劃分4或8或更多的方位,然后安排所有的近戰怪物按照這些方位站好位置(包圍住玩家)。比如有5個怪物,主角有4個方位(前后左右),那么按照一定規則,主角身前有2個怪物,左右各1個,背后有1個。

②怪物站好之后,他們并不會立刻攻擊,而是在主角周圍游走。(游走AI下詳)。

③這時候“指揮官”說,左右的怪物,攻擊。那么左右的怪物會執行攻擊,其他怪物繼續游走。

④當左右的怪物攻擊執行之后,“指揮官”又說,前方的怪物攻擊,那么前方的怪物就會攻擊,其他怪物繼續游走。

...

以此類推,直至戰斗結束。

這個戰斗場面就像是武俠電影中,主角哪怕遇上千軍萬馬,但主角同時只會面對最多3個敵人的同時進攻。其他敵人呢,則都圍繞在較遠的地方舞刀弄槍。

這是玩法的需要,畢竟當敵人全部一窩蜂上來的時候,手游賬號出售整個戰斗過程將會很模糊,意思是如果你一招沒秒得七七八八,那就得被瞬秒了。玩家都很難清楚發生了什么。那就變成了標準的拉怪--聚怪--秒光的數值游戲了。

當然,你是否需要使用集團AI,這個也是有待商榷的。因為一旦采用這個方案,那么怪物就需要多種攻擊途徑,玩家角色也需要采用多種反制策略。而且這種集團AI基本只適用于單角色割草游戲。

顯而易見,集團AI的主要作用還是控制戰斗節奏和難度。如果你不想用這套AI的話,倒也有簡便的辦法。那就是公共CD(技能間隔)的概念。即怪物使用一個技能之后,會隔一段時間才可能再次挑選技能。

注:這里所說的集團AI與特殊AI中的協作部分不同。如果你想實現如下效果,這是特殊AI改做的事:

一堆怪里面有一個怪物隊長,這個怪物隊長每隔10秒會發起一起咆哮,每次咆哮時,其他小怪都會使用沖鋒技能。那么,這個其實是特殊AI了,小怪擁有特殊AI,檢測隊長發出了咆哮(或者咆哮給所有小怪加了憤怒狀態,小怪檢測到自己有憤怒狀態),則立刻施放沖鋒技能。

五、游走AI

在第四點中,談到的游走行為。是指怪物在無技能可放時,會跟目標保持一定作戰半徑,并且以一定的時間間隔圍繞半徑的周長進行移動的行為。

你可以理解成,假設玩家角色和怪物都不攻擊的情況下,怪物會一直圍繞著角色轉,就像是一直在尋找主角的破綻一般。

游走AI實現邏輯比較簡單,但是麻煩的是動作的配套。畢竟很難有動作會同時適合前后左右的移動。所以當你決定使用這種AI,又不想消耗更多的美術資源時。你可以在漂浮型、蜘蛛多腳型、蹦跳型等移動方向模糊的怪物身上使用。當然,你不介意滑步的話倒是可以大面積使用這種AI。

游走AI的具體參數需根據游戲類型而定。比如戰神的游走AI就是圍繞主角轉,而DNF的游走AI則是聰明的怪很少會跟角色站在同一個X軸向上,他們會不斷改變自己的y軸坐標,讓玩家苦不堪言。

不論如何,游走AI很容易設計成讓怪物不斷的圍繞玩家移動,以至于玩家不會太難追上單個怪物,但是又很難一次秒殺所有怪物。

六、技能挑選

AI行為主要是移動和技能挑選,移動部分就是巡邏、移動、追擊、游擊,想必不用贅述。

至于技能挑選,則有一些小規則需要注意。

首先,所有的AI載體都需要一個技能列表,這個列表用于AI挑選技能。

但是實際上,AI載體可能還有個更高優先級的技能列表,專門用于特殊AI等特殊事件觸發的技能施放。再此就不贅述了。

當AI擁有這個技能列表之后,我們則需要給技能挑選設立一些通用的規則:

①順序規則:即從左至右的順序依次施放技能,當無法施放則跳過到下一個技能。這個很簡單,可控性非常高,就是不靈活。

②權重規則:給所有技能都配置一個權重,按照權重比值來概率挑選技能。這個是純隨機規則,好處就是怪物顯得智能得多,而不是一場戰斗中所有同樣的怪物都做同樣的事情。

③優先級規則:即每次施放完技能后,又嘗試施放優先級最高的技能,如果不能施放,則嘗試施放次級優先級的技能,以此類推。這個規則有個問題,就是當優先級最高的技能沒有冷卻時間的時候,則永遠只會放這一個技能。

并且這套規則在初始化順序時,顯得比較笨拙。所以需要做一些小小的優化。那就是所有技能都需要配置一個“填彈時間”,即AI載體生成時,他所有技能需要填彈,或者稱之為“預冷卻”。即已經進入了冷卻狀態。這樣的話,方案③將能完美呈現方案①的優勢,即順序可控。

MT1使用的就是方案①,刀塔傳奇使用的就是方案③(刀塔傳奇的技能挑選規則筆者自己猜測的,可能實際方案有偏差,但應該八九不離十。不論如何方案③確實可以重現該游戲戰斗中各種技能挑選的情形)。

總之,設計者可以在以上三種方案中,打一些補丁規則,或者進行一些結合,來實現更高層次的效果。

總結:

AI設計不同于關卡和角色的設計,主要是沒有太多的方法論。很多都是約定俗成的東西依據設計者具體需要來進行取舍。真想做好AI,還是需要涉獵更多的資料,并且進行更多的體驗和嘗試。

此文主要是從策劃角度描述一些AI設計上的取舍,真要寫的話還需要寫很多,許多細節也不是很完善。但整體來講,掌握這些,做一個對怪物AI要求較高的MMORPG問題應該不會很大。

興致來了就隨便寫寫,也懶得專門去繪制一些示意圖,回頭一看寫的蠻長的,真能全看完也都是神仙般的存在了。嘛,還是希望能對大家有益吧,也歡迎大家討論。

https://www.zydui.com/af323V28CDQ9VAFQA.html
>

相关文章:

  • IQVIA醫藥咨詢隨筆雜談
  • 爬取英雄聯盟英雄皮膚數據
  • 英雄聯盟 連接服務器失敗 請檢查您的網絡 是否啟用修復程序進行修復,英雄聯盟玩不了,提示未知的directx錯誤...
  • 三位千萬富翁告訴你:錢是怎么賺來的
  • 芳香之城傳奇的美麗神話故事
  • Solid Converter PDF注冊碼
  • 修改linux下面的字符集
  • 30個不可思議的好玩又實用的HTML5移動應用
  • 安卓新出病毒幽靈推,回顧android歷史上的那些吸費病毒
  • 游戲編程技術貼:AI設計的若干規則闡述
  • mac啟動自動運行程序_什么啟動了,為什么在我的Mac上運行?
  • 什么是UserEventAgent,它為什么在Mac上運行?
  • 蔚來汽車新財報超預期,短期或難盈利互聯網造車行不通嗎?
  • 車行的進貨問題
  • spring BeanFactory 家族介紹
  • 地址家族/名字解析
  • VS中怎么調出資源方案管理器
  • 告別低效工作,幫你重新找回工作的掌控感
  • 從Mac連接Windows共享打印機(1)
  • c4d流體插件_Cinema 4D 流體模擬插件 TurbulenceFD C4D v1.0 Build 1425 Win64
  • 經典生活總結語錄(搞笑欣賞)
  • 項目打包打的是什么包_早安打工人是什么梗,朋友圈打工人文案語錄表情包!...
  • 前端學習從入門到高級全程記錄之25(webapi)
  • 中職計算機應用普測考試試題及答案,2017職稱計算機考試WPS_Office檢測練習及答案9...
  • 微型計算機的主板又稱為,供電設計比7999元的主板還猛,ROG M11A主板首次亮相
  • webStorm使用斷點
  • 逆風翻盤?順豐大股東聯手本來集團上演O2O+B2C生鮮大戲
  • 三國志戰略版:Daniel_“坦克兵種”象兵分析
  • RISK-V品牌的中國化歷程(下)
  • 網游找call通殺方法之另辟蹊徑