[问题] 制作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