ゲヌムで最も汚い゜フトりェアトリックに぀いおの開発者

画像








時間がなくなるず、開発者は疲匊し、謎の問題が匕き続き発生し、非暙準の゜リュヌションが必芁になる堎合がありたす。 あなたがすべおの費甚でプロゞェクトを完了する必芁があるずき、すべおが危機にatしおいたす...元々フレンドリヌなGame Developer誌で発行されたいく぀かの叀兞的な蚘事で、我々はそのような実際の゜リュヌションのいく぀かの驚くべき䟋を研究したした。 これらの時代を超越した傑䜜は、 ここ Habréの翻蚳 およびここで読むこずができたす 。



ガマスヌトラは再びこのトピックを怜蚎するこずにしたした。 ゲヌム業界党䜓から異垞な問題に察する異垞な解決策を集めたした。 これらの゜リュヌションを私たちず共有した人は、そのような「修正」を誇りに思っおいないかもしれたせんが、実際、圌らはそれらを誇りに思うべきです。 圌らはなんずかゲヌムをリリヌスしたしたが、䜕も台無しにしたせんでした。 少なくずもこの蚘事たで。



独創性を楜しみ、倧胆䞍敵に驚嘆し、前任者の過ちから孊び、そしお最も重芁なこず-動䜜䞭のゲヌムをリリヌスし、時間通りに



ゲヌムのリリヌスのために考案された玠晎らしい゜リュヌションを共有したい堎合、私たちはそれらに぀いお喜んで孊びたす ダヌティトリックをGamasutraに送信し 件名は「ダヌティコヌディングトリック」、おそらく次の蚘事で玹介したす。



スヌパヌバッテリヌフォヌスがバッテリヌを䜿い果たす日











これは目立たないかもしれたせんが、 スヌパヌタむムフォヌスはXbox 360のメモリにほずんど収たりたせん。タむムリワむンド機胜のため、リワむンドタむムスケヌルの期間䞭、各アクティブレベルオブゞェクトのすべおの情報を保存する必芁がありたした。 新しいプレむダヌ、敵、匟䞞、爆発、プラットフォヌム、倧量のゎミ、匕き裂かれた身䜓の䞀郚それぞれが巻き戻しの蚘憶を奪い、この問題はゲヌム開発のプロセス党䜓を汚染したした。



認蚌の最終段階で、各レベルの理想的なバランスずリワむンドバッファの綿密なデバッグの埌、品質管理郚門から新しい゚ラヌに関するレポヌトを受け取りたした。



「任意のレベルを開始したす。 コントロヌラヌのすべおのボタンを2分以内にできるだけ早く抌したす。 これを20回以䞊巻き戻したす。 メモリが枯枇しおいたす。」



ボタンの高速「スパミング」により、ナヌザヌ入力から予想されるよりも早く巻き戻しメモリが消費されたした。 最初に戻り、レベルずバッファヌサむズのファむルのバランスを完党に倉曎する代わりに、より単玔な解決策に決めたした長い間隔で䞍圓に速くボタンを抌すこずを認識し、すぐにプレヌダヌを自滅させおから、レベルの先頭に巻き戻したす。 プレヌダヌがボタンを猛烈に抌すこずで、誀っお巻き戻し機胜をオンにしたず「ふりをした」。 バグは機胜に倉わりたした。



数日埌、別の゚ラヌレポヌトを受け取りたした。



「199Xレベル2を開始したす。すべおを爆砎し、できるだけ倚くの残骞を残しおレベルを完了し、時間がなくなるたでマシンガンを連続的に発射したす。 これを20回以䞊巻き戻したす。 メモリが枯枇しおいたす。」



巻き戻しメモリの制限は、砎片を䜜成する特定の数の匟䞞ず爆発のこの特定のレベルでの出珟のめったにたれなケヌスで達成されるこずが刀明したした。 繰り返しになりたすが、レベルファむルのバランスずゲヌムバッファヌのサむズを倉曎する代わりに、ゲヌムが巻き戻しメモリの限界に近づくず、ゲヌムを䞀時停止し、画面に巚倧な点滅「䜎バッテリヌ」アむコンを衚瀺しお、プレむダヌを優雅に投げ蟌みたす。レベル遞択メニュヌ。



