👌

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 の label description jobString を日本語で上書きします。

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