Homeworld Remastered Collection

Homeworld Remastered Collection

Not enough ratings
日本人MOD製作者向けガイド⑥
By dengun
HWRMの日本人MOD製作者向けのガイドとなります。
ワークショップで公開中のA-test Template MODを利用していきます。
⑥ではコピーによるユニットの新規追加方法についてです。
   
Award
Favorite
Favorited
Unfavorite
ユニット追加の手順について
今回はコピーから学ぶ、ユニットの新規追加手順についてです。
まずは、手順を見て行きましょう。
大まかに分類すると、こんな感じになります。

①材料を用意する。
②生産メニューへの登録をする。
③生産フォーメーションへの登録をする。
④AIへの登録をする。

案外書き出してみると項目は少ないですが、
多くの作業を同時並行する部分が多く、エラーを引き起こしやすいです。
まずは作業前にバックアップの習慣をつけましょう。



①材料を用意する
新しいユニットを追加する上での材料についてです。
この場合は当然ながら
shipフォルダに入ってるユニットのデータと、
そこから連なる関連ファイル郡
を差します。

関連ファイルとは、
使用する武装性能設定ファイル、
搭載するサブシステム、使用するエフェクト等
枝分かれしながら繋がるファイルを差します。

もしも自作ユニットを追加したいと思ったら、
どこまでを自作するかを明確に線引きする事が大事です。


------------------------------------------------------------------
今回はコピーという事で、自作する物はほぼありません。
武装系データもエフェクトもそのまま流用する為です。
A-test勢力にはコルベットが存在していませんので、
今回はコルベットをコピー追加したいと思います。

まず、shipフォルダの
dio_corvette
をデスクトップにでもコピーします。
その後、フォルダの名前と、ファイルの名前をaaaにリネームします。



shipファイルを開き、BuildFamilyをaaaに変更して生産設定を適応させます。
NewShipType.BuildFamily = "Corvette_aaa"

これだけで基本的な部分は完了。
後はお好みに応じて性能設定など弄っても大丈夫です。
作業が終わったらshipフォルダに追加しましょう。

②生産メニューへの登録をする
①で材料を用意が完了したら、次は生産メニューへの登録です。
生産メニューは1つのファイル
def_build.lua
で管理されています。

場所
scripts/races/aaa/scripts/def_build.lua

このファイルではユニットだけでなく、サブシステムも同時に管理しています。
生産には条件を付属する事も可能で、
例えば研究の項目を完了しないと生産できない、
サブシステムを開発しないと生産できない、といった制限をかけることが出来ます。

{ Type = Ship, ThingToBuild = "aaa_corvette", RequiredResearch = "", RequiredShipSubSystems = "", DisplayPriority = 210, DisplayedName = "Corvet (x2)", Description = "Anti-fighter & corvet", },
↑今回の場合はこのブロックを追加してください。
これで生産メニューへの登録は完了です。

-------------------------------------------------------

コード解説。
Type =         shipかSubSystemを選択します。

ThingToBuild =     指定するユニット、サブシステムのフォルダ名

RequiredResearch =   必要なリサーチ。
def_research.luaで設定されてるリサーチ名を使用します。

RequiredShipSubSystems = 必要なサブシステム。
ここで必要な名前はサブシステムフォルダ内のsubsファイルの、
NewSubSystemType.typeString=で指定される名前が入るようです。
               
DisplayPriority = 登録番号。数は少ないほどメニューの上に表示されます。

DisplayedName = 生産メニューに表示する名前

Description = 生産メニューに表示する解説。

③生産フォーメーションへの登録をする
生産メニューを通じて生産されたユニットは戦場に登場すると、
ビルドユニットが指定する座標に沿って整列します。
これはshipファイル上から指定されたデータを使用します。


NewShipType.paradeData = "aaa_mothership_parade" 

フォーメーションを管理するファイルはscriptsフォルダに格納されています。
scripts/formations/aaa_mothership_parade.lua
内容はユニットの指定と、ビルドユニットを中心とした座標軸管理がされています。
今回はこのブロックを追加しましょう。

paradeSlot("aaa_corvette",{ 1112, -536, 1005, },{ 0, 0, 1, },{ 1, 0, 0, },0)

もしもビルドユニットのHODファイルにドッキング機能が設定されているのなら、
それに沿って戦場に登場し、指定された座標に整列します。
ドッキング機能が無い場合は、指定された座標の場所にハイパースペースで登場します。
既にユニットが居る場合は、指定された方向への整列をします。
ちなみに、この項目を設定せずにユニットを生産した場合はクラッシュエラーを起こします。

----------------------------------------------------------------------
参考データ
paradeSlot("shipフォルダ指定",{
1112, X軸
-536, Y軸
1005, Z軸
},{
0, 不明
0, 不明
1, 不明
},{
1, 複数生産時のX軸の整列
0, 複数生産時のY軸の整列
0, 複数生産時のZ軸の整列
},0) 整列の間隔。0の場合はshipファイル側で設定されてる数値が使用されます。

④AIへの登録をする
ここでは改めて解説する必要は無いと思います。
⑤で説明したAIフォルダのclassdef.luaへの登録を行えば完了です。

全ての作業を終えたらテストプレイです。
確認する項目は、
生産メニュー。
生産。
生産後のフォメーション移行。
AIによる新ユニットの運用状況。
ログの確認によるエラーの有無。

全て問題無く動けばユニットの追加は無事終了となります。