いいえ、実際には、コントロヌラヌはバッテリヌを䜿い果たしたせんでした。 いいえ、誰にも䜕も説明したせんでした。 はい、品質管理郚門はこの修正を受け入れ、認蚌に合栌したした。



Capy Games、CTO、 Kenneth Jung氏



远加のタコメヌタヌ



PS2ずPSPのレヌシングゲヌムでリヌドプログラマヌずしお働いおいたした。PS3ず360で同時に開発されおいたす。



品質管理郚門は、運転がゲヌムの他のバヌゞョンずはわずかに異なるず䞍満を述べたした。 あたり自然ではないず感じたした。 問題を芋぀けるこずができなかったので、テスタヌの1人を私たちのオフィスに招埅しお、これに぀いお話し合いたした。 圌は私たちず䞀緒にゲヌムをプレむし、問題はオフィスでは発生せず、品質郚門のアセンブリに衚瀺されるこずを確認したした。



QAのアセンブリずテストアセンブリの䞍䞀臎を狭めようずしたしたが、制埡の違いはフレヌムレヌトカりンタヌに関連しおおり、テストアセンブリ画面の隅に衚瀺されおいたした。 品質管理郚門が䜿甚するマスタヌアセンブリのように、それを無効にするず、コントロヌルが少し異なるず感じたした。 実際、それは良くなっおいたす。 ブラむンドテストフレヌムカりンタヌが衚瀺されおいる画面の䞀郚を閉じ、カりンタヌのオンずオフを切り替えお再生に時間を費やしお、これが事実であるこずを確認したした。 違いは取るに足らないものであり、認識が難しいように思われたした。 1぀のこずが明らかでした。フレヌムレヌトの出力は、コントロヌルの問題を「修正」したした。



この問題の原因を探すために数週間を費やしたした。 ゲヌムの他のバヌゞョンに取り組んでいるチヌムから提䟛された物理コヌドを調べ、初期化されおいない倉数フォント印刷手順のスタックフィヌルドの状態によっお圱響を受ける可胜性があるたたはタむミングの問題を探したした。 メモリを初期化しようずしたした。 しかし、圌らは理由や解決策を芋぀けられたせんでした。



最埌に期埅できるこずは、画面からフレヌムレヌトカりンタヌを移動するず、マシンの制埡に圱響するかどうかを確認するこずでした。 フレヌムレヌトが出力された堎所は、カりンタヌが画面から倖れおいおも䜕も倉わらないこずが刀明したした。



そしお、最埌のテスト䞭にのみ、ゲヌムの認蚌の前倜に、問題の解決策を掚枬したした-原因ではないずしおも。 フレヌムレヌトのデバッグカりンタヌが垞にオンになっおいるゲヌムをリリヌスしたした。画面の右端をわずかに超えお衚瀺したした。



マヌティン・タヌトン 、 巧劙な豆株匏䌚瀟のディレクタヌ



タンパク質がなくなった











Titan Questの開発から思い出された最も玛れもなく汚いトリックは、むベントスクリプトの管理でした。 ク゚スト/むベント技術には深刻な匱点がありたした-アクションがトリガヌされた埌、それを延期する方法はありたせんでした。 したがっお、プレヌダヌが制限された音量を超えおから5秒埌に䜕かが発生するようにしたい堎合、遅延を蚭定できたせんでした。 アクションは垞に瞬時でした。



開発は終わりに近づいおいたため、远加機胜の導入を求めるのは難しく、開発者は次の段階に向けおすべおを完了するのに苊劎しおいたした。 品質管理郚門のテスタヌの1人がスクリプトの䜜成を手䌝い始め、アニメヌションの継続時間を倉曎するこずでむベントのトリガヌを延期する方法があるこずがわかりたした。



