ゲーム業界へようこそ:)
つまり、大規模なリファクタリングを行っています。大規模なリファクタリングは悪ですが、それはトピックではありません。とにかくあなたはあなたの神経をテストするためにこの仕事を与えられたので、それをあきらめないでください。
私の答えは、あなたはそれを小さな塊に分解しなければならない。それは数ヶ月であなたの毎日のルーチンになるので、あなたは分割して征服する方法を学ぶ必要があります。基本的にはあなたの仕事です。いくつかの提案:
このコンポーネントが何をすべきかを理解していることを確認してください。何を取り出さなければならないかを試して、それが何をするかを確認し、仮定が正しいかどうか同僚に尋ねます。
何らかの理由でこのモジュールを書き直しています。それはあなたには自明ではないかもしれませんが、このタスクを与えられた場合、それはおそらく何かがとてもひどいために人々がそれを最初からやり直したほうがよいと感じているためです。質問してください:それらの欠陥は何ですか?
書き換えるコンポーネントのコア機能、その実質、その存在理由を見つけて、これを機能させることから始めてください。できる限り小さくしてください。この機能がどのようになるかを同僚に尋ねます。GFXシステムの場合は、1つのポリゴンを表示します。アニメーションシステムの場合は、1つのボーンを適切に配置します。AIシステムの場合は、アニメーションを再生するだけです。等など。邪魔になるすべてのものをゴミ箱に捨て、それらすべての困難なエラーを提供します。詳細に邪魔されることはありません。できるだけ早くこのコア機能を動作させてください。実装は醜く、バグやハッキング、マジックナンバーでいっぱいであり、コードを誰かに一瞥してもらえないでしょうが、それは問題ではありません。
このコア機能を手に入れたら、すでに気分が良くなります。1)あなたの士気2)それをテストできるようにするには、あなたの仕事の結果をできるだけ早く見ることが不可欠です。だから、それをテストし、ストレステストし、拷問しなさい。クラッシュしたり、本当に悪いバグが表示されたりした場合は、これを修正してください。これはモジュールの心臓部なので、少しやり直して、快適に感じるまでクリーンアップします。
次に、それを同僚に見せて、それがゲームに必要なものかどうか尋ねます。 コードレビューを依頼する:あなたの同僚はおそらくあなたが考えていなかった多くのことについてあなたに言うでしょう。実装をチームの他のメンバーが望むものに適合させるには、再度リファクタリングする必要があります。
次に、準備ができたら、先にゴミ箱に入れた他の機能を1つ選び、すすぎ、繰り返します。できる限り速く動作するようにして、やり直し、レビューを依頼し、やり直します。
最後にもう一度強調しなければならないのは、コミュニケーションです。このシステムを使用またはテストまたは評価するすべての人に、同僚だけでなく、リードだけでなく、プログラマーにも質問してください。愚かな質問をすることを恐れないでください。疑わしいときは、会議やレビューを数週間待つよりも、すぐに情報を入手する方が常に良いでしょう。
ゲームプログラミングの現実は、ブランドの光沢のある新しいシステムを毎日作成するのではなく、集中して作業を迅速かつ効率的に実行することです。一緒に自分を引っ張って、仕事に取り掛かり、そして幸運を!
編集
Leoのコメントとdhasenanの回答に役立つと思われる追加情報があります。この回答を完成させるために、私は恥ずかしくないことにそれらを精査しています。
相互依存関係に対処する方法については書きませんでした。書き換えているモジュールはおそらくゲームの残りの部分と深く結びついているため、何かを変更するときに多くのエラーが発生します。したがって、2つの解決策があります。
ただそこにある場合は、いくつかの依存関係、あなたは幸運。新旧のモジュールはしばらくの間並行して保持できます。ユーザーが必要に応じて新旧のモジュールを切り替えることを決定できるように、ユーザー用のスイッチを用意することもできます。設定ファイルまたはデバッグメニューのどこかにスイッチを配置し、モジュールがゲームの残りの部分に接続されている場所ならどこでもスイッチを使用します。新しいモジュールを生産する準備ができたら、スイッチをデフォルトでオンにします。後で、古いモジュールが使用されなくなったとき、または生産を継続する必要があるときに、古いモジュールとスイッチを取り外します。
たくさんあるなら依存関係は、1つずつ取り外してから再度差し込む必要があります。両方のモジュールをバックグラウンドで維持するようにしてください。新しい機能が動作するようになるたびに、その機能の新しいモジュールに切り替えてください。つまり、この機能に関連するものを取り外し、再度差し込みます。おそらく1つの関数呼び出しだけを変更するよりも手間がかかるため、少し時間がかかります。一部のデータ構造が変更されたり、プログラムフローが変更されたりする可能性があります。ゲームにとって非常に重要なモジュールであるため、古いモジュールと新しいモジュールの両方を並行して維持することが実際に不可能である場合は、適切な場所に書き直すことを検討してください。ただし、これは、欠陥が古いモジュールのインターフェースにある場合、同じ欠陥が発生することを意味する場合があることに注意してください。とにかく、これが起こった場合、
ビデオゲーム開発に固有のものがある場合、それはこれです。私たちはロケット科学や複雑な研究を行っていないので、私たちは創造的なプロセスの一部です。何かをするときは、最初のバージョンをできるだけ早く作成して、テスト、再生、難読化、および変更できるようにする必要があります。少し時間をかけずに「非常に長い1つの作業」に何週間も費やすことはできません。