Nao_uの日記 このページをアンテナに追加 RSSフィード

2007-01-05

[][]スーパーマリオ・コンプレックス スーパーマリオ・コンプレックス  - Nao_uの日記 を含むブックマーク はてなブックマーク - スーパーマリオ・コンプレックス  - Nao_uの日記 スーパーマリオ・コンプレックス  - Nao_uの日記 のブックマークコメント

大昔に自分も同じように考えて、習作としてスーパーマリオの動きの完全再現を目指してGBAの実機で動くプログラムを組んでいたことがある。Javaで書かれたブラウザ上で実行できるエミュレータでそのときに作ったものが動くので、サーバに上げてみた。


f:id:Nao_u:20070106123615j:image


なにかとマズそうなのでキャラは適当なものに差し替えてあるが、一応オリジナルの挙動をコマ送りで解析しながらドット単位でほぼ同じように動くように作ったつもり。(一部完全でない部分も残ってるけど)

自作のステージでスーパーマリオを遊ぶのが子供の頃からの夢だったのだけど、ジャンプの挙動を作ったところまでで満足して、中途半端なまま放置してしまっていた。


スーパーマリオの内部処理はジャンプの挙動に限らず、加速・急制動時の挙動や、ジャンプ中に頭の一部をブロックに引っ掛けたときの補正・キノコを取って大きくなったときに頭がブロックにめり込んでいるときの処理なども面白い。


また、Bボタンで発射するファイアーボールのバウンドの高さが、ノコノコにはほぼ確実に当たるのにクリボーは背の高さの都合でタイミング次第で飛び越えてしまってすり抜けることがあるように調整されていたりするのも興味深い。これだけで、平地をファイアーボールを撃ちながら走り抜ける時にも単調な展開になりにくい。

最近のゲームから見れば少ない要素の組み合わせだけで作られているにもかかわらず、難度をさほど上げないようにしながらも予測を超える多彩な展開が起こりやすいようにいろいろと計算されているのが素晴らしい。


個人的には、普通に遊んでも十分面白いのだけど、何より「最高速でステージを駆け抜けるときに最も気持ちよく感じられるように」デザインされている点が、このゲームが奥が深くて飽きが来にくい一番の理由だと思っている。


『スーパーマリオブラザーズ』のジャンプについてのメモ 『スーパーマリオブラザーズ』のジャンプについてのメモ  - Nao_uの日記 を含むブックマーク はてなブックマーク - 『スーパーマリオブラザーズ』のジャンプについてのメモ  - Nao_uの日記 『スーパーマリオブラザーズ』のジャンプについてのメモ  - Nao_uの日記 のブックマークコメント

上記のデモのソース内の計算式を見てみると、


  • ジャンプの初速は-4[dot/frm]
  • ジャンプ開始の瞬間に横方向の移動速度の絶対値が約2[dot/frm]を超えているときには、さらに約-0.5[dot/frm]の上昇加速度が足される
  • 重力加速度は約0.3[dot/frm]
  • 上昇中のみ、Aボタンが押され続けていると約-0.2[dot/frm]の加速度が得られる
  • 落下速度は5[dot/frm]を超えると、それ以上は加速しない。

と、おおむねこんな感じのパラメータで動いている。元が固定小数なので値は概算。あの気持ちよさを出すためにもっと特殊な処理が行われているのかと思っていたのだけど、思っていたよりは普通の計算式で再現できた。マリオ以降のゲームで育ってきているので、マリオを基準に「普通」と感じてしまっているだけかもしれないけど。とはいえ、仕組みは単純ながらもパラメータ調整は絶妙。


あと、何も考えず再現しようとすると気付きにくそうな要素として「Bダッシュ最高速からはジャンプ頂点が高くなる」ようになっていたり、「ジャンプ時の後方加速は前方加速より速い」(ブロックに乗りやすくするため?)調整になっていたりなど、地味に細かい部分で特殊処理がはいっているあたりも、遊びやすさと奥深さに貢献してるのではないかと思う。


それにしても、「ボタンを押している時間によって後付でジャンプの高さが変わる」のと、「空中でも加速度を考慮した左右移動制御が可能」の2点を発明したのは、このゲームが最初なんだろうか?あと原型になりそうなものといえば『バルーンファイト』くらいしか思いつかない。他に何かあるかな?



Unreleased Mario Brothers for PC Unreleased Mario Brothers for PC - Nao_uの日記 を含むブックマーク はてなブックマーク - Unreleased Mario Brothers for PC - Nao_uの日記 Unreleased Mario Brothers for PC - Nao_uの日記 のブックマークコメント

こうして移植されたものを改めて見てみると、FC版スーパーマリオの独創性と完成度の高さが伺える。何もないところからあれだけの要素を高いレベルで詰め込んだゲームを作ったのは本当にスゴイ。

子供の頃に「いろいろある楽しい遊びのうちの一つ」でしかなかったファミコンが、他のものと全く違うものに見え始めたのもスーパーマリオからだった。よくよく考えてみれば、このゲームに人生を狂わされたんだなぁ、と・・・。

k_uk_u2007/01/07 03:16空中でのx軸加速はパックランドやフリッキーに入っていたと記憶しとりますが、こちらについては、プログラミングの過程で自然発生する可能性も結構あるかもしれませんですね。x軸周りの処理を接地状況によって分ける前に遊んでみたら、面白かったのでそのまま採用…とか。

Nao_uNao_u2007/01/07 11:25アーケードには詳しくないのでパックランドは失念していました。ものすごくクセのある操作でしたが、確かに空中制動できていたような。大ジャンプすると制御不能なくらいに加速できていたような印象があります。

フリッキーの方はプレイしたことがなかったので、G-CLUSTER経由で遊んでみました。
http://game.goo.ne.jp/ondemand/mSEG/p1.html
ガンスタースーパーヒーローズのヒヨコ面の元ネタはこれでしたか・・・。同時期のゲームをあまり知らないのでよくわからないですが、もしかしたら主人公が鳥であることは、このゲームに空中での加速を取り入れることになった理由の一つだったりするのかもしれませんね。

プログラミング自体は空中の処理を場合分けしないほうがむしろ簡単なので、確かにx軸加速が自然発生する可能性はかなり高そうです。この時期のファミコン以外のゲームに関してはほとんど知識がないですが、時系列で操作系の発展をまとめてみると面白いかもしれないですね。

naoya2knaoya2k2007/01/08 01:37実はパックランドの後にメトロクロスがあってその後にスーパーマリオがあるのですが、空中で微調整してクリボーを踏むマリオの操作感はむしろメトロクロスの缶踏みに似ているのではないかと思いました。
あと、ジャンプ中でも地上と同じように左右に動けるゲームとしてボンジャックがあります。

Nao_uNao_u2007/01/09 00:39久々にパックランドをプレイしてみたら、左右移動が十字キーでなくABボタンでの操作になっていて戸惑いました。クセのある操作感だった印象があるのはそのせいだったようです。
メトロクロスも同様に、なんだか難しくてうまく遊べなかった印象だけが残っていますが、また機会を見てもう一度プレイしてみたいです。

自分はあの当時にはファミコンしか知らなかったため、メトロクロスもスーパーマリオ以降のゲームだと認識していました。ただ、発売日を見るとかなり近い時期であるため、開発自体はほぼ同時期に行われていたように思われます。もしかしたら、ボンジャックも含めて進化の過程で同時多発的に似たタイプのゲームが作られてきたのかもしれませんね。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20070105