穴子がデカすぎた話
すし積む 開発の記録 / 2026年9月
「すし積む」を作り終えたあと、ひとつ引っかかっていることがありました。最後のネタ、金のすし桶に、一度も辿り着けない。
自分で何度遊んでも、その手前の伊勢海老すら滅多に見ない。感覚としては「穴子がデカすぎる」。でも、感覚で寸法をいじると、たいてい別のところが壊れます。まず測ることにしました。
測る仕掛けを作る
ゲームは HTML 一枚で、時間の進みは requestAnimationFrame に任せています。そのままだと一戦に数分かかるので、時計を自前のものに差し替えました。requestAnimationFrame と setTimeout を横取りして、こちらから好きな速さで進める。絵を描く処理も空にすると、一戦が約 2 秒で終わるようになりました。
あとは、合体を最優先しつつ、山が落ち着くまで待ってから置く、という程度の打ち手を書いて、放っておくだけです。
百戦まわして分かったこと
まず、素の状態で百戦。
点 最低 12,337 / 中央 21,664 / 最高 44,622
到達した最高ネタ 大トロ 43戦 穴子 52戦 伊勢海老 4戦 金の桶 0戦
金の桶はゼロ。では、どこで詰まっているのか。一段上げる歩留まり——下から二つ合体して一つ作れた割合——を並べると、はっきりしました。
| 合体 | 歩留まり |
|---|---|
| サーモン → マグロ | 94.0% |
| マグロ → いくら軍艦 | 91.9% |
| いくら軍艦 → ウニ軍艦 | 86.9% |
| ウニ軍艦 → 大トロ | 71.4% |
| 大トロ → 穴子 | 55.2% |
| 穴子 → 伊勢海老 | 13.1% |
| 伊勢海老 → 金の桶 | 0.0% |
なだらかに落ちてきて、穴子のところで崖になっています。作れた穴子 61 本のうち 53 本(87%)が、しまいの盤面にそのまま残っていました。合体まで漕ぎ着けたのは 8 本だけ。
穴子は、確かにおかしかった
寸法を並べ直すと、一目で分かりました。桶の内側の幅は 336 です。
| ネタ | 幅 | 高さ | 幅/内寸 | 前段からの伸び |
|---|---|---|---|---|
| 大トロ | 149 | 83 | 44% | ×1.34 |
| 穴子 | 247 | 71 | 74% | ×1.66 |
| 伊勢海老 | 230 | 107 | 68% | ×0.93 |
| 金の桶 | 210 | 210 | 62% | ×0.91 |
穴子が、ゲーム中で一番太い駒でした。そのあとに来る伊勢海老よりも、最終形の金の桶よりも太い。幅の伸びも、他の段が 1.0〜1.34 倍のところ、ここだけ 1.66 倍。
結果として、穴子が一本寝ると、横に残る隙間は 336 − 247 = 89。ここに置けるのはサーモン(幅 85)までで、ウニも大トロも入りません。穴子が桶を横断して、その先の道を塞いでいたわけです。
ちなみに面積の梯子は綺麗でした。どの段も「前の段二つ分の 0.70〜0.71 倍」で一定。壊れていたのは幅の順序だけです。
直してみる。ただし測ってから
横幅だけを 4/5(247 → 198)にして、また百戦。
| 中央値 | 最高 | 穴子 | 伊勢海老 | 穴子→伊勢の歩留まり | |
|---|---|---|---|---|---|
| 247 × 71(元) | 21,664 | 44,622 | 61本 | 4匹 | 13.1% |
| 198 × 71 | 24,858 | 47,392 | 79本 | 12匹 | 30.4% |
| 205 × 85(面積を保つ) | 25,149 | 36,350 | 33本 | 1匹 | 6.1% |
面白かったのは三行目です。面積を保ったまま細くした案では、終盤がまったく動きませんでした。効いていたのは「細い」ことそのものではなく、穴子が桶を横断しなくなって、その隣に大きいネタを並べられるようになったこと。
それでも金の桶には届かない
伊勢海老は三倍出るようになりました。でも金の桶はまだゼロ。ここで、別の壁が見えてきます。
落ちてくる駒はシャリ・玉子・エビの三種だけ。ガリを差し引くと、一投下あたりシャリ 2.217 個分にしかなりません。一方、
| 作るもの | シャリ換算 | 無駄ゼロでも要る投下数 |
|---|---|---|
| 穴子 1 本 | 256 | 115 |
| 伊勢海老 1 匹 | 512 | 231 |
| 金の桶 1 個 | 1,024 | 462 |
実測の投下数は中央 280、最長でも 426。一個も無駄にしなくても手数が足りていませんでした。伊勢海老の 231 投下がちょうど境目で、百戦で 12 回という実測とも合います。
本当の原因は、寿司が大きすぎたこと
スイカゲームでは「双子スイカ」を作る人がいます。あれが成立するのは、最後の果実が箱に対して十分小さいからです。うちはどうか。
金の桶を一つ据えたまま、2匹目の伊勢海老を作らないといけない
金の桶210 + 伊勢海老107 + 伊勢海老107 = 424px > 使える高さ 302px
横に並べる 伊勢海老230 × 2 = 460px > 内寸 336px
縦にも横にも入りません。運や腕前の問題ではなく、入る隙間が存在しない。
そこで、ネタの寸法を一律 0.8 倍にしてみました。金の桶の直径が 210 → 168 になり、桶の内寸 336 のちょうど半分になります。
| 中央値 | 最高 | 金の桶に到達 | 伊勢海老に到達 | 1戦 | |
|---|---|---|---|---|---|
| 等倍 | 24,858 | 47,392 | 0 / 100戦 | 12% | 3.7分 |
| 0.8 倍 | 58,741 | 103,630 | 7% | 65% | 7.7分 |
ようやく道が通りました。伊勢海老はほぼ毎回そこまで行き、金の桶も十数戦に一度は出ます。双子は、それでも六十戦で一度も出ませんでした——これは失敗ではなく、たぶん正しい状態です。手が届く場所にある伝説になった、ということなので。
番付も引き直した
点の出方が 2.4 倍になったので、番付の判定値も全部やり直しです。最上段は、金の桶に届いた試合の点が揃って 86,000 以上だったのに合わせて 85,000。数字は前と同じですが、意味が変わりました。前は誰にも出せない飾りで、いまは「金の桶を出したら伝説」です。
教わったこと
感覚は当たっていた。でも、原因は思っていたところになかった。
「穴子がデカすぎる」という違和感は正しかったんです。ただ、穴子を細くしただけでは終盤は動かず、本当の原因は寿司全体が桶に対して大きすぎたことでした。一箇所を疑って直していたら、たぶん永遠に辿り着いていません。
三百戦の統計を取るのにかかった時間は、合計で十分ほどです。勘で三回いじって確かめるより、ずっと速くて確かでした。