MisaMino
这篇文章需要改进,你可以帮助俄罗斯方块中文维基进行编辑。 阅读游戏源代码,解决条目中诸如软降前摇等代码层面遗留问题。 |
MisaMino | |
---|---|
![]() | |
开发 | misakamm |
游戏平台 | Windows |
发行时间 | 2013年7与15日 |
最新版本 | 1.4.5 / 2013年11月11日[1] |
游戏信息 | |
预览块数 | 6 |
场地大小 | 10×20(+20)[注 1] |
暂存 | 有 |
硬降 | 有 |
旋转系统 | 超级旋转系统 |
MisaMino 是由中国玩家 misakamm[注 2]于2013年开发的方块 AI[1]。MisaMino 最初在 Hard Drop 论坛上发布,其代码也被 misakamm 上传至 GitHub[2]。
社区玩家赞誉 MisaMino 开创了现代对战方块 AI 的先河,之后的 Zetris、ColdClear 等 AI 都参考或借鉴了 MisaMino。MisaMino 本身也被移植到 Jstris 等非官方四连方块游戏平台上[3]。
机能
Misamino 可以提前思考多个操作,这点与其他方块 AI 不同。
此外,机器人会考虑软降到底(瞬降)之后的多步移动和踢墙(包括 SRS 踢墙)。这让它能够打出 T-Spin Triple。不仅如此,AI 算法会有一定远见地评估搭建 T2、T3 等槽位,也会避免代价过大的 T3。
当然,计算一包方块内所有的摆放情况将花费大量时间。所以,即使考虑下一块,机器人在前往下一级前,只计算一部分可能的场地。下面给出(不考虑暂存的情况下)2 级 AI 的工作机制:
- 生成当前块所有的摆放情况(0 级场地)
- 为所有可能的场地情况打分(孔洞个数、场地的水平程度、消除和发送的行数),并对所有情况按分数进行排列,高分优先。
- 按顺序,先为"最佳" 0 级场地(得分最高的场地)生成下一块的所有摆放情况,然后对次佳 0 级场地进行同样的操作,以此类推,但在一定计算量后停止(不生成较差场地的子场地)。所有生成的场地称作 1 级场地。
- 为所有 1 级场地打分并排序,高分优先。
- 重复上述步骤:计算评分较高的 1 级场地的下一块的所有情况,但在一定计算量后停止,为这些 2 级场地打分并排序。
- 取 2 级场地下最优的一个,按其首块(由原场地生成 0 级场地时使用的)摆法摆放当前块。
这一过程算法后被称作 Beam Search。
配置
MisaMino 有诸多供调节的选项,但它们大多需要玩家修改配置文件。以下给出能在游戏中直接通过按键实现的功能。
功能键 | 功能 |
---|---|
F2 | 重开(仅限20块前或终局后) |
F3 | 是否预览垃圾行 |
F4 | 方格是否可见 |
F5 | 调高主音量(一次5%) |
F6 | 调低主音量(一次5%) |
F12 | 配置助手 |
除了 .exe 可执行文件本身,你还能找到一份名为 misamino.ini 的文件。该文件共有六个部分,包含简单的 key=value 设置选项。 游戏还附带解释上述选项的 TetrisGameReadme.txt 说明书。
AI
delay
- 仅在turnbased
关闭下生效,控制 AI 的思考间隔,单位为帧[注 3]。move
- 仅在turnbased
关闭下生效,控制 AI 每步操作后的延迟,因此该值对 AI 的实际速度影响更大,单位为帧[注 3]4w
- 控制 MisaMino 是否考虑 4w 堆叠。根据说明书,游戏推荐玩家只在 TOJ 规则下开启 4w 思考。[注 4]
AI_P1/2
style
- MisaMino 的思考策略,整数型。
值 | 0 | 1 | 2 | 3 | 4 | 5 | -1 |
---|---|---|---|---|---|---|---|
AI类型 | 人类[注 5] | T-Spin+ | T-Spin | Ren | Non-Hold | Downstack | 载入指定 .dll 文件 |
level
- AI 能“看”的预览数量,默认为 4,可调 0-8(但最高只能看到 TOP 规则的 6 next,级别 7 以上是增大计算量)。数值越高,思考能力越强。PieceMul
- 回合制中,玩家放一块,AI 放块的数量。只能是整型。非法数据类型将被 1 覆盖[注 6]dllplugin
- 支持接入用户自定义的 dll 插件作为 AI。有一个官方制作 dll,内置 lua 解释器并接入了 TOJ 内置的几款 lua 实现的 bot。
Rule
turnbase
- 布尔值,是否开启回合制。KOS_turnbase
- 布尔值,是否开启 King of Stackers 式回合制。spin180
- 布尔值,是否允许 180 旋转。GarbageStyle
- 整数值,影响垃圾行空洞的连续程度:
值 | 0 | 1 | 2 |
---|---|---|---|
垃圾行规则 | TOJ | 两行变一次 | 一行变一次 |
GarbageCancel
- 布尔值,是否允许相杀。GarbageBuffer
- 布尔值,是否有垃圾缓冲槽。GarbageBlocking
- 布尔值,是否允许垃圾行阻挡。samesequence
- 布尔值,控制双方序列是否相同。combo_table_style
- 连击表,默认使用 1。
值 | 0 | 1 | 2 |
---|---|---|---|
连击表类型 | 0,0,1,1,2,2,... | TOJ | TF |
Player
das
- DAS,单位为帧(60fps,故与其他现代方块兼容)。softdropdas
- 软降重复延迟 ARR,单位为帧(60fps,0为瞬降)softdropdelay
- 软降首次延迟,单位为帧,为软降实现了类似 DAS 的首次延迟,利于玩家精确控制。
Sound
p1sfx
- 布尔值,是否开启 P1 音效。p2sfx
- 布尔值,是否开启 P2 音效。bgm
- 布尔值,是否开启背景音乐。背景音乐似乎直接来自 TOJ 的拆包文件。
历史
在开发转入 SRS TOJ 对战规则对战前,实际上是火拼俄罗斯的规则的回合制对战 AI(同样带支持玩家与之对战的游戏本体),已经是支持多 next 思考、支持带软降后多次旋转移动处理的。用户:Farter 深度参与了火拼俄罗斯版 AI 的测试,促成了转向 TOJ 规则,也对 TOJ 规则版进行了许多测试。
zzztoj AI 的开发者 zzz(奏之章) 与 misakamm 在火拼俄罗斯 AI 时期也有交流与联机回合对战测试(zzz 在更早期也开发了火拼俄罗斯的支持多预览块的 AI)。在转向 TOJ 规则后,他促成了 misakamm 进行 dllplugin 接口的开发,且迅速以 dllplugin 形式接入了 MisaMino,并在多轮交流开发训练迭代后,在 TOJ 回合制规则下对内置 MisaMino T-spin AI lv8+ 战成优势[注 7]。
“MisaMino”这个名字是在经过长时间测试认为质量过关,准备发布到 Harddrop 时现起的。在发布前的测试交流中,应用程序文件名、标题都是类似 Tetris AI Demo、Tetris TOP、TO-P AI 等的内部命名,包含更早的火拼俄罗斯规则版。
火拼俄罗斯版似乎从未被 misakamm 对外发布过(存疑),不过 用户:Farter 仍保留着许多内部测试版。
misakamm 在 Harddrop 发布 MisaMino、开源之后一段时间,就极少在互联网活动,其博客网站也关闭了。
注释
- ↑ 特定规则:缓冲槽超过 100 行即死。
- ↑ 中文社区编号TSSS,不要和另一名中国玩家「白给白给御坂御坂」混淆。
- ↑ a b MisaMino 以60fps运行。
- ↑
combo_table_style=1; style=1, 2, 3; //三者取一 GarbageCancel=1; GarbageBuffer=1; GarbageBlocking=1
- ↑ 若将 AI_P1 改为非零值,即可观看 AI 互搏。但 MisaMino 不支持人人对战(即使将这两个值都设为零)。
- ↑ 也即不能玩家放 n 块,AI 放一块。
- ↑ 但没有对“双方使用的计算量或时间是否相当”评估公平性,只保障了能看到的预览块数量一致
参考资料
- ↑ a b The T-spin AI bot (MisaMino ver 1.4.5 1111), turn-based mode and normal mode Tetris. Hard Drop Forums. 2013年7月15日.
- ↑ MisaMino's open source code repository. GitHub. 2015年7月15日.
- ↑ Jstris's version history. Jstris. 2022年1月1日.
外链
- GitHub 页面:MisaMino
- Hard Drop Tetris Wiki 上的对应页面:MisaMino (英)
- Tetris Wiki 上的对应页面:MisaMino (英)
- Hard Drop 论坛 讨论贴:The T-spin AI bot (MisaMino ver 1.4.5 1111) (英)
- Internet Archive mirror:the MisaMino 客户端