より複雑な S:AD MOD の開発に役立ついくつかのヒント。
バージョン管理を使用する
バージョン管理システムにより、これまでに作業に加えられたすべての変更を追跡でき、問題が発生した場合には以前の安定したバージョンに戻すことができ、最も重要なことに、複数の開発者が同じプロジェクトで簡単に作業できるようになります。
非常に人気のあるバージョン管理ソリューションは GitHub です。 オンラインでプロジェクトをホスティングできるため、複数のモッダーが単一の複雑なモッドを開発できるようになります。
もう XNUMX つのソリューションは、GUI Subversion ラッパーである TortoiseSVN です。これを使用すると、自分のコンピュータまたはサーバー上でプロジェクトをホストできます。 非常に簡単に行うことができ、オンラインでドキュメントを入手できます。
提案されている両方のソリューションは、もちろん無料です (または無料バージョンがあります)。
バージョン管理が機能すると、MOD に加えられたすべての変更を追跡できるようになります。 たとえば、MOD の新しいバージョンをアップロードする直前、MOD を保存した後、すべての変更を確認できます。 最後の瞬間に物事が台無しになってしまうことが非常に多いため、これは必ず行わなければならないステップです。 MODエディター自体にもバグがあることが報告されています。
Steam にアップロードした後、ローカルの変更をバージョン管理リポジトリにも「コミット」する必要があります。
バージョン管理下に置く必要がある MOD フォルダーは次の場所にあります。
%appdata%\Stranded - Alien Dawn\Mods
実行時エラーの監視
最終的なエラーが見つかるゲーム出力ログは、次の場所にあるファイルに保存されます。
%appdata%\Stranded - Alien Dawn\logs
問題は、生成されたゲーム ログをフラッシュするためにゲームを終了する必要があることです。 ログ内のエラーを特定のゲーム内イベントと関連付けることが難しいため、これはデバッグには実用的ではありません。 改造マップの外でゲーム ログをリアルタイムで監視する簡単な方法があります。 必要なのは Visual Studio IDE だけです。 メニューの [デバッグ] – [プロセスにアタッチ] (またはショートカット Ctrl-Alt-P) からゲーム プロセスにアタッチすると、エラーを含むすべてのゲーム ログが [出力] ウィンドウにリアルタイムで表示されます。 アタッチ時に検索するゲーム プロセスは「StrandedSteam.exe」という名前にする必要があります。Visual Studio に詳しくない人のために、visualstudio サイトからダウンロードできる「Community」という名前の無料バージョンがあります。
モードコードの書き込み
S:AD ゲーム エンジンはゲーム ロジック言語として Lua を使用しますが、これはバニラ バージョンではなく変更されたものであり、標準ライブラリには多くの追加、変更、または削除された機能があります。 改造コード「item」はLuaにもありますが、MOD版はオリジナルを使用していませんが、特定の機能がブラックリストに登録されている限定された環境です。Lua言語自体は非常に簡単で、JavaScriptまたはPythonに慣れている人なら誰でも使用できます。 Lua ファイルの編集に使用できる IDE は数多くあります。 非常に人気のあるものは Visual Studio Code と Sublime で、どちらも無料です。 Lua IDE が MOD 環境から起動されている場合、Steam はゲームを閉じた後もゲームが実行中であるとみなす可能性があることに注意してください。 その場合は、IDE を閉じてください。
ゲーム内コンソールを使用する
たとえば、オブジェクトが選択されると、SelectedObj という名前のグローバル変数には、選択されたオブジェクトが値として含まれます。 コンソールにこれを入力すると、オブジェクトの内容が表示されますが、これは非常に大きなテキストになる可能性があります。 したがって、オブジェクト内の特定の情報を探すのは良いことです。 SelectedObj の後にポイント (.) を入力した場合 (これが Lua でメンバーにアクセスする方法であるため)、TAB キーを押すとオブジェクトの内容がリストに表示され、そこから選択できます。
デバッグに役立つもう XNUMX つの重要なグローバル変数は UIPlayer です。 これは、多くの重要なゲーム価値が含まれる名前空間です。 たとえば、UIPlayer.labels.Buildings は配置されたすべての建物のリストを保持し、UIPlayer.labels.Survivors はスポーンされたすべての生存者を含むリストです。 ただし、これらをコンソールに入力すると、非常に大量のテキストが記録されるため、あまり実用的ではありません。 ValueToStr という名前のヘルパー関数があり、これを使用すると人間が読みやすいテキストを表示できます。 例: ValueToStr(SelectedObj)、ValueToStr(UIPlayer.labels)。
コンソールは、TAB キーによるオートコンプリートもサポートしています。 この方法では、特定のグローバル変数またはオブジェクト メンバーの正確な名前を知る必要がありません。
印刷されたテキストを画面から消去するには、F9 キーを使用します。
ゲームデータの操作
とにかく、何らかの方法でゲームデータを検査する方法があると便利です。 XNUMX つの方法は、ゲーム コンソールを使用してグローバル var プリセットの内容を確認することです。 これには、プリセット クラスごとにグループ化されたほぼすべてのゲーム データが含まれています。 前のセクションで説明したように、コンソールで各名前の後にポイント (.) を入力すると、現在のコンテキストの内容を含むリストが表示されます。 そうすることで、レベルごとにすべてのコンテンツを分析できます。
ただし、データの内容が複雑すぎて大きなテキストとして検査できないため、コンソールの使用には限界があります。 むしろ、それぞれのプリセット クラスに対して明示的なツールを呼び出すために、どのようなプリセット クラスがゲームに登録されているかを理解することが必要です。 UI データ インターフェイスを開くプリセット クラスを受け入れるコンソール コマンドがあります。
OpenPresetEditor("<PresetClass>")
どこ検査する特定のクラスに置き換える必要があります。 たとえば、コンソールに OpenPresetEditor(“FXPreset”) と入力すると、最も難解なデータ項目の XNUMX つであるビジュアル効果とサウンド効果を保持する FX エディタが開きます。
By injto4ka