作者eucylin (Cloud)
看板GameDesign
標題[程式] 請教棋盤類遊戲AI學習建議
時間Wed Jul 1 14:28:36 2015
本魯最近要跟別人合作寫一個 棋盤類、回合制的遊戲
棋盤大小在6x6 ~ 8x8 之間
規則類似象棋 + 遊戲王
透過移動棋子來攻擊對手的棋子,只是一回合可移動的棋子不只一個
最近在思考AI的部分怎麼寫
由於本魯以前沒接觸過什麼AI設計,對審局什麼的這方面較不理解
查找資料後又聽聞回合制的AI會比即時戰略的AI更難寫,甚感惶恐
所以來請教版上的神人大大:
有沒有什麼適合的AI入門書籍?(中文佳、回合制AI佳)
或是遊戲AI的教學或學習網站、經典必讀這類的
謝謝各位了!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.125.121.89
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1435732118.A.9B8.html
1F:→ azureblaze: 對AI而言回合和即時是一樣的東西吧 07/01 14:55
2F:→ azureblaze: 會說回合難應該是因為棋類的發展很久了 07/01 14:56
3F:→ azureblaze: 要做出跟其他比有競爭力的不容易 07/01 14:56
4F:推 cowbaying: 我認為沒有什麼必讀的 重點是你想要怎樣讓你的程式能 07/01 15:18
5F:→ cowbaying: 夠思考 07/01 15:18
6F:→ cowbaying: AI其實就是一堆if 組成的 07/01 15:19
7F:→ cowbaying: 可以先參考版上#1Jx_qm_f 有原始碼 07/01 15:21
8F:推 cooper6334: A*,Alpha-Beta,蒙地卡羅 可以google看看這些演算法 07/01 15:56
9F:→ hodsala: 跟著感覺走 07/01 16:01
10F:→ titan1127: 你怎麼想就讓程式怎麼想 07/01 17:11
11F:推 LayerZ: 走出一步,算出一步,算出N步,邊算邊計分 07/01 17:23
12F:推 oikl1268: 看到遊戲介紹和我先前設計的桌遊竟然有9成像 ̄▽ ̄ 07/01 18:04
13F:→ oikl1268: 不過後來發現深廣度很難設計,就轉設計別的遊戲了 07/01 18:05
14F:推 zxcmoney: 將情境轉換成數字加以決策 就是運籌學與博弈論吧? 07/01 19:06
15F:推 ctrlbreak: finite-state machine 有限狀態機 07/01 21:01
16F:推 laymu: 讓AI每次都丟骰子決定要幹麼就好了 07/01 21:02
17F:推 holymars: 即時制的AI通常基於狀態機(FSM)或行為樹(Behavior tree) 07/01 22:33
18F:→ holymars: 回合制戰棋的AI會基於search algorithm像上面提的A*之類 07/01 22:33
19F:→ holymars: 要基於search algorithm就得有一種計算方法來評估每一種 07/01 22:34
20F:→ holymars: 盤面的「分數」再基於回合的盤面變化來進行search 07/01 22:34
21F:→ holymars: 要說哪個比較難寫..總之就是各有各的用途吧 07/01 22:35
22F:→ viceversa56: 有空去看一下A*吧,很多尋路都會用到,當然不用也可以 07/01 23:54
23F:→ viceversa56: 製作出來 07/01 23:54
24F:→ viceversa56: 我覺得你這個遊戲沒有到這麼難,你的AI不是設計和電腦 07/02 00:01
25F:→ viceversa56: 對戰,如果是設計成線上遊戲,就要用client server架構 07/02 00:03
26F:→ viceversa56: 眼殘..把即時戰略看成要做線上即時遊戲.. 07/02 00:06
27F:推 cybaw: 離散數學? 07/02 12:49
28F:→ eucylin: 謝謝各位的建議!! 目前正在嘗試用Alpha-beta剪枝設計中 07/03 14:26
29F:推 ddavid: @laymu 每次都丟骰子不行喔,這樣你會發現AI的行為完全沒 07/04 01:22
30F:→ ddavid: 有一致性,可能會發生前一刻往前走,下一刻又沒理由地往後 07/04 01:23
31F:→ ddavid: 走,連基本if-then AI的行動感都不如 07/04 01:24
32F:→ ddavid: 大概就像RPG遊戲中常見路人NPC在路上沒目標亂走一通的感覺 07/04 01:25
33F:推 ddavid: 回合制AI比即時制AI難寫的誤解,主因應是出在玩家對AI的期 07/04 01:29
34F:→ ddavid: 待差別。事實上舉出Starcraft跟LoL的AI來看,至今仍是遠遠 07/04 01:30
35F:→ ddavid: 落後玩家。Starcraft只要技術戰術運用得宜,從一挑二到一 07/04 01:31
36F:→ ddavid: 挑七家電腦都是沒問題的事情。LoL也是一個會玩的玩家就足 07/04 01:31
37F:→ ddavid: 以一個人殺爆五個電腦,這還是在電腦英雄的經濟是作弊處理 07/04 01:32
38F:→ ddavid: 的條件下。但玩家因為有操作感又殺得很爽,所以不覺得電腦 07/04 01:32
39F:→ ddavid: 爛到這個地步不好玩,真的想要強力對戰感的都去打玩家了。 07/04 01:33
40F:→ ddavid: 相較之下回合制的AI會比較被要求對應強度,特別是常見棋類 07/04 01:34
41F:→ ddavid: 遊戲的目標更都擺在直接正面跟人類對抗。一開始評估標準落 07/04 01:35
42F:→ ddavid: 差就很大了。 07/04 01:35
43F:推 os653: Starcraft跟LoL的AI目的本來就不是要多強,會放水很正常 07/04 03:11
44F:→ os653: 以前War3有些特別強調AI的地圖就不是那麼好打了 07/04 03:13
45F:→ viceversa56: 身為一個玩家對ai期待至少不要走廢步 XD 07/05 00:33
46F:→ viceversa56: 突然想到,以前做回合制遊戲,當ai難度提高 07/05 00:33
47F:→ viceversa56: Alpha-beta搜尋計算時間會變長,回合制遊戲電腦想個3~ 07/05 00:34
48F:→ viceversa56: 5秒沒關係,但線上即時遊戲的ai,沒辦法讓BOSS思考 07/05 00:34
49F:→ viceversa56: 太久,這也許也是BOSS不強原因之一 07/05 00:34
50F:推 cjcat2266: 是因為boss太強就不好玩了吧,強的即時遊戲boss不難寫 07/05 05:57
51F:→ cjcat2266: 難寫的是好玩的boss 07/05 05:57
52F:推 cjcat2266: 及時遊戲boss行為應由遊戲設計師和AI程式設計師合作 07/05 05:59
53F:→ cjcat2266: 像薩爾達傳說的boss就是這樣,不強,但是設計得很好玩 07/05 06:00
54F:推 ddavid: 即時戰略遊戲AI讓你覺得強的,一方面是地圖設計配合,另外 07/07 01:38
55F:→ ddavid: 就是加上一些作弊(地圖全開、收入調整) 07/07 01:39
56F:→ ddavid: Starcraft跟LoL與其說AI本來就不是要多強,不如說要做得強 07/07 01:40
57F:→ ddavid: Cost太高了沒意義。要是Cost不高的話當然是不做白不做,還 07/07 01:40
58F:→ ddavid: 可以加入看起來很公平的難度調整讓玩家看起來很高級XD 07/07 01:41
59F:→ ddavid: 另外對戰的即時戰略遊戲沒辦法用強大Boss處理難度,基本條 07/07 01:42
60F:→ ddavid: 件是公平的,在運算要快的前提下想跟戰術可以不斷進化學習 07/07 01:44
61F:→ ddavid: 的人類玩家一樣強實在挺難的。 07/07 01:44
62F:→ ddavid: 但事實上話說回來,即便是非即時的SLG,認真做AI的遊戲也 07/07 01:45
63F:→ ddavid: 是少中之少......XD 07/07 01:45
64F:推 cowbaying: 太強的AI = hardcore 07/07 08:15
65F:→ LayerZ: mmo boss強不強其實跟AI沒有多大關係喔,最近剛好接觸到一 07/07 11:45
66F:→ LayerZ: 款遊戲 "史丹利的預言" 可以參考看看 07/07 11:46
67F:→ LayerZ: 需要的不是AI而是心理學XD 不過跟棋盤AI完全是兩個方向了 07/07 11:49