Re: [程式] 一般遊戲的AI作法有人知道嗎?
: 推 ddavid:有啦,就我前面講把問題特殊化到預設我方Deck、只對對方特 01/31 06:09
: → ddavid:定行為做反應,這樣可以寫出個還算有樣子的AI XD 01/31 06:10
: → ddavid:古老DOS時代的一個MTG官方遊戲AI也就這樣幹(+作弊XDDD) 01/31 06:10
: → ddavid:有限狀態機是用在組合技(組合技完成到某些階段時出牌策略 01/31 06:11
: → ddavid:會完全不同)或某些特定局面這樣,當然拆成純if then else 01/31 06:13
: → ddavid:組合也可以,不過複雜的遊戲可能會讓if then else條件跟層 01/31 06:15
: → ddavid:數過多就是了,我個人是覺得這時FSM也許好理解一點XD 01/31 06:16
補充一下好了,就降低難度過的問題來說,我可能會採取混合式的做法就是。以
MTG來舉例,假設AI打的是一個組合技型的Deck,我可能至少會開兩台FSM在跑。一台
表示我自己組合技進度,另一台去注意處理對方情況(主要是針對可能可以破壞你組
合技的手段),上面再架一層if then else對這些FSM的輸出綜合處理就是。舉例說
:
1.自身FSM
假設完成Combo需1、2兩個元件,那FSM一開頭依手牌情況可能可以進入「沒拿到
元件,濾牌」、「進行元件1」、「進行元件2」之類的。過程中就依自己完成度來處
理,可能會有「已完成1」、「已完成2」或「皆完成待發動」之類的狀態。
2.對手FSM
事先考慮好這個組合技害怕的東西或需要注意的狀況、對手類型等等。比如有些
組合技Deck是根本無視對方生物攻擊跟自己血量,那對於對手下攻擊用的生物就連反
應都不用反應(往往這種Deck也不存在多少反應手段XD)。可是在MTG的世界中,就
往往會有對手下第一塊地是藍色,組合技就要開始疑神疑鬼了,到了對方兩塊藍地站
著硬是發呆不做事更是達於極致XD。這時對手FSM可能就進入一個「對手可能有破壞
手段」的狀態這樣。如果精細一點就可以分開多個需要反應的狀態,而如果存在多個
可能同時需要考慮的狀態,那我可能就拆成多個FSM一起跑。而如果發現拆的結果是
其中一些FSM只剩是與非兩個狀態,那這些狀態就不用FSM,而是往上層丟給if then
else處理就好)。
3.if then else
最後就把1.2.的東西合起來弄到這個決策層來處理就是了。比如說自身FSM是「
進行元件1」的情況,如果對手FSM什麼重要狀況都沒有,就毫無疑問的把元件1這牌
打出來就好。可是如果是個「對手可能有破壞手段」的狀態,那可能就要簡單算一下
法力算牌之類的。如果我一次能出兩張元件1、對手法力只能破壞一張,又或是我有
足夠反反制手段,那就衝了。反之可能就等一等法力狀況或手牌狀況的改變這樣。而
這裡的決策結果也可能反饋到各個相關FSM上這樣。
不過這些都只是遊戲中決策的部分而已,我覺得就算回歸到一般性問題,最難的
也不是這部分。最難的是任意給予Deck時,讓AI自己理解自己的Deck能幹什麼、怎麼
贏、對手又可能幹什麼、甚至自行組Deck這部分啊XDDD
這部分不Learning我不知道還有什麼方法,但也如你說的Learning的效果也很難
好,光是要讓AI自己懂得套牌裡有一個組合技這點就有夠難XD
必殺組合技部分倒是還有硬讓它排列組合試自己Deck中所有牌加上各種盤面狀態
的最後search奧義啦(search space定錯就永遠找不出來了XD),不算是一擊殺組合
技的就......XD
--
「你會死。」不由分說,他被狠狠罵了一頓。
午休時,我拉著他到安靜的地方。「你怎麼對著人這樣說話呢?」
「他本來就會死,難道他不會死?」他抱怨。
--預言師
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: ddavid 來自: 118.167.13.211 (01/31 07:07)
推
01/31 10:22, , 1F
01/31 10:22, 1F
推
01/31 15:34, , 2F
01/31 15:34, 2F
推
01/31 17:16, , 3F
01/31 17:16, 3F
→
01/31 17:17, , 4F
01/31 17:17, 4F
→
01/31 19:09, , 5F
01/31 19:09, 5F
→
01/31 19:12, , 6F
01/31 19:12, 6F
→
01/31 19:12, , 7F
01/31 19:12, 7F
→
01/31 19:37, , 8F
01/31 19:37, 8F
→
01/31 19:38, , 9F
01/31 19:38, 9F
→
01/31 19:38, , 10F
01/31 19:38, 10F
→
01/31 19:39, , 11F
01/31 19:39, 11F
→
01/31 19:39, , 12F
01/31 19:39, 12F
→
01/31 19:40, , 13F
01/31 19:40, 13F
→
01/31 19:41, , 14F
01/31 19:41, 14F
→
01/31 19:41, , 15F
01/31 19:41, 15F
→
01/31 19:42, , 16F
01/31 19:42, 16F
→
01/31 19:42, , 17F
01/31 19:42, 17F
→
01/31 19:42, , 18F
01/31 19:42, 18F
→
01/31 19:43, , 19F
01/31 19:43, 19F
→
01/31 19:43, , 20F
01/31 19:43, 20F
→
01/31 19:44, , 21F
01/31 19:44, 21F
→
01/31 19:44, , 22F
01/31 19:44, 22F
→
01/31 19:45, , 23F
01/31 19:45, 23F
→
01/31 19:46, , 24F
01/31 19:46, 24F
→
01/31 19:46, , 25F
01/31 19:46, 25F
→
01/31 19:47, , 26F
01/31 19:47, 26F
→
01/31 19:48, , 27F
01/31 19:48, 27F
→
01/31 19:49, , 28F
01/31 19:49, 28F
→
01/31 19:53, , 29F
01/31 19:53, 29F
→
01/31 19:55, , 30F
01/31 19:55, 30F
→
01/31 19:56, , 31F
01/31 19:56, 31F
→
01/31 19:57, , 32F
01/31 19:57, 32F
→
01/31 19:57, , 33F
01/31 19:57, 33F
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
69
80