既存データの書き換えや新要素の追加などによってゲームをより深く楽しむ“Mod(Modification)”。利用するのはもちろん楽しいですが、自分で制作するのも楽しいものです。そこで本記事では、2016年7月に正式リリースとなった『Starbound』のMod制作に挑戦。実践を通してその方法を皆様にご紹介したいと思います。

- 目次 -
制作に向けての準備
実践1: 数値の変更
実践2: 画像の変更
実践3: アイテムの追加
実践4: Steam Workshopへの投稿
Mod制作まとめ



必要なもの
・製品版『Starbound』…今回はSteam版を使用。
・テキストエディタ…色々なデータを弄るのに必要。
・画像編集ソフト…画像を扱う際に使用。要PNG対応。
・好奇心と諦めない心…とっても重要。
上記が揃いましたら、まずはゲームで使われているデータを展開し、中身を見れるようにします。これによりゲームを構成するデータの配置や仕組みを確認できます。


STEP1. 『Starbound』のインストールフォルダを開く

■特に変更していなければ“C:\Program Files (x86)\Steam\steamapps\common\Starbound\”にインストールされています。

■Steamライブラリで『Starbound』のプロパティを開き、“ローカルファイル”タブから“ローカルファイルの閲覧”をクリックすることでも開けます。


※筆者はSteamをDドライブにインストールしています。
以降、インストール先は各自の環境に合わせて読み換えて下さい

STEP2. データファイルを展開する

■コマンドプロンプトを開き(“Starbound\”フォルダのウィンドウ内余白でShift+右クリック→「コマンドウィンドウをここで開く」)、以下のコマンドを実行します。

"win32\asset_unpacker.exe" "assets\packed.pak" "UnpackedAssets"

■“Starbound\UnpackedAssets\”フォルダにゲームの各種データが展開され、閲覧が可能になります。


■これで準備は一通り完了です。それでは早速Modの制作にとりかかりましょう。最初は既存のアイテムに変更を加えてみます。

■もしプレイ中のセーブデータがある場合は念のためバックアップをとっておきましょう。セーブデータは“Starbound\storage\player\”フォルダに入っています。



「実践1: 数値の変更」の概要

■本項目ではゲームに登場する盾の1つ“Basic Shield”の耐久値を変更するModを作成。


赤枠の部分の数値を変更したい
■ModはMod本体とModの名前や詳細を情報を記載したファイルで構成されており、“Starbound\mods\”フォルダに配置します。本項目で制作するMod“spashield01”は、次のようなファイル構成となっています。

Starbound\mods\spashield01\
 │
 ├─ items\
 │   └ active\
 │     └ shields\
 │       └ startershield.activeitem.patch … Modデータ本体
 │
 ├─ _metadata … ゲーム内のModリストで表示される情報を記載
 │
 └─ spashield01.modinfo … Modの基本情報を記載


STEP1. 既存データの確認

■まずは最初の「制作に向けての準備」で展開した既存ゲームデータの中から、“Basic Shield”の情報を記載したファイルを探します(“Starbound\UnpackedAssets\items\active\shields\startershield.activeitem”)。

■ファイルが見つかったらテキストエディタで開きます。ずらずらと様々な情報が記載されているので、軽く目を通しつつ今回書き換えたい耐久値の部分を確認しましょう("baseShieldHealth"が盾の耐久値)。



STEP2. Modデータ本体の作成

■“Starbound\mods\”フォルダにModを入れるためのフォルダを作成します(フォルダ名はModと同じく“spashield01”)。

■作成したフォルダの中に、変更対象と同じディレクトリ構造を作り、既存ファイル名に“.patch”をくっつけた空のテキストファイルを作成します(前述の概要でご紹介したファイル構成を参照)。


■“startershield.activeitem.patch”に以下の内容を書き込み保存します。

startershield.activeitem.patch
[
{
"value": "100",
"op": "replace",
"path": "\/baseShieldHealth"
}
]
雰囲気で何となく分かるかと思いますが、“path”は書き換えたい項目、“vaule”はその値です。“op”はデータのタイプを表しており、今回は既存データの書き換えなので“replace”となっています。


STEP3. “.modinfo”と“_metadata”の作成

■“.modinfo”にはゲームがModを管理するための基本情報を記載します。今回は“spashield01.modinfo”として以下の様になっています。

