物理エンジンを使って、マリオギャラクシーににたステージを設計する方法を紹介しよう。 小学生でも理解できるレベルなので気軽で簡単。 楽しい製作が可能です。 簡単な道具、小学生でも理解できる理屈だけで作ります。 わからないときは大人の人と一緒に作ってみよう。 道具が簡単ということは複雑(ふくざつ)な形の星を作るのは無理だし、星の表面を動き回る敵を設定したりするのもスクリプトを使わないとなかなか大変だ。 この講座ではそういうものは作れないという問題もあるが、がんばり次第では結構面白いものを作れることは確かだ。 楽しんで読んでほしい。 *磁力を使えばこんなに簡単。 **まずは星を作ってみよう。 マリオギャラクシーといえば複雑な形の星の上で歩き回るのが魅力。 まずは星の上を動き回る方法を作ってみよう。 そのためにはどうすればいいか、使うのは磁力。 まあこの図を見てみよう。 星の上を走り回れる車の図だ。 ---- &ref(磁力式レースコース模式図1.png) ---- この図は磁力を使って、複雑な形の星の上を動き回る方法を解説している。 するどい方ならすぐに気づくでしょうが磁力式の”おきあがりこぼし”やだるまさんですね。 星の中にはN極がたくさん。 矢印が磁力の向きになります。 車のなかには巨大なSとNの棒磁石が入っていますがこれが車を安定させます。 星の中には磁石のNが入っているので、車のSのほうが星のほうを向き、車のNのほうが上を向くことになります。 単純ですね。 星に置かれた棒磁石はまっすぐ垂直に立とうとします。 車の中に磁石を固定しておけば、磁力の向きにあわせてすっきり車が星に接地してくれます。 ベクトル場だ、メモリの参照だ、高速計算だ、難しいプログラムだ。 そんな難しいことを考えなくても、物理エンジンを使えば当たり判定と磁力の設定だけでマリオギャラクシーに似た簡単に作れるわけですね。 とっても楽ちん。 バグもまずなければ、高度な知識も要りません。 さてここで一工夫。 ゲームですのでNを弱く、Sを強くしておけばより車は安定します。 それだけでは車がひっくり返ったままのことも多いですので、車の外側に半球のボールをつけています。 車がひっくり返っているなら、車の中の磁石が回転し、それにつられて車全体もボールが回転するように回転してきちんと接地できます。 仕組みはとっても簡単です。 このことを数学や物理学の言葉では、安定解と不安定解なんて難しい言葉で表しますが、ここでもやっぱりこんな難しいことを考えなくても作れます。 こういう難しい言葉はもっと複雑なものを作るためにあるのでした。 *次はジャンプの実装 ジャンプ、いろいろな実装方法がありますが、一番簡単なのは磁力のNとSをひっくり返したりすること。 それだけで星の上でのジャンプが実装可能です。 *ジャンプ台 ジャンプ台はいろいろなジャンプが実現できます。 Vizimoという子供向けの簡素な物理エンジンで確認しながら作成しました。 図を載せておきますのでいろいろ想像しましょう。 図を見て興味を持った方は、Vizimoで忍者カー練習場(完成版)遊んでみてくださいね。 ---- &ref(模式図ジャンプ3.png) -このジャンプ台の名前は球体式ジャンプ台、丸い星の上を走って加速し、ジャンプ台でジャンプするシステムとなっている。 -利点は星の上のジャンプ台の位置と向きと高さと磁力の切り替えタイミングを変更するだけで、多種多様なジャンプ台が可能なこと。 ---- &ref(模式図ジャンプ1.png) -これは球体式ジャンプ台に到達するためのジャンプ台の模式図 -磁力の強さを変更することで何種類かの空中軌道が得られる。 -すこし磁力の強さを変更することと、最初のジャンプの位置やジャンプ前の車の速さを変更するだけでいろいろな空中軌道が作れるのが楽しいところ。 -磁力の設定を絶妙に変化させると、車が空中で振り子のようにゆれる軌道を作ることもできるが、これはどちらかというとレースコースに使いにくいので製作者の楽しみ程度にしたほうがよい。 -次に変化させたときの一例をひとつ見せる。 ---- &ref(模式図ジャンプ2.png) -これはNとSの間隔を狭めたときに見つけた軌道。 ---- 円柱式ジャンプ。 &ref(模式図ジャンプ4.png) -2本の巨大なN極の円柱が大地に突っ立ているのを真上から見た図。 -灰色の矢印は磁力の向き。 -車はS極設定、円柱はN極設定となっている。 -2つのN極は平行で長く伸びた棒磁石であり、水平方向に車をひっぱることとなる。 -図にあるとおり磁力の強さを変更することで多種多様なジャンプが可能。 -車の空中での飛び方の基本は高さ方向が放物線で、水平方向の移動がS字を伸ばしたり切ったりしたものとなる。 -また、ジャンプ中車のN、S、磁力無効、磁力の強さを変更することで多種多様なジャンプが可能となっているので試してみてほしい。 ---- -トランポリン式ジャンプ。 車がトランポリンで大ジャンプする図。 &ref(模式図ジャンプ5.png) -車がトランポリンにあたると同時に車の磁力をNに変更している。 -これから発展してトランポリンを斜めや縦にしてみたり、空中に配置してみるともうちょっと楽しい。 ---- *おまけ &ref(半球式コーナー) -半球を縦にしたコーナー。 -半球の鉄片では車は逆さにコーナーに張り付くこととなる -図はわかりにくいので3DCGとした、作図にはGSUを使用。 -大人向けの理屈 磁力を採用する理由を解説しましょう。 元ネタとなるマリオギャラクシーを力学系の用語で分析すると、重力がマリオの動きを束縛し、マリオのジャンプが大移動を可能としています。 リアプノフ指数(リャプノフ指数とも表記する)が小さくなる要素が重力。 大きくなる要素がジャンプです。 この二つの要素を勘案すると、マリオのリアプノフ指数は思いのほか小さくなります。 リアプノフ指数が小さいということは、先の予測がつきやすくなります。 つまり意外な動きがきわめて少ないということで、単調さが付きまといます。 マリオギャラクシーは根本的に単調なゲームたることが宿命付けられています。 ここの講座で磁力を採用する理由はここです。 車は磁力によって反発や吸引され、星や地形のいろいろなところに引っ付きます。 NとN、SとSの反発で車の軌道のリアプノフ指数が大きくなり、NとSの吸引でリアプノフ指数が小さくなりやすくなります。 車の磁力のNとSを反転することで、空間内のリアプノフ指数が反転し、車の軌道に意外な動きと適度なリアプノフ指数を導入することができます。 また、NとSを組み合わせることで、ジャンプ地点と着地地点をある程度固定することができます。 これは製作者にとってはとても楽なことです。 願わくば、スーパーマリオギャラクシー2にリアプノフ指数を意識したステージが増えますように。 というのは著者の願いです。 ちなみに、2Dマリオは力学系ではピンボール系に分類され、ジャンプや敵の踏み付けで大ジャンプできることがピンボールでいえば盤上のギミックにボールがあたることに相当します。 数学を知らない人には信じられないことかもしれませんが、NewスーパーマリオブロスDSまでの2Dのマリオはピンボールやパチンコを横に引き伸ばしたものと解釈できます。 亀やキラーや蜘蛛をうまく踏んでジャンプする=リアプノフ指数が増加する、ピンボールでいえばボールを大きく弾き飛ばすギミック。 マリオがジャンプしブロックや敵にあたるかあたらないか=ピンボールやパチンコで言えば釘に当たるかあたらないかに相当。 マリオが平行移動する=ジャンプの場所を調整できる=リアプノフ指数が下がる。 2Dでは敵の密度が高いために、このリアプノフ指数の変化が高密度で起こります。 3Dでは空間が広がった分、敵の密度やマップないのオブジェとあたる回数が大幅に下がり、2Dマリオの高密度なジャンプが不可能となっています。 マリオギャラクシーでは、重力が阻害要因となります。 星の形が複雑な分、それに合わせるとリアプノフ指数を変化させるものを控えめに提示せざる終えません。 曲がった星の水平線の向こう、視界をさえぎるものだらけのところを進んださきにいきなりリアプノフ指数を大幅増加させるものがあっては、理不尽な覚えゲームになってしまうからです。 *実験 ***どうせゲームだし磁力の種類を増やしたり? 磁力の種類を増やしてみましょう。 これはそんなにとっぴなことではありません。 たとえば地形や星すべてが固定であり、地形の中にN極、車にS極が設定されてあれば、この磁力は見た目重力ゲームと変わりません。 ただ磁力ならNとN、NとS、SとNと作ることができ磁力は重力を拡張したものとみなせます。 磁力>重力の関係です。 それなら同じのりでゲーム用磁力>磁力>重力と拡張したものがあってもよいでしょう。 磁力を拡張してみましょう。 -ゲーム用磁力を導入する利点 まず、NとSだけでは遠くの磁力がほかの地形に思わぬ影響を与えてしまいます。 それを避けるために、新しい磁力を導入するというのは楽しいことです。 N、Sとそっくりの効果で、N、Sとはまったく相互作用しない磁力を考えて見ます。 名前は何でもいいので適当にRとKとでもしておきましょう。 RとKは普通の磁力と同じです。 R=N K=Sとにた作用をするとします。 車の磁力をR,K,N,Sを変化させることで密度の高い空間を作ることができます。 N,S、G、、、とN種類の磁力を考えて、N種類の引っ張りや反発や相互作用するしないの対応表を考えるのはとても楽しいことだと思います。 -形 磁力の利き方が変わってもいいでしょう。 台風のような螺旋がたに引っ張る磁力や、力学系でいうサドル方の磁力。 志向性のある磁力などいろいろな磁力を考えることができると思います。 想像力しだいだと思います。