Cacaponのゲームの仕組み探し① =スーパーマリオブラザーズのマリオ=

みなさん、こんにちは、仕組み大好きCacaponです。

最近NAND回路づくりを通して、自分は仕組みを考えたり仕組みを調べたりするのが好きなのがわかり、このやる気をゲームに活かしてみようと考えました。

というわけで、今回は第一弾としてほとんどの方が知っているであろう、あの方の動きを調べてみることに。

そうです、マリオです。その中でも調べたかったのは、FC版のマリオ。

FCはゲームの容量が少ない分、調べる範囲が少なくて済むし、容量不足を解決するためのいろいろなアイデアが含まれていることが多いです。*1

また、比較的原始的な部分が多いので、仕組みの理解のはじめの一歩としてはかなり良い題材かなと思います。それでは見ていきましょう。

どんな感じで調べるの?

ガッツリやる人だと、ロム吸い出してリバースエンジニアリングになるかと思いますが、今回は軽く調べただけなのとロム吸い出し機とか全く持っていないので、表面的な動きを見て推測する、という形で調べています。

また、スーパーマリオブラザーズをすぐに遊べる環境ができてなかったので、今回はスーパーマリオメーカー3DS)で代用することにしました。

ジャンプ力の調査

マリオといえば、ジャンプ、ということでどのくらいジャンプできるのか確認しました。

調べたところ、歩いていない状態は4ブロックで、動いている場合は5ブロックになります。

私、ずっと走っていると1つ分ジャンプ力増すなぁというのは知っていたのですが、歩きでも1つ分増えるのは知りませんでした。でもよく考えたら次のようなとこのアイテムとか取ってた記憶ありますね…

I:アイテム ■:ブロック □:空き M: マリオ

□I□
□■□
□□□
□□□
□□□
□M□
□■□ 
□□□
□□□
□□□
□□□
■■■

移動スピード

スーパーマリオメーカーは好きな位置にブロックが置けるので、5ブロックごとにブロックをおいて、タイマーからどのくらいのスピードで移動できるのか確認してみることにしました。

F:中間用フラッグ(測定ゴール)

■□□□□■□□□□■□□□□■□□□□■□□□□■□□□□■□□□□■□□□□■□□□□■□□□□■
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
M□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□F
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

こんな感じで、50m走ならぬ、50ブロック走のステージですね。

ゲームスタートから右キーを押しっぱなしにして何秒で到着するかを確認します。

その結果、歩きの場合は約5ブロック/秒、走りの場合は約10ブロック/秒になりました。

何回か測定したら、走りの場合は9秒台の時もあったので、正確な値かどうかはわかりませんが、大まかにはこのくらいの速度だと思われます。

また、走りの場合は最大速度に達するまでに助走時間がありますが、こちらについては調べきれていません。この辺りはおいおいですね。

また、左右移動の切り替えの場合、ある程度慣性が働きます。ここも歩きと走りで大きな差があるのですが、ここも調べきれておりません。

ドット絵

マリオのドット絵は何種類かありますが、地上の場合次の種類があるかと思います。 - チビ状態 - 静止状態 - 移動① - 移動② - 移動切り替え - ジャンプ - やられ - スーパーマリオ状態 - 静止状態 - 移動① - 移動② - ジャンプ - ダメージ時 - 現在のスーパーマリオ状態を縦に圧縮している


というわけでマリオを調べてみました。この後はこれを元に実際にプログラミングしてみて、マリオの動きを再現できるかとかやってみようと考えています。

その時に、実現できないところはまだ理解していないところだと思うので、その辺りも合わせて仕組みがわかると嬉しいなぁと思うCacaponでした。

それではまた来週お会いしましょう。

*1:ドラクエ1で容量確保のために一部のひらがなが使われていないというのは有名ですね。