その結果、圌はゲヌム内の環境生物であるタンパク質を取り、それらをアニメヌションタむマヌずしお䜿甚したした。 そのため、それらはデフォルトのタむミング蚈算メカニズムになりたした。 テスタヌは目に芋えないタンパク質のバヌゞョンを䜜成し、レベルが必芁な堎所に配眮しおから、カりントダりン党䜓を埅機アニメヌションの継続時間にリンクしたした。 次のプロゞェクトの問題に察するこの創造的な解決策のおかげで、圌はデザむナヌに昇進したした。



アヌサヌブルヌノ、 Crate Entertainmentのオヌナヌ/リヌドデザむナヌ



副恐怖症



圓瀟のゲヌムの最新バヌゞョンでは、ビデオ広告を芖聎するためのゲヌム内通貚をプレむダヌに提䟛する新しい機胜が登堎したしたこれにより収入も増加したした。 ゲヌムのリリヌス埌、ビデオ広告が誀っお芁求されたこずがわかりたした。これが、ゲヌムセッション䞭に1぀のビデオしか再生されなかった理由です-深刻な迷惑です。



ゲヌムはサヌバヌサむドのむンフラストラクチャを䜿甚しお、さたざたなケヌスでさたざたなアクションを実行し、リリヌス埌にゲヌムの機胜を拡匵するこずができたした。 システムはルヌルをチェックし、ルヌルに埓っおいる堎合は、指定されたアクションを起動したした。



ルヌルはリフレクションによっお評䟡されたした。 たずえば、ルヌルVideoAds.IsVideoAvailable = trueを蚭定するず、このプロパティはリフレクションを䜿甚しお呌び出され、プロパティがtrueに蚭定されおいる堎合にアクションが実行されたした。



幞いなこずに、このシステムは簡単にハッキングされる可胜性があるため、新しいルヌルVideoAds.RefreshVideos = trueを远加したした。 このルヌルは決しお真ずはなりたせんでしたしたがっお、アクションは実行されたせんでしたが、コヌドがビデオを曎新する原因ずなり、システムがリモヌトコヌドを実行するためのプリミティブメカニズムを「匷制」するこずができたした。 問題は解決したした



Lior Tal 、 Cyanogenの CEO



そしお...撮圱されたした



ゎヌルドのリリヌスの2週間前に、Android向けゲヌムのメゞャヌアップデヌトに取り組んでいたした。 品質管理郚門は、カットシヌンの再生埌にいく぀かのランダムなデバむスで誀動䜜が発生するこずを通知したした。 同僚は1週間かけお゚ラヌを特定したり、理由を芋぀けようずしたした。 私たちは圌女を芋぀けたせんでした。 しかし、ビデオをスキップするために戻るボタンを抌すず、クラッシュは発生しないこずがわかりたした。 私たちの汚い小さなトリックは、タむマヌをカットシヌンに入れお、戻るボタンが完了する1秒前に抌すこずをシミュレヌトするこずでした。 問題の䞀時的な解決策ずしお䜿甚したした。 6か月埌、この「回避策」はただコヌドにありたした。



マヌロンルバルカバムニョス、 カラオクルタ



ブラックアむス、ホワむトノむズ











ブラックアむスで䜜業しおいるずき、スクリヌンショットのように無限の郚屋のように芋える空を䜜成したかったのですが、空にある䜕癟ものオブゞェクトの堎所によっおパフォヌマンスが䜎䞋し、90幎代以降のゲヌムのミラヌはあたり有効ではありたせんでした。 そこで、これをパヌティクルで実装するこずにしたした。 すべおが非垞に単玔でした-私はそれらを䞖界に配眮するスクリプトを曞きたしたが、問題がありたしたプレむダヌが䞖界の起源から背を向けたずきに粒子が消えたした。



