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

看板Python作者 (EEcheng)時間5年前 (2019/04/05 17:17), 編輯推噓26(26058)
留言84則, 13人參與, 5年前最新討論串1/1
各位好, 目前我想做AI用來玩皇室戰爭(在電腦模擬器玩) 目前規劃是 使用python + opencv + pynq來完成 --opencv 透過hdmi線, 在jupyter平台上辨識場上目前卡牌的種類 --python 由opencv得到場上的狀況加以分析要出甚麼卡牌, 由pyt hon提供的api控制滑鼠, 做出選牌和下牌的動作 --pynq 用電路來加速opencv 由於目前還在熟悉工具怎麼用的階段, 但是就開始天馬行空想像 各種可能, 由於沒經驗, 也不確定我的想法是否可行, 希望各位 大神能給予意見.... 以下是我目前想到的幾個困難點, 若各位還有發現其他困難也希 望告訴我. 1. 假設成功辨識目前場上的情況, 接著在判斷如何下牌該用甚麼 方法比較好, 我想肯定不是傳統的if else來處理, 是否要用 機器學習來做(我記得python有函式庫可以叫)或其他更好的方 法? 假如真的需要用機器學習來解決, 有比較入門的套件可以 使用嗎(且能跑在jupyter上) 2. 在jupyter上跑的話能透過模組(pyqutogui之類的)控制滑鼠嗎 3. 整體來說是否可行?或餅畫太大 (PS:對於目前大學部二年級來說) 先在這感謝各位的幫忙 ~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.173.108.80 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1554455869.A.5AB.html

04/05 17:28, 5年前 , 1F
google > clash royale python reinforcement
04/05 17:28, 1F

04/05 18:56, 5年前 , 2F
DataScience板歡迎您
04/05 18:56, 2F

04/05 21:02, 5年前 , 3F
你這問題可能超過大學生難度太多,建議縮小Scope
04/05 21:02, 3F

04/05 21:03, 5年前 , 4F
光是"把卡牌辨識出來並且準確度>99%"搞不好都做要做很久
04/05 21:03, 4F

04/05 21:04, 5年前 , 5F
認出來之後要學習策略又會碰到很多RL常見必然碰到的問題
04/05 21:04, 5F

04/05 21:05, 5年前 , 6F
除非你是天才,或是已經對資料科學有很不錯的基礎,不然
04/05 21:05, 6F

04/05 21:06, 5年前 , 7F
大概最後就是做不出來然後整個鳥掉
04/05 21:06, 7F

04/05 21:11, 5年前 , 8F
卡牌有總表 用OCR加DB不就好了 策略直接建卡牌DB下去train
04/05 21:11, 8F

04/05 21:11, 5年前 , 9F
難的地方在於有辦法train出好策略嗎
04/05 21:11, 9F

04/05 21:21, 5年前 , 10F
卡牌因為不會變所以還好吧 直接比對就好 策略上比較
04/05 21:21, 10F

04/05 21:21, 5年前 , 11F
麻煩 環境牽扯到太多機率東西的rl都要訓練很久 可能
04/05 21:21, 11F

04/05 21:21, 5年前 , 12F
可以把別人玩的紀錄先當作prior試試 我嘴砲ml工程師
04/05 21:21, 12F

04/05 21:43, 5年前 , 13F
對有經驗的人來說當然簡單,但新手做這個可能有點超過了
04/05 21:43, 13F

04/05 21:44, 5年前 , 14F
新手先把「可以把牌卡正確無誤的認出來」做出來再來講
04/05 21:44, 14F

04/05 21:46, 5年前 , 15F
等做到認牌了,RL的難度跟CV認出牌卡也完全不在同一水平
04/05 21:46, 15F

04/05 21:53, 5年前 , 16F
樓上講OCR+DB很容易的,可能要考量一下 1.人工建資料庫
04/05 21:53, 16F

04/05 21:54, 5年前 , 17F
需要的Effort 2.卡片可能有動態效果,位置也可能移動
04/05 21:54, 17F

04/05 21:55, 5年前 , 18F
我覺得對新手來說,要克服這些工程問題都不是嘴巴講講就
04/05 21:55, 18F

04/05 21:56, 5年前 , 19F
可以做得出來的,有很多工程問題必須要去克服(需要經驗)
04/05 21:56, 19F

04/05 21:56, 5年前 , 20F
其實我覺得最崩潰的是卡牌屬性調整或是加新卡時很囧
04/05 21:56, 20F

