本家仕様の再現という沼 — お邪魔ブロック編
対戦パズルの気持ちよさは、細部の挙動でできています。「なんか違う」は、だいたい本当に違う。今日はお邪魔ブロックまわりで踏んだ沼の記録です。
消えた5段の行方
最初に見つけた大物は、高い盤面に大きな攻撃を落とすとお邪魔が黙って目減りするバグでした。9段まで積み上がった盤面に8段分のお邪魔を落とすと、画面に入り切らない分を切り捨てていたせいで、着地した瞬間に3段になっていたのです。対戦動画を見返していて「あれ、今の攻撃どこ行った?」と気付きました。
正しい挙動は、入り切らない分を画面の上に「在庫」として保持し、下が空くたびに1段ずつ実体化すること。大連鎖を当てたのに相手が涼しい顔をしている、という理不尽はこれで消えました。攻撃の総量は保存される。当たり前のことを当たり前にやるのが一番難しい。
対戦中はお邪魔が切り捨てられていることに意外と気付けなかったので、対戦動画を見返す機会のある動画投稿者のメリットですね。
変換の音程が2段目でリセットされる
お邪魔ブロックは隣のパネルを消すと下の段から普通のパネルに変換されますが、このとき変換処理は1マスずつカーソルが走るように進み、1マスごとに効果音が鳴ります。この音、連鎖中は音程がだんだん上がっていくのが本家の気持ちよさなのですが、実装当初は2段目のブロックに移った瞬間に音程が最初に戻っていました。
原因は通し番号をブロックごとに0から振り直していたこと。起爆でまとめて変換されるブロック群は、全体でひとつの通し番号を共有するのが正解でした。音程が繋がった瞬間、急に「あのゲーム」の音になったのが忘れられません。
複数ブロックは下から順に開示、確定は一斉
積み重なった複数のお邪魔ブロックを一度に起爆した場合、開示(色が見える演出)は下の段から順に、パネル化の確定は全ブロック一斉——という仕様に辿り着くまでに、「全部一気に変換」「順番に確定」と2回作り直しました。実機の挙動をコマ送りで観察して、ようやく確定です。開示済みでもまだお邪魔はお邪魔で、揃えても消えないし動かせない。この「見えているのに触れない」時間が、受けを仕込む楽しさを生んでいるんですね。
沼の先にあるもの
なぜここまでやるかというと、このゲームのAIはこの盤面のルールそのもので自己対戦して学習するからです。ルールが本家とズレていれば、AIはズレたゲームの達人になってしまう。仕様の再現は、"最強"への土台工事でもあります。
(そして後日、連鎖の熱がお邪魔の変換に乗り移るタイミングにもう一段深い沼があることを知るのですが、それはまた別の話。)