Totally Accurate Battle Simulator の知られざる物理学のカオス

「物理学を使って何かをしようとすると、たくさんの楽しいことが起こります」と、Landfall Games の責任者であり、Totally Accurate Battle Simulator のギャング戦士の軍団の背後にいる知的な神である Wilhelm Nylund は言います。

しかし、物理学は、TABS の開発過程、および彼が Landfall で作成した他のすべてのゲームにわたって、彼に多大な悲しみを与えてきました。結局のところ、物理学はすべてを難しくします。 「ゲーム内で何かをしたい場合は、単にそれを行うのではなく、物理学を使ってそれを行う方法を見つける必要があります」と彼は私に言います。だからこそ、極端な暴力のばかばかしいパロディを見ることを目的とした TABS が素晴らしいのです。

立ってください。 TABS の場合、立っていることさえも複雑な物理システムの結果です。各ユニットはラグドールであり、体の各部分にはゲームの重力によって継続的に下に引っ張られる質量があるため、自然に地面に山のように崩れようとします。そのため、ユニットを立たせるために、ニールンドは胴体と頭に上向きの力を加え、マリオネットの糸のように機能させ、ユニットを直立させます。真下に地面がある場合にのみユニットが立つようにするため、ユニットの高さほどの長さのレイキャストを頭から真下に発射します。レイキャストが地面に当たった場合にのみ、上向きの力が追加されます。

次に、ユニットをしっかりと足で立たせるために、ゲームは足が地面についているかどうかをチェックします。そうであれば、接続点がヘッドからどのくらい離れているかをチェックします。頭部が衝突点に近づくほど、より多くの力が加わり、より勢いよく立ち上がらざるを得なくなります。完全に直立している場合、上向きの力は少なくなります。

次に、ユニットが足でバランスをとっているという感覚を与えるために、Nylund はユニットがいつ転倒するかを示すスクリプトを与えます。このスクリプトは、ユニットの足の中点をチェックし、それを重心と比較します。完全にバランスが取れている場合、2 つは整列するはずです。しかし、たとえばユニットが前傾している場合、足の間の中点が重心の後ろにあり、前方に倒れてしまいます。これを修正するために、スクリプトは足を拾い上げ、中点をユニットの重心に近づける方向に動かします。

それで立っているんです。今は歩いています。体のほとんどの部分には、歩行動作に役割を果たすスクリプトがあります。太ももは前後に揺れます。足には上向きの力と下向きの力がかかります。 「つまり、右脚が前に進むべきときに、大腿部が前方に回転し、上向きに力が加えられるのです」とナイルンド氏は説明します。 「脚が後ろに進むと、両方の力が逆になり、足が地面を押し込み、脚が後方に回転します。」

これらすべての動きには、足の摩擦などの他の微調整が伴うため、足が地面に着地したときに地面を掴んでいるように見えます。 「また、脚と足を非常に滑りやすくすることで、前方のポイントに到達しやすくしています」と彼は付け加えました。これは、脚を前に出すときに他の体の部分に引っかからないようにするためです。

「システムがたくさんあるよ!おそらくアニメーション システムのやり直しは合計 6 回か 7 回になると思います。コードベース全体を 2 回破棄して、ゼロから始めたこともあります。」

当然、TABS の戦闘も物理学によって導かれます。ダメージは武器が身体に衝突する力から計算され、その身体部分にダメージ軽減統計があるかどうかを確認し、さまざまな乗数を加算します。クラブは衝突力のみでダメージを与えますが、剣は衝突力の 5 倍を与えます。槍の場合、先端から20センチ以内に衝突すると10倍のダメージを受けるが、棒で当たるとダメージはかなり小さくなる。

ユニットが武器を持ち、振る方法も物理学によって決まります。ユニットの手が武器を保持するポイントは、それを所定の位置にロックするジョイントです。そして、すべての武器には、保持したい胴体との相対位置があります。剣は前に出たいので、そこに保つために力がかかります。 「少しぐらつきますが、常に胴体から 50 cm 前方に留まろうとします」とナイルンド氏は言います。次に、そこに留まりたい相対的な回転があります。剣は上を向くことを好みますが、槍は常に前を向くように回転させたいと考えています。

これは、武士の剣の振りを定義するアニメーション カーブです。

武器を振るうために、ユニットはまず攻撃したい方向を保存します。一般的には、武器の先端 (ニールンドが力点と呼ぶもの) から敵の胴体までの方向です。次に、アニメーション カーブを使用してスイングの力を定義します。曲線はゼロから始まり、通常は一瞬下向きに曲がり、先端の力が増加します。離れてターゲットから遠ざかり、高く上昇し、より多くの力を加えますに向かってターゲット。 「ちょっとしたワインドアップ、彼らがストライキをするだろうという知らせが得られます。」

どこに力が加わるかは武器によって異なります。剣の振りは先端によって導かれますが、僧侶の弓の杖の最初の振りは一方の端によって導かれ、次にもう一方の端に切り替わり、交互に行われます。

これらすべては、Nylund がシステムを手探りしながら、長年にわたる試行錯誤の成果です。あるいは、彼が言うように、「望む外観を得るには、物理​​学との多くの格闘が必要です。」単純に兵士に正しく剣を持たせるには、非常に多くの変数が関係します。 「それは、手の角度、武器の重さ、直立させるのにどれくらいの力が必要か、武器と手の関節がどのように設定されているか、どのくらい固いか、角度に余裕があるかなどです。彼らは繋がっているのか?それらのどれも、変更するのが正しいことである可能性がありますが、試してみなければわかりません。」

