![見出し画像](https://assets.st-note.com/production/uploads/images/143579886/rectangle_large_type_2_a917ce1d3a7a1d9d4f025c3b2278d334.jpeg?width=1200)
キューブラッシュの座標
キューブラッシュを攻略するにあたり, パワーアップゲージなどの目印を使って位置を言い表すことで実用上十分なことが多いのであるが, もっと厳密な議論をするとなるとそれでは不十分だ.
厳密な議論というのは, 位置を数値で表現するということである.
そして, 位置を数値で表現するための手法が「座標(coordinate)」である.
この章では, キューブラッシュについて述べるにあたり, 画面上の位置を厳密に数値で表現するための座標系の設定を行っておこうと思う.
ディスプレイ座標もあるが・・・
本来画面上の位置を表すには, それ用の座標がある.
プログラムを組む者からすれば当然必要な代物だろうし, それを用いることにより画面上の位置は厳密に表現されることになる.
しかしそれは, ハードウェアなりソフトウェアなりを厳密に扱おうとする側の話であって, プレイヤーにとって必ずしもそこまでの厳密さや精密さが必要かというと, それも違ったりする.
確かに, ディスプレイ座標は画面上の位置を厳密に表現はするけれども, 表現している物は「ドット」である.
プレイヤーは常にドット単位で操作を行っているわけではない. 特に, キューブを相手に最低2速までスピードアップした自機ビックバイパーをドット単位で常に正確に操作するなど, そもそもあり得ない話だろう.
また, ドット単位で「ここ」と位置を指定されたところで, 「えっ? それどこ?」となるだけでプレイヤーは困惑させられるだけである.
プレイヤーにとってドット単位の位置の表現が最適だというのであれば, とっくの昔に広く普及しているはずだし, ゲージを目印にするなどという手法は必要としないはずだ.
そこで, 概念的には位置を厳密に表現可能なのだけど, よりプレイヤーの目線に立った, 言われてすぐに位置を理解するような座標系を設定したいということになる.
地形を構成しているブロックに着目する
そこで注目すべきは, 9面において地形を構成している小さなブロックである.
9面はブロック状のオブジェクトが, ちょうど「テトリス」の如く組み合わさることによってステージの地形が構成されている.
「テトリス」などに倣って, これらのブロックのことをこれより先「ミノ(mino)」と呼ぶことにする.
なお, 由来については次の章にて補足する.
![](https://assets.st-note.com/img/1682641453512-yULVvJtked.jpg)
2つの偶然
この「ミノ」に着目すると, 9面では2つの偶然が起きていることが分かる.
偶然1
まず1つ目.
キューブラッシュにおいてキューブが出現する高さの候補は, 見た目的には12個ある.
キューブが出現する高さのことを「出現ライン(appearance line)」と呼ぶことにする.
すると, 各出現ラインは偶然にもミノの「辺(edge)」の高さに一致している.
![](https://assets.st-note.com/img/1706370078324-jolnS637G6.jpg?width=1200)
偶然2
先程は高さ, 縦に着目したが, 今度は横に着目した場合である.
偶然にも, パワーアップゲージ1つの幅はミノ2つ分となっている.
![](https://assets.st-note.com/img/1682641556638-ClICJ5YiY7.jpg?width=1200)
ミノを長さの単位とする
これら2つの偶然より得られる結論.
ミノを長さの単位として採用すれば, 9面を語るにあたって非常に都合が良い.
出現ラインを測るにしてもミノを単位にできる(縦の定量的表現).
また, ゲーム中キューブラッシュに限らず, 横の位置を測るのにパワーアップゲージを目印にすることはよく行われるが, その上位互換の手法としても使うことが出来る(横の定量的表現).
よって, キューブラッシュを語るための座標, すなわち縦横2つの物差しを垂直に組み合わせた計測方法においては, ミノを長さの単位として採用すべきであり, そうすればキューブラッシュを数量的な概念として捉えられるようになる.
そのような座標系のことを「ミノ座標(mino coordinates)」と呼ぶことにする.
また, 長さの単位は「[mino]」(単位なので角括弧で囲っている), 読みは「ミノ」とする.
(例)[1]が2[mino]のラインで出現したとき・・・
これが「ミノ座標」だ
座標系を設定する場合, 原点(origin)がどこにあるかということと各軸の正の向き(positive direction)を定める必要がある.
数学では第1の軸が右向きで第2の軸が上向きという図がほとんどであるが, 純粋な数学では現実の事象を抽象化(abstraction)しているので, それが現実世界の何かを必ずしも表している必要はなく, 今言った軸の向きは単なる「慣習」や「業界標準」といったものに過ぎない.
「抽象化」というのは, 余分な要素をごっそり除き, 議論に必要な部分だけ残すという意味である.
一方, それが物理学などともなると話は違い, 現実の事象を扱う.
現実の事象を扱い始めると, 座標というのは現実世界の何かに固定された物差しという意味を持ったりする.
時には乗り物のように動く何かに座標系が固定されていて, 座標軸が動き回ることさえある.
座標系というのは与えられるものではなく, 状況に最も適した設定を選択するものなのだ.
ミノ座標における各軸の設定
![](https://assets.st-note.com/img/1682641610875-6XVcFCjrEl.jpg?width=1200)
ミノ座標では, $${x}$$軸を右向きとする.
また, パワーアップゲージの左端をx=0[mino]とする.
ゲージは左から右に向かって順に点灯していくので, それに対応している.
$${y}$$軸は上向きとする.
一番下の出現ラインの高さをy=0[mino]とする.
これは床の高さでもある.
「グラIII」では, いわゆる「一番下の床」ではフォースフィールドは剥がれるものの, やられることはない. その高さである.
ディスプレイ座標では左上が原点, $${y}$$軸は下向きになっていると思われる. これはおそらく画面の書き換えの順序に対応しているからだと思われる.
しかし, カマクラは左下に作ることが多いと思われるので, 原点が左下になるように座標系を設定した方が多くのプレイヤーにとって都合が良いと考えてそのようにした.
さらに, 原点が左下になるようにしておけば, いざ数学的な考察が必要となった場合でも, 数学の教科書に載っている図をそのまま使って考えることが可能という利点もある.
自機が移動可能な範囲
横の移動範囲は
-1.25≦x≦14.75[mino]
となる.
また, 縦の移動範囲は
0≦y≦12[mino]
となる.
横の移動範囲に関する注意点
これはキューブに限らず通常弾でも起こる現象であるが, 自機があまりにも画面端に寄っていると, キューブの狙いが明後日の方を向くことがある.
もしそれによりキューブを画面外に出せた場合はメリットとならないこともないが, キューブが画面右下に着弾してしまった場合は, そこに後続のキューブが詰まってしまい, 自機を狙って加速するはずのキューブが飛んで来ないとか, 画面に現れないキューブが発生するせいで, 今相手にしているキューブが一体どれなのか混乱しかねない.
![](https://assets.st-note.com/img/1716998322140-SxFaVZXvsM.jpg?width=1200)
上の移動限界と下の移動限界の違い
y=0[mino]は一番下の出現ラインの高さであると同時に, 自機の下の移動限界でもある.
よって, 自機が一番下にいるときは, 一番下のラインで出現したキューブが真横に飛んだ場合に当たるということになる.
一方, 上の移動限界は事情が異なる.
一番下の出現ラインの高さがy=0[mino]で, 出現ラインは見た目的に12本あるということは, 一番上の出現ラインの高さはy=11[mino]である.
それに対して自機の上の移動限界はy=12[mino]ぐらいであり, 自機が一番上にいるときは, 一番上のラインで出現したキューブが真横に飛んだ場合に自動的に避けられる(十分な距離があればの話).
この点では, 意味が分かって行う分には左上のカマクラ作りにも利点がないわけではない.
この記事が気に入ったらサポートをしてみませんか?