[問題] 製作AI玩卡牌遊戲的可行性

作者: eecheng87 (EEcheng)   2019-04-05 17:17:47
各位好, 目前我想做AI用來玩皇室戰爭(在電腦模擬器玩)
目前規劃是 使用python + opencv + pynq來完成
作者: jiyu520 (不要鯽魚我)   2019-04-05 17:28:00
google > clash royale python reinforcement
作者: st1009 (前端攻城師)   2019-04-05 18:56:00
DataScience板歡迎您
作者: sma1033 (死馬)   2019-04-05 21:02:00
你這問題可能超過大學生難度太多,建議縮小Scope光是"把卡牌辨識出來並且準確度>99%"搞不好都做要做很久認出來之後要學習策略又會碰到很多RL常見必然碰到的問題除非你是天才,或是已經對資料科學有很不錯的基礎,不然大概最後就是做不出來然後整個鳥掉
作者: hsnuyi (羊咩咩~)   2019-04-05 21:11:00
卡牌有總表 用OCR加DB不就好了 策略直接建卡牌DB下去train難的地方在於有辦法train出好策略嗎
作者: goldflower (金色小黃花)   2019-04-05 21:21:00
卡牌因為不會變所以還好吧 直接比對就好 策略上比較麻煩 環境牽扯到太多機率東西的rl都要訓練很久 可能可以把別人玩的紀錄先當作prior試試 我嘴砲ml工程師
作者: sma1033 (死馬)   2019-04-05 21:43:00
對有經驗的人來說當然簡單,但新手做這個可能有點超過了新手先把「可以把牌卡正確無誤的認出來」做出來再來講等做到認牌了,RL的難度跟CV認出牌卡也完全不在同一水平樓上講OCR+DB很容易的,可能要考量一下 1.人工建資料庫需要的Effort 2.卡片可能有動態效果,位置也可能移動我覺得對新手來說,要克服這些工程問題都不是嘴巴講講就可以做得出來的,有很多工程問題必須要去克服(需要經驗)
作者: goldflower (金色小黃花)   2019-04-05 21:56:00
其實我覺得最崩潰的是卡牌屬性調整或是加新卡時很囧辨認上原po可能可以先從sift開始試試看 每個round停下來時去掃就行 自己找找看停下來有什麼特徵
作者: sma1033 (死馬)   2019-04-05 21:59:00
我其實覺得光是要知道所有的牌卡可能性並建立資料庫就...應該會嚇跑大部分新手了吧 (?)
作者: eecheng87 (EEcheng)   2019-04-05 22:11:00
@sma1033 對啊,如果考慮所有組合我肯定無法,所以目前我是設定兩套(敵方和我方)固定的牌組來測不過光兩套固定的對我這個新手還是蠻難@@
作者: sma1033 (死馬)   2019-04-05 22:14:00
做RL系統最費工的部分本來就是建立穩定可靠的模擬環境如果環境夠穩定,系統行為也很一致的話,用DQN可能就能跑反過來說,如果環境中有很多隨機或是不可預測的成分就會變得極度困難(下各種判斷的機率分布是複雜的條件機率)很容易就會抓不到判斷準則,導致學得很糟
作者: eecheng87 (EEcheng)   2019-04-05 22:21:00
雖然各位說的我都還沒什麼概念,但是還是感謝各位撥空回答,讓我知道個方向
作者: sma1033 (死馬)   2019-04-05 22:27:00
我是建議遊戲規則知道的話,自己建一個遊戲環境可能較快因為(1)不需要費神去認別人系統裡的東西(2)可以快速大量累積經驗,而累積經驗又是RL演算法最重要的事用別人系統的話應該跑沒幾輪就被判定「非正常使用」被ban
作者: eecheng87 (EEcheng)   2019-04-05 22:36:00
@sma1033 想問你指的建一個遊戲環境是神麼意思?另外我是打算用rl的輸出透過python移動滑鼠點擊,應該是不會被發現吧xD
作者: sma1033 (死馬)   2019-04-05 22:39:00
用程式控制滑鼠等級本質上跟「用外掛」表現的行為相似啊如果官方有在抓的話被發現可能被Ban,再來就是你需要大量遊戲經驗才能訓練出能跑的RL,一般來說都是M個episode的等級,你覺得用別人的系統來跑,玩個100萬場要多久?如果不自己建立系統來加速蒐集經驗,我覺得應該不太可能在合理時間內訓練出真正會動的東西(除非你的遊戲極簡單)目前看到所有用RL演算法玩遊戲學得不錯的Case都是這樣搞我剛才發現我有個地方弄錯,不過總之你需要「跑得極快」的遊戲環境就是了,就是不能用正常速度跑,而是正常速度幾百倍或是上千倍速度運行的「環境」,這樣才有可能讓你在有限時間內蒐集到玩個幾百萬場的遊戲經驗如果你是用單機版的遊戲環境來當攻克目標的話就請忽略我剛才說「線上可能被Ban」的那一段
作者: eecheng87 (EEcheng)   2019-04-05 22:54:00
@sma1033 對欸,應該要建自己的系統。但是若建自己的系統那不就是要重現那個遊戲嗎?另外對手的出牌機制不是也要變成由我設計?
作者: sma1033 (死馬)   2019-04-05 22:55:00
回樓上:Yes,目前看到做AI打Game的團隊都是這樣做的人類玩遊戲可能玩個幾十場就會抓到訣竅擬定策略,但是目
作者: jimmy10309 (我的桌子下有躲人)   2019-04-05 22:58:00
https://youtu.be/2EN7LvhJQ7s 自己看看吧不縮了 另外推老師的c語言課程 收益良多
作者: sma1033 (死馬)   2019-04-05 22:58:00
前的電腦演算法都很笨,大概都要打個幾百萬場才會到同等
作者: jimmy10309 (我的桌子下有躲人)   2019-04-05 23:00:00
基本上就是對稱對戰的alpha star
作者: eecheng87 (EEcheng)   2019-04-05 23:01:00
@sma1033 如果連對手出牌都要由我設計(就要考慮我方出神麼牌),這樣不就只是把我原本的問題(讓我方出牌合理)反過來說...(不知道你懂我的意思嗎??
作者: sma1033 (死馬)   2019-04-05 23:02:00
樓上有人回了,就要做對打吧
作者: jimmy10309 (我的桌子下有躲人)   2019-04-05 23:04:00
你不想用傳統做if的腳本 那目前就是機器學習了 另外看你的敘述 我想光是要做到圖片辨識 拆包讀取原始黨做label就是一件大工程了
作者: single4565 (leekdumpling韭菜水餃)   2019-04-06 00:06:00
作者: wilson85771 (HOW)   2019-04-06 00:24:00
作者: hsnuyi (羊咩咩~)   2019-04-06 00:58:00
建DB是必要的 不然你怎模擬? 這根本不需要考慮難度 因為沒DB你連出牌都無法
作者: vi000246 (Vi)   2019-04-06 12:56:00
你可以參考hearstone tracker 他只有辨識圖片記牌功能你先能做到辨識環境所有參數就很厲害了
作者: sooge (老衲)   2019-04-07 20:21:00
先不潑你冷水 你可以試試看 你就知道你這餅畫得多大了辨識卡牌很簡單啦 你又不是人臉辨識 固定的形狀顏色很好認喔我以為是純卡牌遊戲 皇室這種戰鬥畫面 嗯....加油
作者: kumitang (kumi)   2019-04-08 13:30:00
這個做RL 應該不簡單
作者: BlgAtlfans (BLG_Eric)   2019-04-09 14:29:00
餅畫太大了 光是即時出牌的系統就很難辨識了而且這遊戲有座標的概念 不可能這麼簡單即時戰略的系統 可能需要每秒掃一次畫面加辨識 光這個你模型就有難度了

Links booklink

Contact Us: admin [ a t ] ucptt.com