目に芋えないパヌティクル゚ミッタヌがカメラビュヌから倖れるず、Unityのレガシヌパヌティクルシステムがシステム内のすべおのパヌティクルをオフにするこずを知るのに少し時間がかかりたした。 誰もが芖界のピラミッドによるクリッピングが䜕であるかを知っおいたすか私は長い間問題に苊しんでいたしたが、解決策が出おきたら-゚ミッタヌをプレヌダヌの顔に玄6むンチ䜎く取り付けたした。 そのため、プレむダヌはどの方向を向いおいたずしおも、゚ミッタヌから背を向けるこずができたせんでした 䞖界の䜍眮に基づいおパヌティクル攟出を倉曎し、プレヌダヌが移動したずきにそれらを曎新する必芁がありたしたが、うたくいきたした



以䞋のGIFは、゚ディタヌずゲヌムでどのように芋えるかを瀺しおいたす。



゚ディタヌで












ゲヌムで




Garrett Cooper 、ゲヌムクリ゚ヌタヌ、 Super Duper Game Company



刑務所に盎行



Backbone Entertainmentで働いおいたずき、Kevin Wilsonず私はMidwayアヌケヌドゲヌムをPSNに移怍するずいう非垞に激しいプロゞェクトに取り組みたした。 これがPS3時代の始たりです。 ダりンロヌドできる最初の11のゲヌムの䞭には、 Joust 、 Championship Sprint 、 Rampage World Tour 、 Rampart and Mortal Kombat 2 、および他の同様のゲヌムがありたす。



Backboneは以前これらのゲヌムをXBox Live Arcadeでリリヌスしたしたが、クロスプラットフォヌム向けには蚭蚈されおいたせんでした。 プロゞェクトは数週間で最小化する必芁があったため、このような䞀時的な負荷で誰でもできるこずを行いたした。PS3に郚分的にDirect Xを実装したした。 私はプロゞェクトの最埌の週を痕跡を隠しお過ごしたした。



Ian Sherman 、 その他の海掋プログラマヌ



Dll-it自分



クラむアントは、圌のノりハりを隠すこずを非垞に心配しお、タヌゲットコン゜ヌルプラットフォヌム専甚の耇数のDLLを匕き枡したした。぀たり、ラむブラリは本質的にブラックボックスでした。 どのように求めおも、私たちは頑固にPC甚のラむブラリを䞎えられたせんでした。 ゲヌムのフロント゚ンド党䜓がPCで実行され、コヌドにはゲヌムプレむを実行するのに十分な空の゚ンゞンしか含たれおいたせんでしたが、このゲヌムの動䜜をPCでテストするこずはできたせんでしたが、これは倚くの理由で私たちに適しおいたせんでした。



このようにしお、PS3 / X360の開発サむクル党䜓を実行したした。 次に、ゲヌムの次のむテレヌションでは、Xbox OneずPS4に切り替え、゚ンゞンラむブラリの曎新バヌゞョンを受け取りたしたが、PCバヌゞョンはただないため、特にPS4での䜜業は非垞に困難でした。



しかし、魔法が起こりたした。XboxOneのラむブラリは、実際にはPCで完党に機胜する64ビットコヌドであり、Windows実行可胜ファむルに簡単に接続できたす。 XboxのCPUず同じ呜什セット拡匵を含むかなり新しいCPUを搭茉したPCがあれば十分でした。 このシステムが機胜するようになったずき、私たちは子䟛のように喜びたした。



゚ピロヌグ-次のサむクルでは、Steamバヌゞョンを䜜成しおいたずきに、顧客は最終的にPC甚の実際のラむブラリをgeneしみなく䜿甚したため、ハックは䞍芁であるこずが刀明したした。



ダン・フィルナヌ



橋は遠すぎたすか











これは、゜フトりェアトリックずいうよりもキットバッシュおおよその翻蚳3Dモデリングを含む暙準ワヌクピヌスから䜕か新しいものを䜜成するに䌌おいたすが、 Grim Dawnに取り組み始めたずき、私は実際に䞀人で働きたした。 私の自由時間に私を助けおくれた友人䞻に元アむアンロアの同僚が䜕人かいたしたが、私は䞀人で党力で働きたした。 数か月埌、プログラマヌが私に加わりたしたが、Kickstarterでのリリヌスの前には、私たち自身のアヌティストがいたせんでした。 その結果、個人的な貯金の䞀郚をアヌティストの雇甚に費やし、最初に䜜成したオブゞェクトの1぀は朚補の橋でした。 平らな朚の板、長い䞞い梁、釘のように朚を぀なぐ金属補の鉄道束葉杖で構成されおいたした。



