👌
RimWorldで初めてのゲームmodding
TUTAdvent Calendar 2025の18日目です
Mod初心者にRimWorldがおすすめな理由
mod=minecraftという認識をどうにかしたいから
RimWorldはModをはじめて作る人にとても向いているゲームです。
武器・防具・服・料理・作物などは、C#を書かなくてもXMLだけで追加できます。
また、Modの作りが「フォルダ+ファイル」で分かれていて、どこを編集すれば何が変わるかが分かりやすいです。
さらに、RimWorldはMod利用者が多く、参考になるサンプルや解説が見つかりやすいです。
小さなMod(例:サンタ帽を1つ追加)から始めて、少しずつレシピ・研究・イベントなどに広げていけます。
しかもゲーム内での確認が早く、作って→入れて→試すの流れがしやすいので、学習が進みやすいです。
もうすぐクリスマスだしサンタ帽modをつくってみよう
このModはC#なしで、
- XML(Defs) で「サンタ帽(頭装備)」と「制作レシピ」を追加する。
- PNG(Textures) で見た目(地面表示・着用表示)を用意する。
- 翻訳XML(DefInjected) で英語/日本語の表示名や説明文を入れる。
フォルダ構成と各ファイルの役割
1) About/
About/About.xml
About.xml
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
<name>Santa Hat</name>
<author>hani2</author>
<packageId>hani2.santahat</packageId>
<supportedVersions>
<li>1.4</li>
<li>1.5</li>
<li>1.6</li>
</supportedVersions>
<description>サンタ帽を追加するよ!</description>
</ModMetaData>
- RimWorldがMod一覧に表示するための メタ情報。
- ここに書かれている内容で、Mod名・作者・対応バージョン・説明が決まります。
- 作者をhani2としているので自分の名前に変えてね。
-
packageIdはModの識別子(他Modと被らないようにする)。
2) Defs/
Defs/ThingDefs_Apparel/SantaHat.xml
- **サンタ帽そのもの(装備アイテム)**を定義しています。
SantaHat.xml
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef ParentName="ApparelHeadBase">
<defName>Apparel_SantaHat</defName>
<label>santa hat</label>
<description>A festive red hat with a white brim. Surprisingly decent as light head protection.</description>
<graphicData>
<texPath>Things/Apparel/SantaHat/SantaHat</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<thingCategories>
<li>Apparel</li>
</thingCategories>
<statBases>
<MarketValue>60</MarketValue>
<Mass>0.25</Mass>
<Insulation_Cold>12</Insulation_Cold>
<ArmorRating_Sharp>0.12</ArmorRating_Sharp>
<ArmorRating_Blunt>0.08</ArmorRating_Blunt>
<ArmorRating_Heat>0.10</ArmorRating_Heat>
</statBases>
<apparel>
<wornGraphicPath>Things/Pawn/Humanlike/Apparel/SantaHat/SantaHat</wornGraphicPath>
<layers>
<li>Overhead</li>
</layers>
<bodyPartGroups>
<li>UpperHead</li>
</bodyPartGroups>
<tags>
<li>Headgear</li>
</tags>
</apparel>
<stuffCategories>
<li>Fabric</li>
<li>Leathery</li>
</stuffCategories>
<costStuffCount>40</costStuffCount>
<techLevel>Neolithic</techLevel>
<tradeability>Buyable</tradeability>
<thingSetMakerTags>
<li>RewardStandardMidFreq</li>
</thingSetMakerTags>
</ThingDef>
</Defs>
主にやっていること:
-
defName:内部ID(例:Apparel_SantaHat) -
label/description:表示名と説明(※翻訳で上書きされます) -
graphicData/texPath:地面に落ちているとき・インベントリ等の アイテム画像 を指定-
Textures/Things/Apparel/SantaHat/SantaHat.pngを参照します
-
-
apparel/wornGraphicPath:ポーンが装備したときの 着用画像 を指定-
Textures/Things/Pawn/Humanlike/Apparel/SantaHat/SantaHat.pngを参照します
-
-
apparel/bodyPartGroups:装備部位(ここでは頭:UpperHead) -
apparel/layers:描画レイヤー(頭の上に表示される設定) -
statBases:価値、重量、防寒、簡易的な装甲値など -
stuffCategories/costStuffCount:材料カテゴリ(布・革など)と必要数(40)
Defs/RecipeDefs/Recipe_SantaHat.xml
- 作業台で「サンタ帽を作れるようにする」レシピを定義しています。
Recipe_SantaHat.xml
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<RecipeDef>
<defName>Make_SantaHat</defName>
<label>sew santa hat</label>
<description>Sew a festive santa hat.</description>
<jobString>Sewing a santa hat.</jobString>
<workAmount>2200</workAmount>
<ingredients>
<li>
<filter>
<categories>
<li>Textiles</li>
</categories>
</filter>
<count>40</count>
</li>
</ingredients>
<products>
<Apparel_SantaHat>1</Apparel_SantaHat>
</products>
<recipeUsers>
<li>HandTailoringBench</li>
<li>ElectricTailoringBench</li>
</recipeUsers>
<skillRequirements>
<Crafting>2</Crafting>
</skillRequirements>
<workSkill>Crafting</workSkill>
<effectWorking>Tailor</effectWorking>
<soundWorking>Recipe_Tailor</soundWorking>
</RecipeDef>
</Defs>
主にやっていること:
-
defName:内部ID(例:Make_SantaHat) -
label/description/jobString:レシピ名、説明、作業中の文言(※翻訳で上書きされます) -
ingredients:必要材料(ここでは Textiles カテゴリを 40) -
products:完成品(Apparel_SantaHatを1個) -
recipeUsers:使用できる作業台- 手動/電動の仕立て作業台を指定
-
skillRequirements/workSkill:必要スキル(Crafting 2)と使用スキル -
workAmount:作業量(時間のようなもの)
3) Languages/
このModは DefInjected 方式で翻訳を入れています。
DefInjectedは「defName.キー」の形で、既存のDefの文字列を上書きする仕組みです。
Apparel_SantaHat.xml
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Make_SantaHat.label>サンタ帽を縫う</Make_SantaHat.label>
<Make_SantaHat.description>お祝い用のサンタ帽を縫う。</Make_SantaHat.description>
<Make_SantaHat.jobString>サンタ帽を縫っています。</Make_SantaHat.jobString>
</LanguageData>
-
Languages/Japanese/DefInjected/ThingDef/Apparel_SantaHat.xml-
Apparel_SantaHatのlabelとdescriptionを日本語で上書きします。
-
Make_SantaHat.xml
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Apparel_SantaHat.label>サンタ帽</Apparel_SantaHat.label>
<Apparel_SantaHat.description>白い縁取りの付いた赤い帽子。軽い頭部防護としてもそこそこ使える。</Apparel_SantaHat.description>
</LanguageData>
-
Languages/Japanese/DefInjected/RecipeDef/Make_SantaHat.xml-
Make_SantaHatのlabeldescriptionjobStringを日本語で上書きします。
-
4) Textures/
Textures/Things/Apparel/SantaHat/SantaHat.png
- 地面に落ちているときや、インベントリ/アイテム表示に使われる画像です。
-
SantaHat.xmlのgraphicData/texPathがここを参照します。
Textures/Things/Pawn/Humanlike/Apparel/SantaHat/SantaHat.png
- ポーンが装備したときに頭の上へ描画される画像です。
-
SantaHat.xmlのapparel/wornGraphicPathがここを参照します。
つまりどういうこと?
-
「性能(防寒・装甲・価値・材料数など)」を変えたい
→Defs/ThingDefs_Apparel/SantaHat.xmlのstatBases/costStuffCountを編集 -
「どの作業台で作れるか / 材料 / 必要スキル」を変えたい
→Defs/RecipeDefs/Recipe_SantaHat.xmlを編集 -
「表示名・説明文」を変えたい
→Languages/.../DefInjected/...側を編集(英語/日本語それぞれ) -
「見た目」を変えたい
→Textures/.../SantaHat.pngを差し替え
参考:texPath と wornGraphicPath の注意
-
texPath/wornGraphicPathには 拡張子 .png を書きません
(ゲーム側が自動で.pngを探します) - 指定パスは
Textures/からの相対パスです
例:Textures/Things/Apparel/SantaHat/SantaHat.png
→ XMLではThings/Apparel/SantaHat/SantaHatと書きます
Discussion