身近になった物理エンジン
今や、物理エンジンは身近なものとなりました。Unityなどのツールには物理エンジンが搭載されているため、プログラミングの知識がほとんどなくても物理エンジンを扱うことができます。
しかし、物理エンジンも万能ではありません。
操作感の謎 ~究極のジャンプを求めて~ - sam113のアクションゲーム研究室
上記の記事でも述べたように、アクションゲームにおいては物理的に正確な動きが必ずしも良い操作性を生み出すとは限りません。時には物理法則を無視した方が良い操作性が生み出される場合もあります。
それでもなお、物理エンジンは強力なツールです。物理エンジンを正しく使えば、ゲームの表現力を飛躍的に向上させることが可能です。それらを踏まえた上で、アクションゲームにおける物理エンジンの有意義な使い方を考えてみたいと思います。
物理エンジンの扱いの難しさ
まず最初に書いておきたいのは、物理エンジンを使ってアクションゲームを作るのは案外難しいということです。物理的挙動に忠実に動けば簡単にアクションゲームが作れるかというと、そうはいかないものです。
2Dの物理エンジンを使用する場合でも、たとえばキャラクターの足元の床が傾いている時、キャラクターを左右に動かすには移動方向を足元の傾斜に合わせてあげる必要があります。傾斜の角度が途中で変わったら、それに沿うように移動方向も調整する必要があります。
足元のオブジェクトが移動や回転をしたら?振り子のように動いたら?などなど、様々なことを考えれば考えるほど、物理エンジンをゲームに落とし込むのは簡単ではないことが分かります。これらはいずれも物理エンジンを使わなくても発生する問題ですが、物理エンジンを使っても同じ問題に直面します。
これらの本質的な原因は、アクションゲームのキャラクターが物理的に正しい動きをしていないためです。ゲームを作るうえで、どうしても物理的に嘘をつく必要が出てくるのです。そのため物理エンジンを使ってアクションゲームを作るには、物理エンジンの計算結果をそのまま使用するのではなく、計算結果をカスタマイズする必要が出てきます。
それでも魅力的な物理エンジンの表現力
しかし、それでもなお物理エンジンには魅力があります。私は物理エンジンの魅力は、作り手が予期しないオブジェクト同士の相互作用を生み出すことだと思います。
物体Aが転がって物体Bに衝突し、それが倒れて物体Cを動かして物体Dを破壊する…といった複数のオブジェクトが絡み合う複雑な相互作用は、物理エンジンでなければ実現が難しいものです。このようなドミノ倒しやピタゴラ装置のような動きは、プレイヤーの創意工夫を呼び起こします。ゲームの中で「物理実験」が可能になるのです。
もしボーリングのピンとボールがあったら、プレイヤーは喜んでボールをピンに向かって投げるでしょう。そこでボールに衝突して引き起こされるピンの動きは、ゲームの作者さえ予期しないものとなります。倒れたピンが転がり、さらに別のピンを倒すかもしれないし、まったく別の方向に飛んで行って敵キャラを下敷きにしてしまうかもしれません。
ゲームの作り手の想定を超えた現象が起こることで、ゲームは作り手の掌から飛び出て、真に創造性に溢れたものとなるのです。
ここでのポイントは、せっかく物理エンジンを使うのであれば、プレイヤーが自由に投げられるボーリングの玉を用意してあげるべきだということです。ボーリングの玉というのはもちろん比喩ですが、要はプレイヤーが物理エンジンに干渉する余地を与えるべきだということです。
もし物理現象を見ているだけで干渉できないのであれば、創意工夫を発揮することはできません。どうせなら、自由に投げられるボールやブロックを配置するなど、創意工夫を最大限発揮できる環境を整えてあげるのが良いと思います。それによって、物理エンジンの魅力が引き出されるのです。