spashield01.modinfo
{
"name" : "spashield01",
"path" : ".",
"dependencies" : [],
"metadata" : {
"author" : "Supa Kun",
"version" : "0.0",
"description" : "Basic shield health change"
}
}
■“name”はModの名前(スペースや特殊文字使用不可)、“author”は作者名、“version”はModのバージョン、“description”はModの説明文です。“path”や“dependencies”については、簡単なModであれば変更する必要はありません。

■“_metadata”にはゲームのModリストに表示するための情報を記載します。今回は以下の様になっています。

_metadata
{
"name" : "spashield01",
"friendlyName" : "Spa kun shield 01",
"version" : "0.0",
"link" : "",
"description" : "Shield mod sample 01",
"author" : "Supa Kun"
}
■“name”はModの名前(.modinfoの“name”と同じ)、“friendlyName”は一覧に表示される名前、“version”はModのバージョン、“link”はMod配布サイトや自分のWebサイトへのリンク、“description”はModの説明文、“author”は作者名です。


Modリスト

STEP3. 動作確認

■各種ファイルの作成が終わったら、ゲームを起動して動作を確認してみましょう。


耐久値を20から100に変更できました
■もし何も変化がない場合やゲームが強制終了してしまう場合は、ファイル名や各種テキストの綴り等が間違っていないか要確認です。



「実践2: 画像の変更」の概要

■本項目ではゲームに登場する盾の1つ“Basic Shield”のグラフィックを変更するModを制作します。


“Basic Shield”
■グラフィックの変更は2つの方法があるので、好きな方をお選び下さい(STEP2-A or STEP2-B)。


STEP1. 画像の準備

■画像のファイル形式はPNG。盾の場合は1つのファイルの中に正面・右側面・背面・左側面の絵が必要です。


既存のグラフィック

新規のグラフィック

STEP2-A. グラフィックの変更: 方法1

■方法1では既存の画像ファイルを差し替える形で変更します。

■前の項目で作成した画像ファイルを、既存の画像ファイルと同じファイル名にして同じディレクトリ構造で配置します(今回のModの名前は“spashield02”にしています)。

Starbound\mods\spashield02\
 │
 └─ items\
     └ active\
       └ shields\
         └ images\
           └ smallwood\
             └ 1.png … 盾の画像

STEP2-B. グラフィックの変更: 方法2

■方法2では新しい画像を読み込むように設定します。

■実践その1で盾の耐久値を書き換えたように“startershield.activeitem.patch”を作成し、以下のように記述します。

startershield.activeitem.patch
[
{
"value": "images/spakun/1.png",
"op": "replace",
"path": "\/animationParts/shield"
},
{
"value": "images/spakun/1.png:nearidle",
"op": "replace",
"path": "\/inventoryIcon"
}
]
■今回新たに用意した画像は“Starbound\mods\spashield02\items\active\shields\images\spakun\”に配置しています。

Starbound\mods\spashield02\
 │
 └─ items\
     └ active\
       └ shields\
         └ images\
           └ spakun\
             └ 1.png … 盾の画像

STEP3. “.modinfo”と“_metadata”の作成

■例によって“.modinfo”と“_metadata”を作成します。

spashield02.modinfo
{
"name" : "spashield02",
"path" : ".",
"dependencies" : [],
"metadata" : {
"author" : "Supa Kun",
"version" : "0.0",
"description" : "Basic shield graphic change"
}
}
_metadata
{
"name" : "spashield02",
"friendlyName" : "Spa kun shield 02",
"version" : "0.0",
"link" : "",
"description" : "Shield mod sample 02",
"author" : "Supa Kun"
}

STEP4. 動作確認

■各種ファイルの作成が終わったら、ゲームを起動して動作を確認。


バッチリ変更されました


※<B>次のページ: アイテム追加やSteam Workshopへの投稿を解説!</B>


「実践3: アイテムの追加」の概要

■本項目では新たなアイテムの追加に挑戦。「じゃんげま」に登場する、えいむちゃんのベレー帽(髪の毛付き)を制作します。


■今回のModは“aimuchanberet”という名前で、構成は以下の様になっています。

