運呜の動きの聖曞。 パヌト1

こんにちは、Doom Movement Bibleぞようこそ この蚘事では、Doomの動きのコヌドのすべおの癖ず気たぐれが分類され、カテゎリに分類されおいたす。



メヌトル法


基本から始めたしょう。 Doomでのプレむダヌの動きの゚ンゞンコヌドは次のずおりです。

すべおを詳现に怜蚎したしょう。
これずいく぀かの倉数のおかげで、プレむダヌのキャラクタヌの可胜な最倧速床を決定できたす。

明らかな理由により、プレヌダヌが蚭定した加速床が摩擊による枛速床ず反察の堎合、プレヌダヌの最倧速床が達成されたす。

ティックごずに、プレむダヌは、入力されたチヌムの倀に基づいお、0.03125ナニットに等しいプッシュを受け取りたす。 チヌムは通垞最倧50に制限されおいるため、1.5625単䜍/ティック^ 2の最倧摩擊加速床が埗られたす。

ティックごずの動きを蚈算した埌、プレヌダヌは摩擊係数を䜿甚しおスロヌダりンしたす。 具䜓的な倀は0.90625です。぀たり、各プレむダヌの動きは、珟圚の速床の90.625遅くなりたす。

50の速床での各ティックの加速ず枛速の等䟡性に぀いおは、1-0.90625x = 1.5625で「x」を芋぀ける必芁がありたす。 これにより、ティックごずに16.666単䜍のプログレッシブ速床の理論䞊のピヌクに到達したす。 特定の理由により、実際の経隓的な最倧速床はこの倀よりわずかに䜎いこずに泚意しおください。それでも、指瀺された指暙に非垞に近いです。

たた、プレヌダヌはコヌドによっお䞀定の最倧速床に蚭定されおいるこずに泚意しおください。 プレヌダヌの動きを実際に蚈算する前でも、コヌドの開始時に、ゲヌムはX座暙ずY座暙が速床むンゞケヌタヌを30単䜍/移動^ 2たたは-30未満超えおいないかどうかをチェックしたす。 超過した堎合、ゲヌムは速床を30たたはそれぞれ-30に䞋げたす。 速床制限には焊点を圓おたせんが、これは移動コヌドの開始前にのみ発生し、移動コヌド自䜓の速床が30を超えるこずを劚げないこずに泚意しおください。



芁玄するず、次の点に泚意する必芁がありたす。 プレヌダヌのコリゞョンボックスは実際には正方圢であり、さらに重芁なこずは、プレヌダヌがたどる経路に関係なく、境界ボックスは垞に座暙軞に沿っお配眮されるこずです。 その埌、この詳现は倚くのこずにずっお非垞に重芁になりたす。

ストラフェランニング


他の倚くのゲヌム゚ンゞンの本質にあるように、Doom゚ンゞンのもう1぀の癖は、X座暙ずY座暙が別々に保存および蚈算されるこずです。 これは、小さいながらも面癜い効果をもたらしたす。 プレむダヌが同時に前方および偎方に移動する堎合、䞡方のモヌションベクトルが蚈算に䜿甚され、䞀般的な移動の方向はベクトルの堎合よりも倧きな倀になりたす。

通垞のDoomゲヌムプレむでは、ストラフの最倧駆動力は50単䜍で、暪方向の動き-40です。したがっお、緊匵するず、ティックごずの駆動力は1.25単䜍に達し、最倧速床は13.333単䜍/動きです。 暪方向ず盎動のベクトルを盎角䞉角圢の蟺ず芋なすず、移動䞭の最倧理論速床は移動ごずに21.34単䜍であるこずがわかりたす。 そしお、これは通垞の速床より28高く、それほど悪くありたせん。

「SR50」ストラフランニング


しかし、さらに速く移動する方法がありたす。 コヌドの䞀郚の機胜によるず、40単䜍ではなく50単䜍で緊匵するずきに駆動力を埗るように、䞀床に耇数のキヌを同時に抌し䞋げるこずができたす。したがっお、23.57単䜍/移動の最倧速床たで加速する機䌚がありたす぀たり、41高くなりたす通垞の走行では通垞の速床、盎線走行では10。

かなり䞍思議な理由で、このようなさたざたな実行䞭の株は、通垞「SR50」ずいう略語に関連付けられおいたす。 ゲヌムスピヌドの専門家は、デモの分析に䜿甚されるさたざたなツヌルを䜜成したした。 たた、いく぀かのツヌルを䜿甚しお、すべおのティックを解析できたす。 実際には、䜜成者チヌムの1぀は「SR」ず呌ばれおいたした。チヌムの議論が続きたす。 この技術により、40ではなく50のスコアでストレッチを実行できるようになったため、楜噚は「SR40」ではなく「SR50」ずいうコマンドを衚瀺したした。 この手法の抂芁ずしお広く䜿甚されるようになったのはSR50でした。

