MisaMino

来自俄罗斯方块中文维基
这篇文章需要改进,你可以帮助俄罗斯方块中文维基进行编辑
阅读游戏源代码,解决条目中诸如软降前摇等代码层面遗留问题。
MisaMino
Misamino1.png
开发 misakamm
游戏平台 Windows
发行时间 2013年7与15日
最新版本 1.4.5 / 2013年11月11日[1]
游戏信息
预览块数 6
场地大小 10×20(+20)[注 1]
暂存
硬降
旋转系统 超级旋转系统
Misamino2.png
Misamino3.png

MisaMino 是由中国玩家 misakamm[注 2]于2013年开发的方块 AI[1]。MisaMino 最初在 Hard Drop 论坛上发布,其代码也被 misakamm 上传至 GitHub[2]

社区玩家赞誉 MisaMino 开创了现代对战方块 AI 的先河,之后的 ZetrisColdClear 等 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、开源之后一段时间,就极少在互联网活动,其博客网站也关闭了。

注释

  1. 特定规则:缓冲槽超过 100 行即死。
  2. 中文社区编号TSSS,不要和另一名中国玩家「白给白给御坂御坂」混淆。
  3. a b MisaMino 以60fps运行。
  4. combo_table_style=1;
    style=1, 2, 3; //三者取一
    GarbageCancel=1;
    GarbageBuffer=1;
    GarbageBlocking=1
  5. 若将 AI_P1 改为非零值,即可观看 AI 互搏。但 MisaMino 不支持人人对战(即使将这两个值都设为零)。
  6. 也即不能玩家放 n 块,AI 放一块。
  7. 但没有对“双方使用的计算量或时间是否相当”评估公平性,只保障了能看到的预览块数量一致

参考资料

  1. 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日.
  2. MisaMino's open source code repository. GitHub. 2015年7月15日.
  3. Jstris's version history. Jstris. 2022年1月1日.

外链