Starbound\mods\aimuchanberet\
 │
 ├─ items\
 │   └ armors\
 │     └ decorative\
 │       └ hats\
 │         └ aimuchanberet\
 │           ├ aimuchanberet.head … アイテム定義ファイル
 │           │
 │           ├ Head.png … 画像1
 │           │
 │           ├ icons.png … 画像2(インベントリ用アイコン)
 │           │
 │           └ mask.png … 画像3(マスク用)
 │
 ├─ recipes\
 │   └ spinningwheel\
 │     └ clothes\
 │       └ aimuchanberet.recipe … クラフト用レシピ
 │
 ├─ _metadata … ゲーム内のModリストで表示される情報を記載
 │
 ├─ aimuchanberet.modinfo … Modの基本情報を記載
 │
 └─ player.config.patch … 新しいレシピを認識させるための情報を記載


STEP1. 準備

■いきなりゼロからアイテムを作るのは難しいので、既存アイテムのデータを流用します。今回は作りたいアイテムと似ている既存アイテム“Sassy Beret”のデータを拝借。

■「制作に向けての準備」で展開したゲームデータの“Starbound\UnpackedAssets\armors\hats\beret\”内の4つのファイル(“beret.head”、“Head.png”、“icons.png”、“mask.png”)を、“Starbound\mods\aimuchanberet\items\armors\decorative\hats\aimuchanberet\”にコピーします。


“Sassy Beret”のデータ
■コピーしたファイルの中の“beret.head”は“aimuchanberet.head”にファイル名を変更しておきます。


STEP2. グラフィックの変更

■画像編集ソフトで3つの画像をそれぞれオリジナルのグラフィックに描き換えます。


■“Head.png”は通常のゲーム中、“icons.png”はインベントリで表示されるグラフィックです。“mask.png”は装着したキャラクターの髪の毛の表示部分を指定します。


黒い部分だけキャラクターの元の髪の毛が表示されます(今回は元の髪の毛は見えていません)

STEP2. アイテム定義データの書き換え

■STEP1.の準備で“beret.head”から“aimuchanberet.head”に名前を変更したファイルの中身を一部書き換えます(太字が変更箇所)。

aimuchanberet.head
{
"itemName" : "aimuchanberet",
"price" : 5000,
"inventoryIcon" : "icons.png:head",
"maxStack" : 1,
"rarity" : "Legendary",
"category" : "headwear",
"description" : "Aimu chan beret",
"shortdescription" : "Aimu beret",
"tooltipKind" : "armor",

"maleFrames" : "head.png",
"femaleFrames" : "head.png",
"mask" : "mask.png",

"colorOptions" : [
// BLUE
{ "ffca8a" : "96cbe7", "e0975c" : "5588d4", "a85636" : "344495", "6f2919" : "1a1c51" },
// BLACK
{ "ffca8a" : "838383", "e0975c" : "555555", "a85636" : "383838", "6f2919" : "151515" },
// GREY
{ "ffca8a" : "b5b5b5", "e0975c" : "808080", "a85636" : "555555", "6f2919" : "303030" },
// WHITE
{ "ffca8a" : "e6e6e6", "e0975c" : "b6b6b6", "a85636" : "7b7b7b", "6f2919" : "373737" },
// RED
{ "ffca8a" : "f4988c", "e0975c" : "d93a3a", "a85636" : "932625", "6f2919" : "601119" },
// ORANGE
{ "ffca8a" : "ffd495", "e0975c" : "ea9931", "a85636" : "af4e00", "6f2919" : "6e2900" },
// YELLOW
{ "ffca8a" : "ffffa7", "e0975c" : "e2c344", "a85636" : "a46e06", "6f2919" : "642f00" },
// GREEN
{ "ffca8a" : "b2e89d", "e0975c" : "51bd3b", "a85636" : "247824", "6f2919" : "144216" },
// BLUE
{ "ffca8a" : "96cbe7", "e0975c" : "5588d4", "a85636" : "344495", "6f2919" : "1a1c51" },
// PURPLE
{ "ffca8a" : "d29ce7", "e0975c" : "a451c4", "a85636" : "6a2284", "6f2919" : "320c40" },
// PINK
{ "ffca8a" : "eab3db", "e0975c" : "d35eae", "a85636" : "97276d", "6f2919" : "59163f" },
// BROWN
{ "ffca8a" : "ccae7c", "e0975c" : "a47844", "a85636" : "754c23", "6f2919" : "472b13" }
]
}
■“itemName”はゲームがデータを管理するための名前、“description”はアイテムの説明文、“shortdescription”はアイテムの表示名です。


