MOD作成

Last-modified: 2021-06-05 (土) 13:37:48

はじめに

このページでは、MOD作成者およびMODを作成してみたいと思う方々向けにMOD作成の助けとなる情報を追加していく予定です。MODの紹介やインストール方法など、プレイヤー向けの情報についてはMOD・ツールのページを参照して下さい。
なお、特に断りが無い限り、0.20を基本として解説しています。

MODファイル構成

0.20以降、MODはGameData以下に格納されるようになりました。デフォルトパーツが格納されているGameData\Squad以下のフォルダ構成を参考にするとよいでしょう。

modfolder.png

各フォルダーの中には、通常以下のファイルが納められています。以下のファイルの内、ファイル名が*.muおよび*.mbmで終わるファイルはUnity(後述)が出力するファイルで、これらのファイルを編集することは出来ません。また、MODによっては内部にtextureやmesh等のフォルダがあることもあります。

種別拡張子説明
MOD定義情報固定ファイル名"part.cfg"MODの定義情報が記述されたテキストファイルです。
モデルファイル*.mu, *.dae, *.objMODの形状などの情報を含むデータファイルです。
テクスチャファイル*.mbm, *.tga, *.pngMODで使用するテクスチャファイルです。

参考情報源について

MOD作成についての比較的まとまった情報としては、公式wikiの"Documentation"のコーナーがあります。ただし少々古い情報も多く、特に0.20以降の形式とあっていない箇所もあるので、適宜公式フォーラムの"Addon Making"内のスレッドから情報を拾う必要もあります。

上記のフォーラムの中から、チュートリアルを含む有益な情報をまとめたインデックスが以下のスレッドにあるので参考にするとよいでしょう。

また、part.cfgファイルはテキストファイルなので、適当なテキストエディタでデフォルトパーツのpart.cfgを見るのも参考になります。

準備作業

MOD作成に必要なソフトのセットアップを行います。

モデリングソフトの導入

MODで使用するモデルデータ作成にあたっては、3DCGのモデリングソフトが必要になります。フォーラムをざっと見た限りでは少なくとも以下のソフトでの作成実績がありますが、以下の他にもFBX形式(後述のUnityでインポート可能)、COLLADA形式、またはWavefront OBJ形式、またはその他のUnityでインポート可能なフォーマットでの出力が可能なモデリングソフトであれば使える可能性があります。

  • Blender(フリーソフト)
  • Maya
  • 3ds Max
  • Shade13 (※記事筆者により動作を確認)

Unityインストール

UnityとはWindows・Macで動作するゲーム開発環境で、KSPもUnityを使用して開発されています。Unityを使用しなくてもCOLLADA形式またはWavefront OBJ形式を出力可能な3DCGソフトウェアを使うことも可能ですが、Unityを使用する方法が標準的でフォーラム内での情報も多いので作成しやすいと思われます。無料版と有償のPro版がありますが、KSPのMOD作成は無料版で十分です。

なお、初回起動時にアカウント作成が必要なため、登録用のメールアドレスが必要です。

Unity用PartToolsの導入

Unityでは「アセット」と呼ばれる機能拡張を使用することで必要な機能を追加する仕組みになっています。KSPのMODを作成するのに必要な"PartTools"と呼ばれるアセットがKSP公式フォーラムの以下のスレッドで配布されています。

インストール方法はZIPファイルを解凍するとPartTools_AssetBundles.unitypackageというパッケージが入っているのでプロジェクトにインポートします。
(メニューAssets->Import Packageからインポートできます。)

Unity用ファイルインポート用アセットの導入

その他、使い慣れた3DCGソフトのファイルをUnityに読み込むためのアセットが(もしあれば)導入すると便利です。

モデルファイル作成