04/05 21:59, 5年前 , 21F
辨認上原po可能可以先從sift開始試試看 每個round停
04/05 21:59, 21F

04/05 21:59, 5年前 , 22F
下來時去掃就行 自己找找看停下來有什麼特徵
04/05 21:59, 22F

04/05 21:59, 5年前 , 23F
我其實覺得光是要知道所有的牌卡可能性並建立資料庫就...
04/05 21:59, 23F

04/05 22:00, 5年前 , 24F
應該會嚇跑大部分新手了吧 (?)
04/05 22:00, 24F

04/05 22:11, 5年前 , 25F
@sma1033 對啊,如果考慮所有組合我肯定無法,所以目前
04/05 22:11, 25F

04/05 22:11, 5年前 , 26F
我是設定兩套(敵方和我方)固定的牌組來測
04/05 22:11, 26F

04/05 22:12, 5年前 , 27F
不過光兩套固定的對我這個新手還是蠻難@@
04/05 22:12, 27F

04/05 22:14, 5年前 , 28F
做RL系統最費工的部分本來就是建立穩定可靠的模擬環境
04/05 22:14, 28F

04/05 22:14, 5年前 , 29F
如果環境夠穩定,系統行為也很一致的話,用DQN可能就能跑
04/05 22:14, 29F

04/05 22:17, 5年前 , 30F
反過來說,如果環境中有很多隨機或是不可預測的成分就會
04/05 22:17, 30F

04/05 22:19, 5年前 , 31F
變得極度困難(下各種判斷的機率分布是複雜的條件機率)
04/05 22:19, 31F

04/05 22:19, 5年前 , 32F
很容易就會抓不到判斷準則,導致學得很糟
04/05 22:19, 32F

04/05 22:21, 5年前 , 33F
雖然各位說的我都還沒什麼概念,但是還是感謝各位撥空
04/05 22:21, 33F

04/05 22:21, 5年前 , 34F
回答,讓我知道個方向
04/05 22:21, 34F

04/05 22:27, 5年前 , 35F
我是建議遊戲規則知道的話,自己建一個遊戲環境可能較快
04/05 22:27, 35F

04/05 22:27, 5年前 , 36F
因為(1)不需要費神去認別人系統裡的東西(2)可以快速大量
04/05 22:27, 36F

04/05 22:28, 5年前 , 37F
累積經驗,而累積經驗又是RL演算法最重要的事
04/05 22:28, 37F

04/05 22:29, 5年前 , 38F
用別人系統的話應該跑沒幾輪就被判定「非正常使用」被ban
04/05 22:29, 38F

04/05 22:36, 5年前 , 39F
@sma1033 想問你指的建一個遊戲環境是神麼意思?
04/05 22:36, 39F

04/05 22:37, 5年前 , 40F
另外我是打算用rl的輸出透過python移動滑鼠點擊,應該
04/05 22:37, 40F

04/05 22:37, 5年前 , 41F
是不會被發現吧xD
04/05 22:37, 41F

04/05 22:39, 5年前 , 42F
用程式控制滑鼠等級本質上跟「用外掛」表現的行為相似啊
04/05 22:39, 42F

04/05 22:39, 5年前 , 43F
如果官方有在抓的話被發現可能被Ban,再來就是你需要大量
04/05 22:39, 43F

04/05 22:40, 5年前 , 44F
遊戲經驗才能訓練出能跑的RL,一般來說都是M個episode的
04/05 22:40, 44F

04/05 22:41, 5年前 , 45F
等級,你覺得用別人的系統來跑,玩個100萬場要多久?
04/05 22:41, 45F

04/05 22:42, 5年前 , 46F
如果不自己建立系統來加速蒐集經驗,我覺得應該不太可能
04/05 22:42, 46F

04/05 22:42, 5年前 , 47F
在合理時間內訓練出真正會動的東西(除非你的遊戲極簡單)
04/05 22:42, 47F

04/05 22:45, 5年前 , 48F
目前看到所有用RL演算法玩遊戲學得不錯的Case都是這樣搞
04/05 22:45, 48F

04/05 22:49, 5年前 , 49F
我剛才發現我有個地方弄錯,不過總之你需要「跑得極快」
04/05 22:49, 49F

04/05 22:50, 5年前 , 50F
的遊戲環境就是了,就是不能用正常速度跑,而是正常速度
04/05 22:50, 50F

04/05 22:50, 5年前 , 51F
幾百倍或是上千倍速度運行的「環境」,這樣才有可能讓你
04/05 22:50, 51F