STEP3. レシピデータの作成

■ゲーム内の“Spinning Wheel”(クラフティングステーションの1つ)でアイテムがクラフトできるようにレシピデータを作成します。


“Spinning Wheel”
■“Starbound\mods\aimuchanberet\recipes\spinningwheel\clothes\”フォルダに“aimuchanberet.recipe”を作成し、以下の内容を書き込みます。

aimuchanberet.recipe
{
"input" : [
{ "item" : "fabric", "count" : 2 },
{ "item" : "cottonwool", "count" : 1 }
],
"duration" : 2,
"output" : { "item" : "aimuchanberet", "count" : 1 },
"groups" : [ "craftingwheel", "clothes" ]
}
■“input”内の“item”はクラフトに使用する素材と必要な数です。今回はWoven Fabric x 2、Cotton Wool x 1という設定にしました。

■“duration”はクラフトに要する時間(秒)、“output”は出力アイテムと数、“groups”はレシピの分類です。“groups”の他の分類は既存のレシピファイルを参考にすると良いでしょう。


STEP4. レシピデータの登録用ファイル作成

■ゲームがレシピデータを認識するためのファイルを作成します。

■“Starbound\mods\aimuchanberet\”フォルダに“player.config.patch”を作成し、以下の内容を書き込みます。

player.config.patch
[
{
"value": { "item" : "aimuchanberet" },
"op": "add",
"path": "\/defaultBlueprints/tier1/0"
}
]

STEP5. “.modinfo”と“_metadata”の作成

■“.modinfo”と“_metadata”を作成します。

spashield02.modinfo
{
"name" : "aimuchanberet",
"path" : ".",
"dependencies" : [],
"metadata" : {
"author" : "Supa Kun",
"version" : "0.0",
"description" : "Aimu chan beret and hair"
}
}
_metadata
{
"name" : "aimuchanberet",
"friendlyName" : "Aimu chan beret",
"version" : "0.0",
"link" : "",
"description" : "Aimu chan beret and hair",
"author" : "Supa Kun"
}


STEP6. 動作確認

■各ファイルが準備できたら動作確認。“Spinning Wheel”からクラフトしてみましょう。


Spinning Wheelでのクラフト

完成!



「実践4: Steam Workshopへの投稿」の概要

■Modが完成したら、せっかくなのでSteam Workshopに投稿しましょう。『Starbound』では専用ツール「Mod Uploader Tool」が用意されているので簡単に投稿できます。


STEP1. 「Mod Uploader Tool」でのアップロード

■Steamから『Starbound』を起動すると、プレイする以外の選択肢がいくつかあるので、その中から“Launch Mod Uploader Tool”を選択して“プレイ”ボタンを押します。


■起動したら“Select Mod Directory”ボタンを押して、アップロードしたいModのフォルダを選択します。例えば今回制作した、えいむちゃんのベレー帽をアップロードしたい場合は“Starbound\mods\aimuchanberet\”フォルダを選択。

■名前や説明文などは“_metadata”ファイルから自動で読み込まれます。このツールで編集することもできます。

■あとはプレビュー画像を設定し、一番下の“Uplaod to Steam”ボタンを押すとSteam Workshopにアップロードされます。



STEP2. Steam Workshopでの編集

■アップロードが完了すると“Mod ID”が割り振られます。「Mod Uploader Tool」で“Mod ID”のリンクをクリックするとSteam Workshopのページに飛ぶので、タイトルや説明文の調整、追加の画像や動画の登録など細かい設定を行います。


■アップロード後はデフォルトで公開設定が“非公開”となっているので、必要に応じて“公開”あるいは“フレンドのみ”に変更してください。



いかがでしたでしょうか? 筆者自身『Starbound』のModを制作するのは初挑戦なので説明が至らない点もあるかもしれませんが、これを機に皆様がMod制作に興味を持って頂けると幸いです。「ゲームを1から作ることはできないけど、何かを表現したい」という方は、是非Mod制作に挑戦してみて下さい。公式WikiにはModに関する情報が掲載されているので、そちらも要チェックです。