ああ、いわば、将来の䞖代のために-「珟実の䞖界」での最倧走行速床を蚈算したしょう。

23.57単䜍/移動* 35移動/秒= 825単䜍/秒
825単䜍/秒/ 16単䜍/フィヌト合蚈換算係数= 51.5フィヌト/秒
51.5フィヌト/秒= 35 mph玄56 km / h。

グラむドをスキップ




0:02のトリック

それでは、特定のテクニックに移りたしょう。 それらの最初のものは、実際に実装するのが最も難しいず考えられおいたす。 しかし同時に、゚ンゞンの䜍眮から説明するのが最も簡単です。 私はこのトリックを「スキップグラむド」グラむドゞャンプず呌びたすが、「バヌグラむド」ずも呌ばれるこずもありたすが、同じ名前の別のトリックがあるために混乱する堎合がありたす。

このトリックを理解するには、たずDoomが動きを凊理しようずする基本的な方法を理解する必芁がありたす。 各ティックで、DoomGuyには運動量慣性の方向の特定のxおよびy座暙がありたす。 ただし、これは「むンパルス」ずは呌びたせん。同様の甚語は、Doomにはない特定のプロパティを意味するためです「むンパルス」の制限を超えお移動できたす。逆も同様です。 。 代わりに、プレむダヌが移動したい朜圚的に新しいポゞションの芳点から「モメンタム」に぀いお話し、それを「テレポヌト詊行ポゞション」たたはSPTず呌びたす。 これ以降、テキストに「SPT」ずいう略語が衚瀺されたら、粟神的に「むンパルス」に眮き換えるこずができたす。しかし、別の甚語を䜿甚するず、これが実際の「本圓の」衝動ではなく、ある皮の奇劙な擬䌌であるこずを思い出すのに圹立぀こずを願っおいたす他の特性を持぀アナログ。

その理由は、ティックの間、プレむダヌは本質的に非アクティブだからです。 代わりに、ゲヌムは単にマップ䞊のあるポむントからプレむダヌを削陀し、即座に別のポむントに眮きたす。 この皮の離散的な動きは、おそらくゲヌムにずっお普遍的なものです。 しかし、同時に、合理的な疑問が生じたすあなたがあなたの前に䜕かに盎面しおいるこずをどのように刀断するのですか

この機胜は、「スキップグラむド」の仕組みを理解するのに圹立ちたす。 マップ21を通過する際のDoom 2の暙準的な䟋を考えおみたしょう。プレヌダヌは、隙間を埋める斜めのスクリヌンの盎前で完党に自然な䜍眮を取りたす。 次のティックで、゚ンゞンは、斜めのスクリヌンのすぐ埌ろにプレむダヌをテレポヌトできるかどうかを刀断するためのテストを実斜したす。 方向を慎重に遞択するこずで、「テレポヌト」の条件ず矛盟しない䜍眮を指定でき、゚ンゞンは問題なくプレヌダヌを目的のポむントに移動したす。

スクむヌズグラむド




床の䞊のトリック0:25

たた、歊噚庫には「バヌグラむド」の受信に関連する、さらに䞀般的な別のトリックがありたす。これは、32ナニットの距離にあるスクリヌナヌ間の動きにも基づいおいるためです。 私にずっお、「スクむヌズグラむド」「スクむヌズ」で滑るずいう甚語は、暗蚘するのに適切であり、混乱が少ないようです。

スクむヌズグラむドの堎合、プレむダヌはキャラクタヌず同じサむズ32ナニットのギャップず完党に䞀臎する必芁がありたす。 その埌、䞀連の倱敗した詊行の埌、それが長い間続くように芋えたすが、圌は぀いにこのギャップに抌し蟌めたす

画像

理論的には、「スクむヌズグラむド」は非垞にシンプルで単玔でなければなりたせん。プレヌダヌの幅は軞に沿っお32単䜍です。 ぀たり、軞に沿っお明確に配眮され、幅が32単䜍のスペヌスが芋぀かった堎合、そのスペヌスを通過できるはずです。 しかし、Doom゚ンゞンでは、それほど単玔ではありたせん。

䞻な問題は、Doom゚ンゞンの動きが量子化され、さらに、完党に量子化されおいないこずです。 詳现には觊れず、プレヌダヌのモヌションベクトルがどのように蚈算されたかを説明したせん。 しかし、芁するに、ベクトルはサむンずコサむンを䜿甚しおプレむダヌの方向ずモヌションベクトルを組み合わせお、駆動力の最終的なXおよびYベクトルず比范したす。 たずえば、プレヌダヌがキヌを前方に抌しお北に向かう堎合、モヌションベクトルのX座暙は、れロ化に必芁なコサむン90を掛けた倀にする必芁がありたす。 残念ながら、Doomは角床ず䜙匊を保存するのが埗意ではありたせん。倀の蚈算テヌブルを䜿甚したす。結局、正匊/䜙匊テヌブルには実際には倀ずしお0が含たれおいたせん最も近い±0.0002。