04/05 22:51, 5年前 , 52F
在有限時間內蒐集到玩個幾百萬場的遊戲經驗
04/05 22:51, 52F

04/05 22:52, 5年前 , 53F
如果你是用單機版的遊戲環境來當攻克目標的話就請忽略我
04/05 22:52, 53F

04/05 22:52, 5年前 , 54F
剛才說「線上可能被Ban」的那一段
04/05 22:52, 54F

04/05 22:54, 5年前 , 55F
@sma1033 對欸,應該要建自己的系統。但是若建自己的系
04/05 22:54, 55F

04/05 22:54, 5年前 , 56F
統那不就是要重現那個遊戲嗎?另外對手的出牌機制不是也
04/05 22:54, 56F

04/05 22:54, 5年前 , 57F
要變成由我設計?
04/05 22:54, 57F

04/05 22:55, 5年前 , 58F
回樓上:Yes,目前看到做AI打Game的團隊都是這樣做的
04/05 22:55, 58F

04/05 22:58, 5年前 , 59F
人類玩遊戲可能玩個幾十場就會抓到訣竅擬定策略,但是目
04/05 22:58, 59F

04/05 22:58, 5年前 , 60F
自己看看吧不縮了 另外
04/05 22:58, 60F

04/05 22:58, 5年前 , 61F
推老師的c語言課程 收益良多
04/05 22:58, 61F

04/05 22:58, 5年前 , 62F
前的電腦演算法都很笨,大概都要打個幾百萬場才會到同等
04/05 22:58, 62F

04/05 23:00, 5年前 , 63F
基本上就是對稱對戰的alpha star
04/05 23:00, 63F

04/05 23:01, 5年前 , 64F
@sma1033 如果連對手出牌都要由我設計(就要考慮我方出
04/05 23:01, 64F

04/05 23:01, 5年前 , 65F
神麼牌),這樣不就只是把我原本的問題(讓我方出牌合理)
04/05 23:01, 65F

04/05 23:01, 5年前 , 66F
反過來說...(不知道你懂我的意思嗎??
04/05 23:01, 66F

04/05 23:02, 5年前 , 67F
樓上有人回了,就要做對打吧
04/05 23:02, 67F

04/05 23:04, 5年前 , 68F
你不想用傳統做if的腳本 那目前就是機器學習了 另外
04/05 23:04, 68F

04/05 23:04, 5年前 , 69F
看你的敘述 我想光是要做到圖片辨識 拆包讀取原始黨
04/05 23:04, 69F

04/05 23:04, 5年前 , 70F
做label就是一件大工程了
04/05 23:04, 70F

04/06 00:06, 5年前 , 71F
04/06 00:06, 71F

04/06 00:24, 5年前 , 72F

04/06 00:58, 5年前 , 73F
建DB是必要的 不然你怎模擬? 這根本不需要考慮難度 因為沒
04/06 00:58, 73F

04/06 00:58, 5年前 , 74F
DB你連出牌都無法
04/06 00:58, 74F

04/06 12:56, 5年前 , 75F
你可以參考hearstone tracker 他只有辨識圖片記牌功能
04/06 12:56, 75F

04/06 12:56, 5年前 , 76F
你先能做到辨識環境所有參數就很厲害了
04/06 12:56, 76F

04/07 20:21, 5年前 , 77F
先不潑你冷水 你可以試試看 你就知道你這餅畫得多大了
04/07 20:21, 77F

04/07 20:25, 5年前 , 78F
辨識卡牌很簡單啦 你又不是人臉辨識 固定的形狀顏色很好認
04/07 20:25, 78F

04/07 20:35, 5年前 , 79F
喔我以為是純卡牌遊戲 皇室這種戰鬥畫面 嗯....加油
04/07 20:35, 79F

04/08 13:30, 5年前 , 80F
這個做RL 應該不簡單
04/08 13:30, 80F

04/09 14:29, 5年前 , 81F
餅畫太大了 光是即時出牌的系統就很難辨識了
04/09 14:29, 81F

04/09 14:30, 5年前 , 82F
而且這遊戲有座標的概念 不可能這麼簡單
04/09 14:30, 82F

04/09 14:32, 5年前 , 83F
即時戰略的系統 可能需要每秒掃一次畫面加辨識 光這
04/09 14:32, 83F

04/09 14:32, 5年前 , 84F
個你模型就有難度了
04/09 14:32, 84F
文章代碼(AID): #1SfnqzMh (Python)
文章代碼(AID): #1SfnqzMh (Python)