asd976385560 / MajsoulAI

以JianYangAI作后端,进行在线雀魂对局

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MajsoulAI

MajsoulAI项目旨在实现在《雀魂》中用AI代替玩家打麻将。MajsoulAI前端使用majsoul_wrapper通过监听《雀魂》websocket对局信息作为输入,以基于图像识别的模拟鼠标点击作为输出。MajsoulAI后端桥接至一个开源的天凤麻将AI(JianYangAI)。

使用说明

准备工作

我们强烈建议在安装与运行之前阅读majsoul_wrapper的使用说明,这是MajsoulAI的基础。

在安装完成majsoul_wrapper之后,一切都将变得水到渠成,因为这个项目并没有什么其他需要安装的了。

运行之前首先需要启动mitmproxy:

$python -m majsoul_wrapper

或在majsoul_wrapper目录里执行:

./majsoul_wrapper$ mitmdump -s addons.py

此时你应该可以看到一个新启动的Chrome,在这个Chrome窗口里打开雀魂并登陆。由于MajsoulAI是基于图像识别的,所以接下来AI启动与运行时需始终保持mitmproxy存活,且雀魂界面始终完整的置于屏幕顶层(位置与大小不重要,不是太小即可)。

启动AI

MajsoulAI支持两种AI调用模式。一种在本地启动AI,并通过IPC进行数据通信;另一种可以将AI托管在一个有公网IP的远程服务器,并通过网络通信调用AI(远程AI模式会更快,因为本地还需渲染雀魂页面,计算开销较大)。

本地AI模式可直接输入:

$python main.py

远程AI模式下,需先在远程服务器上clone MajsoulAI,并打开AI服务进程:

$python remote.py

该进程将持续监听14782端口等待客户端连接,然后在本机以remote模式运行客户端进程:

$python main.py --remote_ip REMOTE_ADDRESS

成功之后你将看到AI接入的信息。

Majsoul同时支持自动匹配模式与手动匹配模式两种方式,以-l或--level参数区分。手动匹配是默认模式,需在AI启动并校准界面以后,手动选择要进行的对局,当对局开始后AI将自动唤醒并接管鼠标操作;自动模式下AI将从主菜单开始,无限的循环进行段位场匹配。

手动AI模式:

$python main.py

自动AI模式:

$python main.py --level L

数字L可选值为{0,1,2,3,4},分别对应{铜/银/金/玉/王座之间}

上述两种模式可以自由搭配,例如在远程服务器173.252.110.21上启动远程AI,并持续进行银之间段位场匹配,那么应在远程服务器启动remote.py后执行:

$python main.py --remote_ip 173.252.110.21 --level 1

至此你就可以看到自主出牌的雀魂AI了!

About

以JianYangAI作后端,进行在线雀魂对局

License:MIT License


Languages

Language:Python 100.0%