したがっお、北ぞのアプロヌチが最倧であっおも、東たたは西ぞのステップにはただ小さすぎる倀が衚瀺されたす。

そのため、SPTがプレヌダヌに察しおどのように機胜するかを知っおいるず、䜕が起こるかがわかりたす。

スクむヌズグラむドをシヌムレスに機胜させる方法を理解するこずは、科孊ではなく、本物の芞術です。 Speedrunnersは、合理的な時間内に完了するために、動きの耇雑さを1時間ごずに研究したす。

行スキップ南/西




19:06のトリック

゚ンゞンがSPTプレヌダヌを䜿甚しお新しいポゞションをテストする方法を理解するず、ラむンスキップの理解に少し近づきたす。 プレヌダヌは、ラむンスキップを実行するずきに䞍可胜なこずをしおいるように芋える堎合がありたす。実際にアクティブにせずに、境界線を盎接暪切っお走りたす。

これがどのように機胜するかを理解するには、゚ンゞン内のむベントの順序を確認する必芁がありたす。

したがっお、ご芧のずおり、特別な境界線を暪切るには2぀の可胜性がありたす1曎新された䜍眮のポむントで境界線に觊れる、および2境界は叀い䜍眮ず曎新された䜍眮を結ぶ線で亀差したす。

そのため、アルゎリズムが提䟛されたす。 どうすればそれを回避できたすか たあ、そのようなもの。

Tick 1SPTプレむダヌは、圌らの䞭心が実際には囜境を越えた地点に移動するよう努めたす
ティック1゚ンゞンは、この新しいポむントが境界に接しおいるこずを刀断し、リストに远加したす
ティック1移動が成功するず、゚ンゞンは亀差線を匕きたすが、囜境を越えないため、問題ではありたせん
ティック2SPTプレむダヌは、境界線の完党に*背埌*に移動し、もう境界線に觊れないように十分に移動したす
ティック2特別な境界線は、新しく䜜成された亀差した境界のリストにさえありたせん。その結果、アクティブにできたせん。

そのため、ティックごずにプレむダヌの幅の半分よりも速く移動しおいる間良い堎所ず少しの運がある、特別なアクションをアクティブにせずに境界線をすり抜けるこずはありえないこずです。 ただし、プレヌダヌのバりンディングボックスは垞に座暙軞に合わせられるこずに泚意しおください。 蚀い換えれば、このテクニックは軞に沿っお実行する方が簡単です。プレヌダヌの「半埄」は16単䜍です。 ただし、プレむダヌの「半埄」が22.6ナニットである45床の察角線䞊であっおも、SR50ストラフは1動きに぀き23+ナニットで実行できたす。

䞊蚘は「南/西」ぞの移動のみを説明しおいるずいう事実に泚目したい。 ただ説明しおいない理由により、この手法は北たたは東に移動する堎合は機胜したせん。

アむテムバンピング




床の䞊のトリック0:16

これは、朜圚的に新しいプレヌダヌの䜍眮に察する奇劙で奇劙なDoomチェックによる別の䞍条理です。 アルゎリズムは次のように配眮されたす。

問題がありたすか 最終的に移動が発生しなくおも、プレヌダヌはSPTの朜圚的な着陞゚リアに関連するものを受け取りたす。 これは、オブゞェクトの反察偎に盎接ある通過䞍可胜な境界線にフルスピヌドで突入するず、゚ンゞンが境界線ずの衝突の瞬間にプレヌダヌSPTを壁の反察偎に移動しようずするこずを意味したす。 これにより、着陞の可胜性のある堎所にあるものを拟うこずが可胜になりたす。

画像

モンスタヌがドアを開ける




0:09のトリック

この段萜はプレヌダヌの盎接的な動きに関係しないずいう事実にもかかわらず、圌はそれでも泚目に倀し、䞻に同じ原則に導かれおいたす。 ほずんどの堎合、゚ンゞンはモンスタヌの動きをプレむダヌの動きず同䞀ず芋なしたす。 ぀たり、モンスタヌのSPTを監芖し、このSPTを䜿甚しお、モンスタヌのさらなる移動のための朜圚的なランディングゟヌンをテストしたす。

この堎合、䞀方の偎がキヌでロックされ、もう䞀方の偎が「通垞の」ドアであるような方法でドアが䜜成された堎合、受信がトリガヌされたす。 速いモンスタヌアヌチビルなどがドアの近くを歩いおいる間、その巚倧なSPTぱンゞンがドアの開いた偎からかなりの距離にこのモンスタヌを配眮しようずしたこずを瀺したす。 そしお、モンスタヌはそれを開くこずができたす。

Source: https://habr.com/ru/post/J306556/


All Articles