Re: [請益] 關於一些遊戲的AI

看板GameDesign作者 (謊言接線生)時間11年前 (2012/11/29 15:27), 編輯推噓2(2019)
留言21則, 4人參與, 最新討論串6/22 (看更多)
: 推 LayerZ:我覺得可以拿LoL的AI來討論,跟SLG比起來相對簡單(只需要操 11/29 11:15 : → LayerZ:做一個單位) 但是光是前方一個敵人走進草叢要不要追擊 11/29 11:16 : → LayerZ:可能就要算整場的概念了.. 11/29 11:16 針對這個,我簡單的做一下問題的分類: 1. 資訊完全公開的遊戲(象棋、圍棋、無任何亂數及戰爭迷霧的回合制SLG) 這類問題的特性是,只要雙方做完全一樣的事情,就100%可以重現完全相同的結 。此類問題在不考慮運算量的情況下,窮舉法一定會得到最佳解,且窮舉完的情況 下,我們一定可以得到先手勝、先手負或和定之類的解。也就是說,完全不需要人為 的額外知識(如圍棋的厚勢)就能理論上解決。 在運算不完的情況下,人為知識主要都是用於減少運算量。在確保該加入的人為 知識正確的情況下(如,井字棋先手下中間,或象棋某些確定的已解決殘局),仍然 一定可以得到最佳解並減少運算量。但在無法保證該人為知識正確的情況下(如,圍 棋的厚勢概念、圍棋的定石),算出來的結果就無法保證為最佳解。舉例來說,深藍 下贏西洋棋王只是證明了西洋棋王在該次賽事中計算此問題輸給了深藍,而不是深藍 解決了西洋棋問題。注意這裡的「人為知識正確」的意義是當使用了這個知識做決策 時,在任何一個盤面或狀況的勝負關係都不能被改變,這是很嚴格的一個限制。 順帶一提,有些無戰爭迷霧的回合制RSLG升級時會有亂數跳點,或者傷害有亂數 。這會導致這些遊戲中進行同一個動作會帶來不同結果,導致它們不能分到此類之下 。 2. 資訊非完全公開的遊戲(猜拳、橋牌、麻將、德州撲克、任何有隨機性的遊戲、 RTS) 與前者相反,這類問題的特性就是任一方在所知完全相同的情況下做相同的事情 ,並不一定能得到完全同樣的結果。這類問題「一般來說」是窮舉法無法直接得到最 佳解的,因為你無法絕對計算你的決策帶來的結果。以猜拳為例,在你要決定出什麼 拳時你無法得知你的對手要出什麼拳,因此無法計算出什麼拳必勝。RTS遊戲就算沒 有戰爭迷霧,但在你下任何指令時你無法知道對方同時會下什麼指令,你也不知道對 方會不會忽然手軟沒操作好,因而無法計算出絕對的結果。 但在一個非常嚴格的條件之下,這類問題有可能用窮舉解決,也就是這些未公開 資訊在任何的盤面/情況下絕對不影響最終勝負結果。在這樣的前提之下,這類遊戲 可以用窮舉解決。舉例來說,有這樣的一個猜拳遊戲跟原本規則基本上一樣,然後猜 三次採用積分制,贏一拳的可以拿到1分,但是其中A這方多了一種拳是比中指。中指 對上剪刀可以贏2分,對上石頭可以贏1分,對上布可以贏5分。對於A來說,他永遠無 法在出拳時得知對方想出什麼拳,所以也絕對無法推算最後自己會贏或輸幾分,可是 他只要一直比中指就會一直贏分數,就算無法得知最後自己贏了幾分(分數上沒有重 現性),可是最後終歸會贏(在最後的輸贏上有重現性)。所以在這樣的前提下,用 窮舉可以找出絕對最佳決策。 在不存在上一段的前提之下,最佳解就無法窮舉出來,所以就必須引入一些假設 來輔助。其中,最常使用的就是「機率/期望值最佳 = 最佳決策」之假設。橋牌比 賽中,莊家看不到防家雙方的牌,因此在只知道對方加起來張數的情況下,若無法得 到可以兼顧處理各種分配的決策下,往往會採用最高機率的分配來做為決策,來取得 「最可能」贏的打法。比如3張有以下兩種分配,分別是2-1 78%、3-0 22%,無法兼 顧的情況下就比較可能以對方是2-1分配的情況來下決策。當然,從叫牌、對手習慣 等等可以做出某些更高機率的猜測,這些就是更多的假設。 而事實上,在第一種分類中的遊戲因為複雜度而無法被窮舉的情況下,我們就會 同樣採用引入假設的方式來以可能的錯誤換取運算量的減少,但切記這跟第二類遊戲 中引用假設雖在做法上可能相似,可是意義上不同。 第一類:你知道它一定能重現,可是你算不完,不知道重現了這一步是好是壞,只好 用假設來猜它的好壞。 第二類:你不能重現它,因此你只好靠假設來裝做它是可以重現的問題,然後用解決 第一類問題的窮舉方法來解。 回到LayerZ提到的LoL AI是屬於第二類,你靠各種假設來猜用臉探草叢有多少機 率對面有人在裡面,如果有人那你會被對面造成多少傷害、如果沒人你有什麼利益, 這些利益又該怎麼評估,靠這樣來裝成它是第一類問題,然後就加加乘乘算出各種不 同決策的期望值,選期望值最大的行動來做。但是你又會發現就算這樣裝成它是第一 類,好像選擇還是可能會多到算不完(指向技我有超多的角度可以發,Flash我有超 多的位置可以移),所以在用假設把它從第二類問題降成第一類問題後,你又還要用 更多的假設把它從第一類中算不完的問題降成算得完的問題(我假設指向技一定要指 著一個敵方目標打才有意義,我假設想逃跑時Flash一定要放離對方最遠的點或能跳 過牆才最好逃,以此來減少選擇的量)。更多不保證是正確的假設,就使得決策的品 質可能更差,但是讓問題變得至少可以算出個解來。當然,大多數遊戲的假設就是一 堆簡單的經驗法則寫成的if-else,所以解的品質當然就好不到哪去了。 -- 「傳說的最後,魔王總是被勇者封印。但勇者會逝去、封印會衰弱,魔王卻永遠 不滅。傳說呢?傳說持續著。只是,變質了。所以對於傳說而言,只有反覆無常的自 己是主角,而魔王只是配角。勇者?勇者不過是消耗品罷了,封印則什麼也不是。妳 好不容易有機會當上配角,怎麼走回頭路想成為消耗品?妳早晚會什麼也不是的。」 --星.幻.夢的傳說 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.156.172 ※ 編輯: ddavid 來自: 114.32.156.172 (11/29 15:33)

