MODづくり①~コイカツ!フォルダを理解する その1~
ただすべてに共通して言えるのは、当たり前のことですがどのような変更をしたMODでも、最後にはコイカツ!内でその衣装を使えるようにする必要があるということです。
そこで今回は、まずは衣装についてコイカツ!のフォルダ内でどのように構成されていて、それぞれのファイルがどのような意味をもっているのか、そして衣装MODをどう構成すればいいのかについて説明します。
コイカツ!内のファイル構成
いきなり脳に負担がかかる表が出てきましたが、これがコイカツ!において衣装MODが必要とするファイルの要素すべてです。
コイカツの衣装は、基本的に①リストファイル/②本体ファイル/(必要であれば)③マスクファイル/④サムネファイルの4つの要素(をもつファイル)で成り立っています。
言い換えれば、これらすべてを用意してコイカツ!インストールフォルダのabdata内に追加すれば衣装が追加されますし、逆にどれかに間違いや不足があればコイカツ!内で使おうとしたときに不具合がでたり、そもそも使えなかったりします。
たとえば、実際にxneが作ったMODを例として見てみましょう。
はい、当たり前ですがこれら4つの要素にそれぞれ対応するunity3dファイルが入った構成になっています。
なおリストファイルに(or .csv)とありますが、これはsideloaderMODにするときにはcsvファイルに置き換えるということで、今は気にしないで構いません。
さて、では①リストファイル/②本体ファイル/(必要であれば)③マスクファイル/④サムネファイルの4つの要素(をもったファイル)が必要だということがわかったところで、次にそれらのファイルがどのような意味をもっているのかのお話に移ります。
まずは、①リストファイルからです。
なお、以降はunity3dファイルの中身についての説明になるため、実際に中身を見たり変更するためにはSB3Utilityが必要になります。
①リストファイル
①リストファイルとはおおまかに言うと、コイカツ!内で使える衣装の一覧(リスト)の元となり、また一覧と実際の②~④のファイルの中身を結びつける役割があるファイルです。言葉で説明するとわかりにくいですが、百聞は一見に如かず、characustomフォルダ内の「00.unity3d」をのぞいてみるとよくわかります(既存のコイカツ!の衣装リストはcharacustomフォルダ内の「00.unity3d」に入っています)。
ここでは、実際にxneが作ったMODを例にリストファイル内の各項目について説明していきます。
試しに、xne_minichina.unity3dをSB3Utilityで読みこんでみましょう。
すると上のようにデータが開かれてるので、続いて赤枠で囲った「co_top_00」をダブルクリックして開いてみます。
するとEditors部に横長の表がずらっと出てくるのですが、今回は説明のためにひとつの行(ひとつの衣装)だけ編集して抜粋しました。
この「unity3dファイル内に入ったTextAsset内の、ID~ThumbTexまでの設定の表」が、ざっくり言うとリストファイルの本体だと言えます。
なお若干余談になりますが、リストファイル内で使うTextAssetの名前について、トップスならco_top_(数字)、ボトムスならco_bot_(数字)など、どの部位の衣装かで合わせる必要があるようです[未検証]。
また一方で、TextAssetの名前がコイカツ!が受け入れられるものならば、違うファイルに同じ名前のTextAssetがあっても問題は起きないという特性があるようなので(実際「00.unity3d」にも「xne_minichina.unity3d」にも同じ「co_top_00」がありますが問題は起こりません)、MODをつくるときには基本的に「00.unity3d」などの既存のTextAssetを改変して使うことをお勧めします。
さて、ではそれぞれの項目ごとの意味ですが、これらについてはxneも正直知らないことが多いです。
ですがとりあえず、わかるかぎり各項目について簡単に説明していきますね。
ID
各衣装に割り当てる固有のIDです。
トップス内、ボトムス内など、カテゴリ内で重複した場合には不具合が起こります。カテゴリを超えての重複はOKです。5桁まで使用可能です。
sideloaderMODの場合、重複は自動的に解決されるため、気にする必要はありません。
Kind
たぶん衣装の並び順の優先度だと思うんですが未検証です。わかる方いたら教えてください。
Prossess
たぶんnew!マークをだすかどうかのフラグです。ださないのであれば1、だすのであれば2とするようです。
Name
衣装名です。好きにつけましょう。
MainManifest
意味はわかっていませんが、abdata以外入れたことがありません。とりあえずabdata。
MainAB/MainData
MainABが衣装の本体のデータ(Animator)が入っているフォルダ(=②本体ファイル)のabdataより下のパス、MainDataがそのファイル内のデータ名を入れます。
NormalData
使ったことがないためわかりませんが、基本0のようです。
StateType
これも不明……トップスでは男性用、ボトムスではズボン系が1になってます。わかる方いたら教えてください。
Coordinate
トップスだと2にするとボトムスが非表示になります(ワンピースなど、一体型の衣装のときに2を入れます)。0だと通常のボトムスが表示される衣装になります。
NotBra
トップスだと1にするとブラが非表示になります。0だとブラが表示される衣装になります。
Sex
衣装を着れる性別の指定です。1で男女とも使用可能、2で男性のみ使用可能、3で女性のみ使用可能となるようです。
OverBodyMaskAB/OverBodyMask
コイカツ!では衣装を着たときに衣装からの体の突き抜けをなくすために、体に対してマスクをかけて非表示にする処理をしています。
そのためのマスク画像データが入っているフォルダ(=③マスクファイル)のabdataより下のパス、OverBodyMaskがそのファイル内のデータ(Texture2D)名を入れます。
水着など、マスクがいらない場合は両方0です。
OverBraMaskAB/OverBraMask
上と同じで、衣装を着たときに衣装から突き抜けるブラを非表示にするためのマスク画像のパスとデータ名を入れます。
マスクがいらない場合は両方0です。
MainTexAB/MainTex
その名のとおりメインのテクスチャ画像(Texture2D)を入れたフォルダのabdataより下のパスとファイル内のデータ名を入れます。
ただし、MainTexABに0を入れた場合はMainABのパスが参照されるようですので、②本体ファイルにメインのテクスチャ画像を入れる場合はMainTexABを0とします。
ColorMaskAB/ColorMaskTex
衣装の色変え用のテクスチャ画像(Texture2D)を入れたフォルダのabdataより下のパスとファイル内のデータ名を入れます。
ただし、ColorMaskABに0を入れた場合はMainTexABと同じです。
MainTex02AB/MainTex02/ColorMask02AB/ColorMask02Tex
使ったことがないのでたぶんですが、2つめのUVマップがある場合に、それに割り当てるメインと色変え用のテクスチャ画像のパスとデータ名を入れます。
特に使わない場合は両方0です。
KokanHide
その名のとおり、その衣装を着けているときに男性あるいはスタジオでの股間を非表示にするかどうかです。1で非表示、0で(ある場合には)表示されます。
ThumbAB/ThumbTex
ThumbABが衣装のサムネイル画像(Texture2D)が入っているフォルダ(=④サムネファイル)のabdataより下のパス、ThumbTexがそのファイル内のデータ名を入れます。
はい、あらためて見るとxneもだいぶわからないままMODを作ってるなというところなのですが、だいじなのはそれでもなんとかなるということです。
基本的にわからない項目があるときはゲーム内の衣装がその項目にどのような値を入れてるかを見てみて、そこから項目の内容を想像して、それからその項目を変えてみて想像どおりの変化があるかみてみる……という作業を通して意味を探ることになります。
また、意味はわからなくてもほかの衣装にあわせておいて、不具合が起きないかぎりは放置するというのもひとつの選択です。
さて、①リストファイルについての説明はここまでとしますが、ここでいったん小休止して、②~④のファイルの説明についてはその2に続きます。
こんばんは。
返信削除あなたのブログを参考にしてmodを作成しようと考えている者です。
ブログと同じように、コイカツサンシャインのunity3dファイルをSB3Utilityで読み込ませようとすると、
呼び出しのターゲットが例外をスローしました。
Unsupported Unity3d file
という表示となります。
コイカツの方で読み込ませると、ちゃんと読み込んでくれるのですが…
こうなる原因が分かりますか?私自身、unity3dファイルやSB3Utilityをあまり理解していません。
もしわかるのでしたら、解決策を提示していただけないでしょうか?
因みにサンシャインの方で読み込ませたいのは、必要なデータがサンシャインしかないからです
自己解決しました
削除StateTypeについてですが、どうやら衣服の状態変化に関係するようです。0だと、通常と半脱ぎ、脱ぎ状態に、1だと通常と脱ぎ状態のみといった感じらしいです。例えばパンストAには半脱ぎ状態はデフォルトでは存在しませんが、StateTypeを1から0に書き換えると半脱ぎ状態も追加されます。ただし、半脱ぎ状態用のメッシュが用意されていない場合は変化しないようです
返信削除初めまして、ブログを参考にMODを製作しようと考えているのですが、00.unity3をSB3unityGUIで読み込んだところ、上記の質問にもあったように「呼び出しのターゲットが例外をスローしました。
返信削除配列の次元が、サポートされている範囲を超えました。」
と表示されます。この原因がわかればご教授いただけないでしょうか。