技術的なことを書こうとしてるただのゲームのブログ

RimworldのModとかなんか色々やってるよ。ニートだよ。

Rimworldで服Mod作成した記事

きっかけ

百合患者が一週回ってこんなツイートしていたので、Rimworld内で着られたら楽しいだろうなと思って作成してみた。
超身内ネタなのでたぶん配布はしないけども、服(服装、衣服、衣装)Modの作り方ってあまりちゃんとなかったような気がしたので文章に残してみることにした。

はじめに

製作 - RimWorld私的wiki
Modding - RimWorld Wiki*

ここら辺を読んでサックリわかった人はもう読まなくていいと思う。
というか、上記リンクで爆速理解出来る人はここから先の記述はツッコミどころ多数なので温かい目で見守ってください。お願いします。

わかんなくてもなんとなしに先に一読してもらえると、読んでて痒かった所に手が届くかもしれない。

基本的にCoreフォルダ内にあるファイルをコピペして改変するような簡単なMod作成です。

もぢんぐ開始

必要なモノ


一にも二にもバックアップは大切に。メモリが飛んだらおしまいだ。
Rimworldのフォルダ毎コピーして別のフォルダに移しておきましょう。最悪の事態になったときにコピペで元通りになるようにしておきます。

テキストエディタは何でもいいのですがWindowsなんかについてるノートパッドだとよくないかもなんで、さくらエディタでもダウンロードして使いましょう。
サクラエディタ Download

お絵かきソフトですが、このゲームのキャラクターはパーツごとに画像を何枚も重ねて表示しています。なので自分より下の画像が表示されるよう余計なところは透過処理してあるPNGファイルが必要です。
信心が必要ですが、フリーソフトならGIMPとかで良いと思います。
GIMP - GNU Image Manipulation Program
ちなみに自分はSAIでやりました。

Modの構造(というかゲームの構造)

ここから自分の理解を書くので何言ってるのかわけわかめって人は流してください。

このゲームは起動すると、Rimworld直下の”Rimworld○○”ってアプリケーションが立ち上がり必要なデータを様々なフォルダから読み出します。
そして動物の設定やバイオームの仕様、AIの種類等 様々なものを読み出しゲームの中で使えるようにセットアップします。
その読み出す定型文を理解して自分の作りたいものをゲーム内に読みだしてもらう様作るのが、Mod作成です(たぶん)

ですから、読み出すのに必要な要素この文は何を読み出しているのかを理解すれば作れるはずです(今のところは)

Mod作成に必要な要素

Modとしてゲームに読み込んでもらうには以下のフォルダ構成とファイルが必要です。

例:LoveLoveTshiut MOD

RimWorld
        Mods
            Core
            LoveLove …①
                    About …②
                        About.xml …③
                         Preview.png …④
                    Defs …②
                        ThingDefs_Misc …⑤
                                      Apparel_Various.xml …⑥
                    Textures …⑦
                            Things …⑤
                                  Pawn …⑤
                                      Humanlike …⑤
                                               Apparel …⑤
                                                      LoveLoveTshirt …⑧
                                                                    LLT.png …⑨
                                                                    (以下、画像ファイルが沢山)

黒字はインストール時にあるモノ(一部割愛)
赤字が種類を問わず絶対必要なモノ
青字が作りたいModによって適宜変えるモノ



上から順に解説していきたいと思います。

① Modの名前

今はインストールフォルダのModフォルダから直に作ろうとしているので名称衝突はしないでしょうが、ユニークな名前の方がパッとみで判別つきやすいのでお勧めです。
ちなみにSteamのワークショップだとここのフォルダ名が各Modに割り当てられた番号になっています。

② 構成フォルダ

Aboutフォルダは読みだしたとき、Modの切り替え画面で表示される情報を入れるフォルダになっています。
DefsフォルダはこのModがどういうモノでどういう動きをするかを指示するファイルが入るフォルダになります。

この二つはModの根幹なので初めに作ってしまいましょう。

③ About.xml

上記の通りゲーム内のMod切り替え画面でこのModがどのバージョンに対応しているのか、何をするのか等の情報を記入するところです。

中身はこの通り
(加筆解説あり)

<?xml version="1.0" encoding="utf-8"?>  ←おまじないの種類
<ModMetaData>  ←この情報読み出してよーっておまじない
  <name>ラブラブTシャツ</name>  ←Modの名前
  <author>めびうす</author>  ←Modの作成者
  <url>https://twitter.com/catina013</url>  ←リンク先(普通はワークショップのURLとかGithubのが入ってるらしい)
  <targetVersion>0.17.1557</targetVersion>  ←適応されるバージョン(更新されてないModでもここだけ更新したら動くことがあるらしい)(自己責任で!!!)
  <description>
  着たら猛者になれるラブラブTシャツを追加するModです。
  </description>  ←中身の具体的な内容を書く所。たぶんがんばったらhtmlで楽しい事出来る筈
</ModMetaData>  ←ここまで読み出して!っておまじない
④ Preview.png

Modの切り替え画面で表示される画像。637*358の大きさのPNGを用意しましょう。

⑤ 任意の階層

良くネタである「何故動くかわからないけどとりあえず入ってるコード」的な所。

恐らく無くても良いのだけど、このModはCore内に入っているデフォルトのTシャツを元に作成してるためそこに似せたフォルダ階層にして動きますよーにって祈りを籠めている様(実際これで動いてるし良いよね)
たぶん短い方が後述するPassを通すときに楽なんだろうけどまぁ動いてるので正義。

⑥ Apparel_Various.xml