11/29 15:47, , 1F
其實市面上多數遊戲的AI還是用alpha-beta來實做的
11/29 15:47, 1F

11/29 15:47, , 2F
else if 太痛苦了...
11/29 15:47, 2F

11/29 15:51, , 3F
不見得,像我記得大宇的天使帝國就有講過用if-else做的XD
11/29 15:51, 3F

11/29 15:51, , 4F
我以前也用if-else硬幹過西瓜棋的AI,事實上比起算不完的
11/29 15:51, 4F

11/29 15:52, , 5F
alpha-beta,if-else的c/p值可能更高XD
11/29 15:52, 5F

11/29 16:03, , 6F
對LoL的AI建議 我比較侵向以人為加上簡單的情勢猜測就是
11/29 16:03, 6F

11/29 16:07, , 7F
在遊戲過程中會記錄下各式資料,對線強弱,gank頻率,畫面
11/29 16:07, 7F

11/29 16:08, , 8F
上玩家消失次數,等海量的細微資料,以人為分析出這次AI的
11/29 16:08, 8F

11/29 16:09, , 9F
"個性" 再作出判斷就是..求得的可能不是最佳解,甚至連精準
11/29 16:09, 9F

11/29 16:09, , 10F
都談不上,但是這說不定才是最棘手的遊戲AI
11/29 16:09, 10F

11/29 16:16, , 11F
你講的就是引用大量人為假設來降低運算量的方式啦
11/29 16:16, 11F

11/29 16:18, , 12F
就好像你可以人為寫好假設遇到冰鳥你應該採用什麼打法的細
11/29 16:18, 12F

11/29 16:19, , 13F
節,可是萬一你遇到佛根的冰鳥你可能只能把他ban掉XD
11/29 16:19, 13F

11/29 16:19, , 14F
所以要多加一個對方ID的判斷(認真
11/29 16:19, 14F

11/29 16:20, , 15F
這就是又加更多假設啦,結果佛根換ID或者別人冒用他ID XD
11/29 16:20, 15F

11/29 16:21, , 16F
對我來說我不覺得AI會有其智慧,只是能無窮的運算而已
11/29 16:21, 16F

11/29 16:26, , 17F
AI會不會有真的「智慧」已經是個從物理科學吵到宗教哲學的
11/29 16:26, 17F

11/29 16:26, , 18F
問題了,別太在意XD
11/29 16:26, 18F

11/29 16:27, , 19F
XDD 回歸到遊戲AI 能在同樣的狀況做出不同的動作,而且都是
11/29 16:27, 19F

11/29 16:27, , 20F
中等偏上有80分的決策 就很厲害了XD
11/29 16:27, 20F

01/02 00:28, , 21F
推推
01/02 00:28, 21F
文章代碼(AID): #1Gjmv-Ir (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #1Gjmv-Ir (GameDesign)