しかし、TABS のすべてが純粋な物理学に基づいているわけではありません。カタパルトによって投げられる巨大な岩はすべて物理学ですが、矢やマスケット銃弾のような小さな発射体は物理学ではありません。これは、ゲームが衝突で直面する古典的な問題のためです。これは次のようになります。TABS はフレームごとに、オブジェクトが互いに衝突していないかどうかを確認します。しかし、マスケット銃のようなオブジェクトが小さく、非常に速く動く場合、それが特定のオブジェクトと衝突する瞬間が、ゲームが衝突をチェックする瞬間と決して一致しない可能性が高くなります。その結果、オブジェクトを簡単に切り抜くことができます。

したがって、TABS の小型発射体の軌道はフレームごとにシミュレートされません。代わりに、ゲームは各フレームでパスに沿って発射体をステップさせ、後ろに線を引いて、前のフレームからどれだけ遠くまで到達したかを確認します。線がオブジェクトと衝突すると、TABS は衝突したことを認識します。これらは物理オブジェクトではありませんが、Nylund はそれのように見せました。矢はターゲットに突き刺さり、物理ジョイントをシミュレートする追加コードのおかげで、動き回るとリアルに揺れることさえあります。

しかし、この解決策は、ナイルンドが王朝派閥のユニットであるサムライを思いついたときに、さらに混乱を引き起こすことになりました。ファクションを開発する過程で、チームは遠距離敵に対する答えがないことに気づきました。 「彼らは射手相手には毎回負けてしまうのです。」そこでチームは、サムライが空中から発射物を攻撃できたら良いのではないかと考えました。

問題はそれがどのように機能するかということでした。 Nylund の最初の考えは、ご想像の通りでした。 「侍に近くにある発射物を追跡させ、近づきすぎるとそれに向かってスイングアニメーションを実行して追い払います。」

TABS では一度に多くの発射体をプレイできるため、サムライはリストを参照してフレームごとに発射体を追跡できるでしょうか? 「しかし、それは非常にパフォーマンス重視の方法です。また、リストのこのシステムにより、以前は実際には必要なかった複雑さが追加されることになります。」

したがって、サムライの偏向は、実際には、発射物にのみ影響を与える目に見えない球をユニットの周りに配置することによって機能します。他のものはすべてそこを通り抜けることができますが、発射物は跳ね返されます。サムライはスイングするアニメーションを実行します。これは戦闘の最中に発射物に反応しているように見えるほど十分に速いですが、サムライを投げ飛ばすほど速くはありません。足。 (物理。)

しかし、一部の物理学ではこれまでのところ、TABS は不可能であることが証明されています。 Nylund はボールとチェーン、ヌンチャクをゲームに追加したいと考えていますが、これらの武器は複数の接続された物理オブジェクトで構成されています。 1 つのオブジェクトがもう 1 つのオブジェクトに影響を与え始め、次に 2 番目のオブジェクトが往復する…これは数学的には音響フィードバックに相当します。 「すぐに非常に不安定になり始めます。これらの武器を作るために何度か試しましたが、振りが遅すぎて面白くないか、十分に速く作ると武器の部分が引きずられてバラバラになるのがわかります。震える。」

イライラするかもしれませんが、少なくともこれは理解できる制限です。しかし、彼にはまだ解決されていない物理学の問題が 1 つあります。

Stick Fight: The Game は、TABS よりも前に Landfall が作成した 2D 格闘ゲームです。これは Unity の 3D エンジンの少し前のバージョンで実行され、2D であるため、スティック ファイターズのゲーム オブジェクトは、戦闘機から、乱戦中に飛び散る積み重ねられた塔や箱の橋に至るまで、すべて Z 軸に拘束されます。したがって、画面上で上下左右にのみ移動できます。

しかし、ニールンドが何をしたとしても、何の刺激も与えずに箱が滑り落ちてしまうことがわかりました。箱を積み重ねてレベルを作ることができないので、これは大きな問題でした。 Stick Fight がプレイできる唯一の理由は、Nylund 氏の言うところの「おそらく私が作った中で最もハッキングなソリューションの 1 つ」によるものです。

ゲーム内のすべてのものは、1 メートル離れて配置された、目に見えず摩擦のない 2 つの平面の間に挟まれています。 Nylund 氏は、他の場所での衝突問題を解決するために衝突の次元を追加するのがどれほど馬鹿げているかを笑います。しかし、それはうまくいきます。

彼は、この問題は Z 軸の制約によって引き起こされるのではないかと考えています。 「衝突を解決するために 1 つの軸の値を変更することは許可されていません。そのため、そのモーションがどういうわけか留まって増幅するだけで決して消えることはなく、最終的には他の 2 つの軸に影響を及ぼし始めるのではないか?」

彼の理論が正しいかどうかは別として、ひとつ安心できるのは、Unity の物理システムのまったく新しい実装にも問題が存在するということです。したがって、少なくともこれは現代のゲーム物理学における絶対的な法則です。ニールンドが今ではその微妙で不可知な混乱に慣れていることも助けになる。

「それはとてもブラックボックスです。あまりにも多くのことが起こっているので、私の知る限り、なぜ何かが起こったのかを実際に理解することは不可能です。」