Mod作成をしたとき一番詰まったというか難しかったところ。
ここでどのフォルダのどのファイルを参照にしてコピペするかは、アメリカ語力と忍耐力と少しのカンが問われます。

このModはTシャツModを改変したので

\RimWorld\Mods\Core\Defs\

内の

Apparel_Various.xml

を参照した。
作りたいModの任意のデータがどこにあるかは頑張って探してください。

抜き出して書き上げた
中身はこの通り

<?xml version="1.0" encoding="utf-8" ?>
<ThingDefs>

  <ThingDef ParentName="ApparelMakeableBase">
    <defName>LoveLoveTshirt</defName>
    <label>ラブラブTシャツ</label>
    <description>ラブラブTシャツです。</description>
    <graphicData>
      <texPath>Things/Pawn/Humanlike/Apparel/LoveLoveTshirt/LLT</texPath>
      <graphicClass>Graphic_Single</graphicClass>
    </graphicData>
    <costStuffCount>50</costStuffCount>
    <stuffCategories>
      <li>Fabric</li>
      <li>Leathery</li>
    </stuffCategories>
    <thingCategories>
      <li>Apparel</li>
    </thingCategories>
    <statBases>
			<MaxHitPoints>100</MaxHitPoints>
			<WorkToMake>5000</WorkToMake>
      <Mass>0.25</Mass>
      <ArmorRating_Blunt>0.03</ArmorRating_Blunt>
      <ArmorRating_Sharp>0.03</ArmorRating_Sharp>
      <Insulation_Cold>-3</Insulation_Cold>
    </statBases>
    <apparel>
      <bodyPartGroups>
        <li>Torso</li>
        <li>Shoulders</li>
      </bodyPartGroups>
      <worngraphicPath>Things/Pawn/Humanlike/Apparel/LoveLoveTshirt/LLT</worngraphicPath>
      <layers>
        <li>OnSkin</li>
      </layers>
      <tags>
        <li>Outlander</li>
        <li>Spacer</li>
      </tags>
      <defaultOutfitTags>
        <li>Worker</li>
        <li>Soldier</li>
      </defaultOutfitTags>
    </apparel>
    <colorGenerator Class="ColorGenerator_StandardApparel" />
  </ThingDef>

</ThingDefs>

正直に言おう


なんで動いてるかわからん


わからなすぎて(核爆)とかつけそうになった。
そもそもPath通す位置がなぜそれでいいかわからん。

とりあえずわかる位置から解説したのを再掲

<?xml version="1.0" encoding="utf-8" ?> 
<ThingDefs> ←おまじないここから唱えるぞって宣言

  <ThingDef ParentName="ApparelMakeableBase"> 
    <defName>LoveLoveTshirt</defName> ←ゲームの内部で呼ばれる名前
    <label>ラブラブTシャツ</label> ←プレイヤーに見せる名前
    <description>ラブラブTシャツです。</description> ←解説文
    <graphicData>
      <texPath>Things/Pawn/Humanlike/Apparel/LoveLoveTshirt/LLT</texPath> …A
      <graphicClass>Graphic_Single</graphicClass> 
    </graphicData>
    <costStuffCount>50</costStuffCount> ←ここから下はこのアイテムの設定
    <stuffCategories>
      <li>Fabric</li>
      <li>Leathery</li>
    </stuffCategories>
    <thingCategories>
      <li>Apparel</li>
    </thingCategories>
    <statBases>
			<MaxHitPoints>100</MaxHitPoints>
			<WorkToMake>5000</WorkToMake>
      <Mass>0.25</Mass>
      <ArmorRating_Blunt>0.03</ArmorRating_Blunt>
      <ArmorRating_Sharp>0.03</ArmorRating_Sharp>
      <Insulation_Cold>-3</Insulation_Cold>
    </statBases>
    <apparel>
      <bodyPartGroups>
        <li>Torso</li>
        <li>Shoulders</li>
      </bodyPartGroups>
      <worngraphicPath>Things/Pawn/Humanlike/Apparel/LoveLoveTshirt/LLT</worngraphicPath> …B
      <layers>
        <li>OnSkin</li>
      </layers>
      <tags>
        <li>Outlander</li>
        <li>Spacer</li>
      </tags>
      <defaultOutfitTags>
        <li>Worker</li>
        <li>Soldier</li>
      </defaultOutfitTags>
    </apparel>
    <colorGenerator Class="ColorGenerator_StandardApparel" />
  </ThingDef>

</ThingDefs> ここまでのおまじないでたのむって宣言(これ重要)


たぶんここらへんはアメリカ語Wiki見たほうがもっと細かい設定いじれると思うけどそんな体力ないので割愛。

ABの所には⑨のパスを拡張子抜きで通せばよいはず。


問題は、微妙に階層足りてないけど参照出来てるのが謎。
たぶん足りて無いようで足りてるから動いてイラストついてるんだろうな。

びしっと変えたいけど触らぬコードに祟りなしって言いますし。

⑦ 任意に必要なフォルダ

今回のModは画像だけで良かったのでTexturesフォルダだけで良かったですが、音声とかその他なんかある場合は分けて作ると美しく見えます。

⑧ Texturesフォルダ名

これも名称衝突しないようにユニークなものつけましょう。その方が安全。

⑨ LLT.png

服装画像を作る場合、一番の親になるファイルがこの地面に置かれた状態のテクスチャになります。
この画像の他に、5つの体形と前・後ろ・横の3種類の各画像を用意しましょう。

完成

動いたらこんな感じ
twitter.com


終わりに

長文(長くない)書いたので最後疲れたのがまるわかりですね。
この文章みて書いて、もしクラッシュしたとかセーブデータ消えたとか言われても責任は取れないのでそこの所何卒何卒

<