DeeperMind扑克机器人适用于PokerStars、PartyPoker和GGPoker
这个扑克机器人可以在PokerStars、PartyPoker和GG Poker上自动玩牌。其他任何牌桌也可以进行映射。 它通过图像识别、蒙特卡洛模拟和基本遗传算法工作。 鼠标会自动移动,机器人可以根据大量参数潜在地连续玩几个小时。
您可以从这里下载二进制文件并直接运行可执行文件: http://www.deepermind-pokerbot.com
运行机器人:
PartyPoker:
* 使用快进牌桌
* 选择官方PartyPoker牌桌抓取器
.. figure:: doc/partypoker.gif
PokerStars:
- 使用Zoom牌桌
- 选择官方PokerStars牌桌抓取器
- 对于PokerStars,您需要对客户端进行一些调整。为了使用官方PokerStars牌桌抓取器运行,它需要看起来完全如下所示:
- 确保匹配牌的样式(4色)、盖住的牌的样式和牌桌样式。
.. figure:: doc/ps-example.png
GGPoker:
使用官方GGPoker牌桌时,确保您的GGPoker设置如下所示:
.. figure:: doc/ggpk2.png
一般设置:
如果您只想运行机器人,请执行以下操作:
从这里安装机器人的二进制文件:http://www.deepermind-pokerbot.com
然后您可以立即运行机器人。它将分析扑克客户端,移动鼠标,并根据其预编程的策略之一进行游戏。大多数策略都是基于Zoom或快进牌桌的。 欢迎您编辑和改进任何策略,以优化机器人的游戏以满足您的需求。
在大多数情况下,将扑克客户端放在虚拟机中可能很有用,以避免它干扰机器人。此外,机器人将能够在虚拟机内控制鼠标,而不会阻塞整个计算机:
-
下载VirtualBox:https://www.virtualbox.org/
-
例如从这里下载Windows 10 ISO文件 https://www.softlay.com/apps/operating-system
-
创建一个新的VirtualBox环境,并使用ISO文件作为启动
-
确保只给VirtualBox 1个CPU,因为机器人需要计算能力(主要用于OCR)
-
在VirtualBox环境中安装PartyPoker或PokerStars
-
直接将扑克机器人安装到您的计算机上(在VirtualBox之外)
-
在设置中选择您的VirtualBox实例(而不是直接鼠标控制)
-
按聊天按钮或加入此链接加入Discord聊天:https://discord.gg/xB9sR3Q7r3
-
当前版本仅适用于Windows
-
不要遮挡牌桌视图,因为机器人基于图像识别
-
只应该有一个牌桌窗口可见。
-
为获得最佳性能,最小化虚拟机中的所有窗口,除了牌桌窗口本身
-
不要在VirtualBox中使用任何DPI缩放
-
在设置中,尝试选择您的虚拟机而不是直接鼠标控制。这样鼠标移动就不会妨碍您。
策略分析器
- 您可以在策略分析器中查看每种策略的盈利能力。
- 条形图显示了在每个阶段(翻牌前、翻牌、转牌和河牌)各种行动类型导致的赢或输
更详细地查看堆叠条形图,可以为您提供如何调整策略以最大化您的赢利的线索:
.. figure:: doc/analyzer_bar2.png
分析每个阶段内的个别回合:
.. figure:: doc/analyzer_bar3.png
分析个别牌局:
.. figure:: doc/strategy_analyzer.gif
策略编辑器
机器人做决策时会考虑多种因素,可以在策略编辑器中进行调整:
- 权益(获胜概率),通过蒙特卡洛模拟计算
- 权益和最小跟注/下注值需要在相应曲线的左侧,机器人才不会弃牌
- 考虑了其他各种因素,如前几轮的行为。查看策略编辑器了解更多详情。
- 将鼠标悬停在每个项目上以查看更详细的描述
.. figure:: doc/strategy2.png
可以为每种策略编辑各种其他选项:
.. figure:: doc/strategy_editor.gif
如何改进策略的建议:
* 您通常需要至少玩2000手才能得出任何结论。5000手更好。少于1000手的任何情况都完全是随机的。
* 最好买入超过最低限额,这将提高机器人的性能,因为它有更多回旋余地。例如,在0.01/0.02的牌桌上,买入超过最低限额$2。理想情况下从$4甚至更多开始。
* 查看策略分析器并反向工作。首先改进河牌玩法,然后一旦这个好了就转到转牌,然后到翻牌等。这是因为游戏是路径依赖的。
* 如果您在范围内进行更改,可能需要调整所有最小权益,因为它会改变权益计算。
* 祝你好运!
完整版:
~~~~~~~~~~~~~
完整版允许您:
* 编辑和创建新策略
* 查看所有用户的所有策略
要购买,请点击此链接。然后您将在24小时内收到密码。
http://www.deepermind-pokerbot.com/purchase
或者,您可以通过电子邮件或Discord直接联系我并请求密码,然后支付比特币到:
1Py5o4WLYMizXc8pFPqzD4yeCAm53BhJit
如果您对代码库做出一些有意义的贡献,您也可以获得免费订阅。
最简单的贡献方式是:
- 添加新牌桌
- 添加新策略
- 直接对代码进行修复并创建拉取请求
映射新牌桌
------------------
机器人可以学习读取新牌桌,可以使用模板或通过训练基于给定模板使用数据增强的神经网络。
`点击此链接观看如何添加新牌桌的视频说明 <https://rb.gy/jut3ws>`_ 或在www.deepermind-pokerbot.com上观看视频
添加新牌桌的设置如下所示:
.. figure:: doc/scraper.png
- 打开pokerbot并点击表格设置,打开帮助创建新表格的窗口。
- 在旁边打开扑克客户端,确保未进行DPI缩放,以便pokerbot能够截图。
- 首先创建一个新模板,输入模板名称,例如Pokerstars 1-2 zoom poker。点击"空白新建"。
- 现在第一步是截取带有牌桌的Pokerstars窗口的截图。点击"截图"按钮即可。你应该在下方窗口看到屏幕的完整截图。
- 接下来标记扑克牌桌窗口的左上角,这将作为后续所有操作的参考点。先点击左上部分,再点击右下部分来标记左上角。完成后它会出现在第二个窗口中。点击"保存新选择的左上角"按钮保存。
- 现在可以通过点击"从左上角裁剪"按钮进行裁剪。这将丢弃大部分截图,只保留左上角及其右侧和下方几百像素的部分。
- 接下来标记窗口中的其他内容。从按钮搜索区域开始。同样先点击按钮区域的左上角,再点击按钮出现位置的右下角。对选择满意后,点击"按钮搜索区域"。
- 将鼠标悬停在按钮上可以看到更详细的说明。
- 请注意,你需要多次截图、裁剪(无需再次选择左上角,只需加载后裁剪图像)。然后选择不同的图像,并点击相应按钮保存。你需要教会它识别每张牌和每个按钮等。
注意事项:
------------------------------
**强烈建议在验证机器人正确运行之前不要使用真实账户进行测试(以避免账户和资金损失)**
- 运行机器人的最低系统要求:
- Windows 10 x64或更高版本(可能在较早版本上运行,但未验证其正确性)
- 4GB或更多RAM内存
- 1.6GB硬盘空间(越多越好)
- 4核4线程或更高的处理器
- 不需要GPU(神经网络训练可选择使用GPU)
- 1920*1800屏幕分辨率(可能在更低分辨率下运行,但未验证其正确性)
- 如果使用Virtual Box,请考虑其消耗并添加到上述系统要求中
- 扑克应用通常在Windows 7或更高版本上运行
- VirtualBox 7.0.12或更高版本及其相应扩展包
通过docker运行
------------------------------
- ``$ git clone https://github.com/dickreuter/Poker.git``
- ``$ cd Poker``
- ``$ docker compose up -d``
- ``$ xhost local:root # 允许本地机器的root用户连接到X Windows显示``
- ``$ docker-compose exec app python3 main.py # 容器运行后,可以使用此命令启动机器人``
通过Python源代码运行
------------------------------
- 从此处下载PyCharm社区版作为IDE: https://www.jetbrains.com/pycharm/download/#section=windows
- 安装Anaconda https://www.anaconda.com/products/distribution
- 下载tesserocr: https://github.com/simonflueckiger/tesserocr-windows_build/releases/download/tesserocr-v2.6.0-tesseract-5.3.1/tesserocr-2.6.0-cp311-cp311-win_amd64.whl -Out tesserocr-2.6.0-cp311-cp311-win_amd64.whl 并用pip install安装whl文件
- 创建环境并运行``pip install -r requirements.txt``,然后单独运行pip install tesserocr
- 你可能还需要获取C++运行时分发包: https://visualstudio.microsoft.com/downloads/
- 从https://www.virtualbox.org/wiki/Downloads 安装VirtualBox,并将扑克客户端放入VirtualBox中。这样可以在不使用主窗口鼠标的情况下控制它。
- 在PyCharm中将上述创建的虚拟环境设置为解释器后运行``main.py``(查看YouTube教程)
包和模块:
~~~~~~~~~~~~~~~~~~~~~
main.py: 入口点
poker.scraper
^^^^^^^^^^^^^
包含用户界面和帮助映射新表格的例程
- ``recognize_table``: 基于创建的映射识别表格上不同项目的功能
- ``screen_operations``: 各种例程,如截图、裁剪等
- ``table_setup``: 与GUI相关的例程
- ``ui_table_setup``: QT用户界面。相应的py文件通过父文件夹中的makegui.bat创建。要编辑GUI,请下载QT Designer并打开.ui文件。
poker.decisionmaker
^^^^^^^^^^^^^^^^^^^
- ``decisionmaker.py``: 基于输入做出最终决策的行动
- ``montecarlo_numpy2.py``: 基于快速numpy的蒙特卡洛模拟来计算权益。尚未正确运行。一些测试失败。欢迎修复。
- ``montecarlo_python.py``: 相对较慢的基于Python的蒙特卡洛权益计算。支持其他玩家的翻牌前范围。
poker.tests
^^^^^^^^^^^
- ``test_montecarlo_numpy.py``: numpy蒙特卡洛的测试
- ``test_pylint.py``: pylint和pydoc测试,确保符合pep8标准和静态代码分析
图形用户界面(GUI)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- 下载开源项目的QT: https://www.qt.io/download-open-source
- 使用qt designer编辑gui/ui中的任何.ui文件
下一步优先事项
---------------
- [ ] 更新测试。一些测试目前已过时。需要更多测试
- [ ] 添加更多策略
- [ ] 从pytesseract切换到tesserocr以加快OCR速度,这应该会大大加快机器人速度
- [ ] 更好地分析收集的数据以改进策略
修复代码
~~~~~~~~~~~~~~~~~~~~~~~~
- 修复代码并向origin/master发起拉取请求:
一个人很难在扑克方面击败全世界。这就是为什么本仓库旨在创建一个协作环境,可以添加和评估模型。
要贡献,请执行以下操作:
- 获取 PyCharm 并构建虚拟 Python 环境。您可以执行:``pip install -r requirements.txt``(见上文)
- 将您的分支克隆到本地机器。您可以直接在 PyCharm 中完成:VCS --> 从版本控制检出 --> git
- 将原始仓库(您从中创建分支的仓库)添加为远程仓库,并将其命名为 upstream(与您分支的连接应命名为 origin)。这可以通过 VCS --> Git --> 远程仓库来完成
- 创建新分支:点击右下角的 master,然后点击"新建分支"
- 进行编辑
- 确保所有测试通过。在文件 --> 设置 --> Python 集成工具中切换到 pytest。然后您可以右击 tests 文件夹并运行所有测试。所有测试都需要通过。确保添加您自己的测试,只需将函数命名为 test\_... 即可
- 确保所有测试都通过。最好按上述方法运行 pytest(在 PyCharm 中只需右击 tests 文件夹并运行)。如果测试失败,您可以通过右击测试进行调试,设置断点,甚至在断点处打开控制台:https://stackoverflow.com/questions/19329601/interactive-shell-debugging-with-pycharm
- 提交您的更改(CTRL+K)
- 将更改推送到您的 origin(您的分支)(CTRL+SHIFT+K)
- 如果 upstream master 已经有更新,要使您的分支与之保持同步:变基到 upstream master:点击 PyCharm 右下角的分支名称,然后点击 upstream/master,再点击变基到。您可能需要解决一些冲突。完成后,请务必始终强制推送(ctrl+shift+k),(而不仅仅是推送)。这可以通过选择推送旁边的下拉菜单并选择强制推送来完成(重要:不要推送并合并已变基的分支到您的远程仓库)
- 在您的 github.com 上创建一个拉取请求,将您的分支合并到 upstream master
- 当您的拉取请求被批准后,它将被合并到 upstream/master
- 请确保所有测试都通过,包括 pylint 测试。您可以在本地机器上运行它们,或者在推送时检查 github 上的 travis 日志。[目前有许多测试失败,欢迎帮助修复它们!]
常见问题
左上角没有显示
~~~~~~~~~~~~~~
- 确保一切看起来与本文档顶部的图片完全一致。
* 按钮需要看起来完全一样,并且必须是英文且未缩放。颜色需要是标准的。
* 大多数桌子都映射到真钱。它们不适用于模拟货币。
* 扑克桌窗口必须完全可见且不能缩放,否则无法正确检测。
* 在 Partypoker 中,打开桌子时,选择桌子选项,然后选择**恢复默认大小**以确保桌子处于默认大小。
- 桌子映射适用于真钱的快速前进和变焦游戏。在 Partypoker 中使用 Supersonic3 桌子,或在 Pokerstars 中使用 McNaught 桌子。
- 如果仍然不工作,考虑按上述方法教它识别新桌子。
无法识别牌
~~~~~~~~~~
- 确保一切看起来与本文档顶部的图片完全一致。
* 确保使用真钱。模拟货币的桌子是不同的。
* 确保您坐在如上图所示的位置。
* 目前机器人仅适用于 6 人桌。
我需要使用虚拟机吗?
~~~~~~~~~~~~~~~~~~~~
- 对于 Pokerstars,您绝对需要,否则您将在几分钟内被封禁,账户将被冻结。对于 Partypoker,我不确定。但最好查看条款和条件。
分析日志和报告问题
~~~~~~~~~~~~~~~~~~
- 在您安装扑克机器人的文件夹中,有一个包含日志文件的子文件夹 /log。在 /log/screenshots 中还有一些可能有助于调试问题的截图。
- 在此 GitHub 页面顶部的链接 https://github.com/dickreuter/Poker/issues 创建一个问题,或发送电子邮件至 dickreuter@gmail.com。
相关项目
--------
通过自我对弈训练机器人是一个单独的项目,可以在这里找到:
https://github.com/dickreuter/neuron_poker