時々、ボランティアがチヌムに来お、仕事ず家族で忙しすぎるこずが刀明し、その埌姿を消したした。 倚くの新しいグラフィックスが登堎しない段階に到達したした。 私はアヌティストではありたせん。私のスキルは、写真からテクスチャを䜜成するこずず、「モデリング」の最も単玔な基瀎に限られおいたす。 実際、私は倚くの遞択肢がありたせんでしたが、既成のオブゞェクトを倉曎し、さたざたな成功を収めながらUVマップを修正したした。



しかし、䞖界をさらに構築するために、より倚くの環境オブゞェクトが必死に必芁でした。 したがっお、゚ディタヌでこのブリッゞを開き、個々のパヌツを䜿甚しお新しい朚補の構造を䜜成する必芁がありたした。 その結果、倚くのオブゞェクトを取埗したした。 道の板、家の入り口、フェンス、ゎミの山、最初の画面で芋るこずができる絞銖台、暙識、テヌブル、家の屋根から配眮された他の橋...キックスタヌタヌの埌、私がアヌティストをフルタむムで雇うこずができたずき、これらのオブゞェクトのいく぀かはやり盎したすが、この最初のブリッゞのフラグメントはただ倚くのオブゞェクトで䜿甚されおいたす。



アヌサヌブルヌノ、所有者/リヌドデザむナヌ、 クレヌト゚ンタヌテむメント



いいですね











3DSのMega Man Legacy Collectionの䜜業䞭に、たったく远跡できないサりンドの「バグ」を発芋したした。 最初に再生された音は歪んでいるか、正しく再生されおいたせんでした。



私自身は音声再生レむダヌを䜜成したしたが、それは3DS甚のニンテンドヌサりンドAPIに基づいおいたした。 再生システムは、バックグラりンドミュヌゞックやNESサりンド゚ミュレヌション埌者は私が曞いたものではないなどの連続ストリヌミングに加えお、UI゚フェクトや初期ロゎのデモンストレヌションなどのアクション甚の短くお小さなワンタむムサりンドをサポヌトするこずになっおいたす。



3DSサりンドの各「チャネル」は、珟圚の状態を远跡するためのさたざたなフラグず情報を含むデヌタ構造ずずもに送信されたす。 それらの1぀は、チャネルがアクティブか再生䞭かを決定するフラグです。 任倩堂の公匏文曞では、チャンネルが䜕かを再生しおいる堎合はフラグがtrueであり、そうでない堎合はfalseであるず述べおいたす。



これにより、いく぀かのバグが発生したしたが、その根本的な原因は時間䞍足のために芋぀けるこずができたせんでした。 簡単に蚀えば、ゲヌム開始時に10ケヌス䞭9ケヌスで、Digital Eclipseロゎ[ゲヌムコレクション開発者]に付随するメロディがさたざたな方法で歪められたした。音が途切れたり、たったく再生されたせんでした。 これはゲヌムの最初のサりンドであり、最初に再生されたサりンドでは垞に゚ラヌが発生するこずがわかりたした。その埌のサりンドは問題なく再生されたす。



デバッグを開始するず、䜕も再生されおいない堎合でも、この「play」フラグの倀がtrueであるこずが刀明したした。 この状態ではプロゞェクトをリリヌスできないこずは明らかであり、私はすでにすべおのスマヌトなアむデアを䜿い果たしたした。 それで私の決定は䜕でしたか



ゲヌムをロヌドするずきに、この最初の曲を再生する前に、2秒間の沈黙を再生したした。 そしおこの状態で、プロゞェクトはリリヌスされたした。



キヌス・カむザヌショット 、 デゞタル・゚クリプス・プログラマヌ



All Articles