StackRabbit

来自俄罗斯方块中文维基
本条目的主题不是 Rabbit Stacking

StackRabbit 是一个四连方块 AI。
这个 AI 用启发探索迭代评价值,目标游戏环境是 Tetris (NES, Nintendo) 的高速域,“思考深度”为 10 手。
这个 AI 的主端是 fceux 模拟器(使用 Lua 语言),副端是实机游戏(使用 Python 语言,需要在树莓派上运行)。
这个 AI 的落块选点能涉及塞屋檐和特殊旋转,方法是相对坐标参照(用列表记载各方块朝向在 4×4 范围框内的“压顶角”屋檐坐标)。

评价权重

地表堆叠(Surface)+1[注 1],左倾堆叠(Built Out Left)+2,凑出消四形 +6,执行消四 +40
无散消手段(Unable to Burn)-0.5,单列深沟(Extreme Gap)-3,第九列堆叠 -3,堵井(Covered Well)-5,超出均高 -7
执行散消 -14,洞(Hole)-50[注 2],左侧无法通行(Inaccessible Left)-100[注 3],右侧无法通行 -200,触发死亡 -3000

StackRabbit 还会“策略性地”实时调整某些权重:
完美风格:执行散消 -50
安全风格:执行散消 -6
挖掘风格:无散消手段 +0,第九列堆叠 -1,执行散消 -1,堵井 -2.5,洞 -8
接近必死关(Near KillScreen)[注 4]:执行消四 +500
马上就要必死关(Dirty Near KillScreen):左侧无法通行 +0,右侧无法通行 +0,执行消四 +500
边列消四风格:超出均高 -10,第九列堆叠 +0,堵井 +0,执行散消 +0,左倾堆叠 +15,左倾地表堆叠 +40

其他说明

StackRabbit 使用 eval 函数来实现“场况判断”。
“地表堆叠”的落点数是实时考察方块可横移距离得出的,不是全局分析静态地表得出的。
左右转均可到达目标位置时,StackRabbit 优先右转。

注解

  1. “地表堆叠”指的是不需要塞屋檐或旋转就能堆叠,不是指“完整堆叠”
  2. “洞”包括檐下空格。StackRabbit 还会用相邻空格数评估填补手段,进一步细分出“好洞”和“坏洞”
  3. “无法通行”指在当前重力下最快靠边也不能到达目标边区
  4. “必死关”指 Level 29 开始的超高速域

外链