Re: [程式] 一般遊戲的AI作法有人知道嗎?
我個人不算什麼老手
只能提供一點粗淺的想法互相討論
首先AI的撰寫方法
一般最常用的就是前面大大所提到的有限狀態機
有限狀態機顧名思義
就是在有限數量的狀態下經過判斷而反應出不同的行為模式
就以你在文章中推文的範例來說好了
HP太少時補血,HP正常時隨機攻擊
此時"HP太少"跟"HP正常"....即為所謂的"狀態"
當遇到"HP太少"這項狀態該做什麼
或當遇到"HP正常"這項狀態該怎麼反應
即為使用有限狀態機設計AI的基本概念
所以其實你的原始想法裡面
已經存在著有限狀態機的雛型了
另外,為了用較容易的方式設計出一個具有多變性的AI
AI的設計也經常會使用到機率來加以輔佐
例如:
當"HP太少"時:
XX%的機率用魔法補血、XX%的機率用道具補血、XX%的機率繼續攻擊、XX%的機率逃跑
而前提是對該角色是否具有補血魔法或補血道具進行判斷
並要對MP不足、道具不足時的行為反應進行設定
(當然、此部份方法很多,有限狀態機的狀態是有限的,但設計的方法是無限的)
將許多不同模組的判斷式以及反應方法,透過流程來撰寫成文件
原則上就會具有有限狀態機的大致型態了
再來,AI設定一個很重要的要點就是,流程
一開始處於最原始的狀態
接著就要開始設計不同層級的先後判斷模式
例如:
===============================================================
初始待機狀態
----------------------------第一層-----------------------------
敵對角色是否進入攻擊範圍內
是=>進行第二層判斷
否=>回到初始待機狀態
----------------------------第二層-----------------------------
敵對角色等級是否比自己高出超過五級、自己血量是否少於10%
是=>90%朝玩家反方向移動(移動多遠、多久,就要延伸到第三層)
10%朝玩家進行普通攻擊(使用何種技能,就要延伸到第三層)
否=>95%朝玩家進行普通攻擊
5%使用技能(使用何種技能,同樣就要延伸到第三層)
===============================================================
也就是說
經過了兩層(或更多)的判斷以後,才能決定該角色所要做出的行為模式
再來,談談你的紙牌遊戲吧
我個人紙牌遊戲的經驗不多
因此只能大略提一點想法
首先要做紙牌遊戲的AI
先要透徹瞭解該紙牌遊戲的"規則"
當你手上拿到一組牌組之後
依據你的規則所給予的優勢
不同牌組可以給予不同的出牌機率
這部份很難用量化的文字敘述
因為不同規則給予紙牌的出牌方向有著很大的差異
但紙牌遊戲通常都是以完全扣除對方生命值、以及保持自己生命值為最終目的
你可以以這個為方向
整理出你的紙牌遊戲規則中,能夠較佔優勢的出牌順序有哪些
如果手上剛好有可以達成優勢出牌順序的紙組
那麼優勢出牌順序的首張牌卡即可大幅增加其出牌機率
不過前提是,要先進行對於自己以及對方生命值的估算
假如自己生命值過低,而對方生命值又非一兩次可以擊倒
此時就可能要增加防守、迴避、補血性質的牌卡出牌機率
最後一點能夠較輕易設計出具有挑戰性AI的方法就是,作弊
例如連續派給電腦較佔優勢的牌組
或者讓電腦可以依據玩家手上的牌組進行反應
當然這部份要適當參酌
不可以作弊做到讓玩家摔手把砸鍵盤的程度
我自己設計AI時常說的說法是:
"只要不被玩家發現作弊就不算作弊"
因此即便作弊,還是要調整不同的給好牌機率
不能每次都給電腦好牌
也可在電腦生命值過低的狀態下再提升給予好牌的機率
大致上就這樣
AI設計上細部可以再拆解、舉例、分析的部份當然還有很多
我這邊提供一點基本的想法
希望對你能有所助益
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.134.1
推
01/29 15:14, , 1F
01/29 15:14, 1F
推
01/29 20:13, , 2F
01/29 20:13, 2F
推
01/29 20:39, , 3F
01/29 20:39, 3F
→
01/29 20:40, , 4F
01/29 20:40, 4F
→
01/29 20:40, , 5F
01/29 20:40, 5F
→
01/29 20:42, , 6F
01/29 20:42, 6F
推
01/30 12:10, , 7F
01/30 12:10, 7F
推
01/30 14:00, , 8F
01/30 14:00, 8F
推
01/30 16:28, , 9F
01/30 16:28, 9F
推
01/30 17:31, , 10F
01/30 17:31, 10F
推
01/31 12:07, , 11F
01/31 12:07, 11F
推
01/31 16:05, , 12F
01/31 16:05, 12F
→
01/31 16:06, , 13F
01/31 16:06, 13F
推
02/02 21:42, , 14F
02/02 21:42, 14F
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
69
80