使い慣れた3DCGモデリングソフトで宇宙船のパーツを作成します。以下の点に注意しましょう。

  • ポリゴン数が多くなりすぎないようにする
    あまり複雑なモデルにすると、ゲームとして重くなりすぎる...以前にMODのロードに失敗することがあります。適宜テクスチャなどを活用してポリゴン数が多すぎないようにしましょう。どうしても、という場合は複数のパーツとして作成して、VABの中で組み立てる手もあります。
  • "Mesh Collider"用のポリゴンモデルも同一モデル内に作成する
    オブジェクトの接触判定に使用するポリゴンモデルで、物体の大まかな形状をローポリゴンで定義します。このポリゴンモデルはUnity上で"Mesh Collider"として指定するために使います。
  • 基準となる単位を合わせる
    KSPではモデルデータの単位は1mとなっています。必要に応じてあらかじめモデリングソフト側で設定するか、UnityのTransformのScaleで変換する、もしくはpart.cfgのscaleパラメータで調整をして下さい。
  • 原点を重心位置に設定する
    パーツを回転させるときの中心位置はモデルの座標上の原点(0,0,0)となっています。また、重心位置も同じく原点が使用されているようなのであらかじめ原点が重心位置(と思われる場所)に設定しておきましょう。
 

ポリゴン数の目安としてですが、バニラパーツでは中サイズ規格の円柱(燃料タンクなど)を表現する場合、

  • レンダリングメッシュ・・・24角柱
  • コライダメッシュ・・・12角柱

などを利用しているようです。

サイズについて

多くの場合、MODで作成するパーツはKSPの標準パーツと組み合わせて使うためある程度サイズを合わせておくと組み合わせやすくなります。以下、基準としやすい燃料タンクの直径を記載します。

パーツ名直径
FL-1800 Fuel Tank等
FL系列のタンク
1.25m
Rockomax Jumbo-64 Fuel Tank等
Rockomax系列のタンク
2.5m

なお、直径2.5mというのは日本のH-IIAロケットのSRB-A(固体ロケットブースター)やM-V、イプシロンの直径とほぼ同じなので、KSPの世界のロケットは意外に小さいことがわかります。(ちなみにH-IIA本体は直径約4mです)

参考リンク

Unityでの作業

必要なモデルファイルが出来たらUnity上での作業となります。フォーラム上に複数のチュートリアルがあるので参考にしてください。(ただし0.20では画面などが異なる場合があるので注意が必要です)

参考リンク

part.cfgファイル編集

part.cfgファイルを記述し、MODとしての機能を定義します。同種のデフォルトパーツのpart.cfgを参照しながら必要な箇所を変更するのが手っ取り早いでしょう。

サンプルファイル

以下のページにサンプルのpart.cfgファイルを用意しましたのでご利用下さい。(燃料タンクのpart.cfgですが、他のパーツに共通する項目も多くあります)

参考リンク

MOD作成know-how集

以下のページに、いくつかのパーツについてUnityやparts.cfgでの設定方法を記載しましたので参考にして下さい。

デバッグ・テストプレイ

いざ完成したらKSPを起動して実際に作成したMODが正常に機能・表示されているか確認しましょう。Alt+F12で表示されるメニューを使用すると、KSPを起動し直すことなくMODをリロードできます。

デバッグのFAQ

  • 別のパーツのモデルが表示されている
  • いじっていないはずのパーツのモデルがおかしくなっている
    モデルのロードに失敗するとこれらの現象が起きるようです。KSP.exeと同じフォルダに作成されるKSP.logを参照して"Out of Index..."等と表示されていたらモデルが複雑すぎるのが原因です。ポリゴン数を減らしましょう。
  • パーツが全部消えて、宇宙船の名前が"HelloWorld"とか表示されてKSPがまともに操作できなくなった
    part.cfgの文法ミスなどで致命的なエラーとなっていることが考えられます。記述を見直してKSPを再起動して下さい。
  • 未完成でエラーの原因となるMODを一時的に無効にしておきたい
    該当するMODのフォルダをGameDataやParts以外のフォルダに移動するか、もしくはpart.cfgをリネームして下さい。

コメント