ハニセレ2活動日誌 第3日目『Mod作成方法 その1』

ハニセレ2活動日誌 第3日目『Mod作成方法 その1』

前書きと言い訳と注意事項と御礼

ハニーセレクト2にはまりだして、Mod自作を志したはいいけれど、情報が断片的で作成方法がよくわからんちんだったのですが、色々ググって試行錯誤しているうちに自作できたので、自分の中での整理も兼ねて記載します。

極めて初歩的なModの製作なので、新しい服とかを追加したい人には直球の内容にはなっていないと思いますが、私と同様に初心者には役に立つと思います。

初Mod作成成功の勢いで書いているので、『検証足らず』『余計な操作』『そもそも間違い』が含まれている可能性がありますので、あらかじめご了承ください。

お気づきのことがあればやさしくご指摘いただけると嬉しいです。

なお、Mod作成に関してはこちらの『Kazuo3D』様のツイートを足掛かりにさせていただきました。
大変参考になりました。厚く厚く御礼申し上げます。

Mod作成方法

超初級の今回作成するModは、衣装の『柄』を追加するModになります。
3D作成との必要もなく、Modを作成する基本的な流れを習得できると思います。

服とかの追加に必要な複雑な工程は今回の作成方法には含まれていません。

必要なもの

ハニーセレクト2
有料。
まあ当然ですね。これがないと始まりません。
※modが使用できる環境が整っていることが前提です。

SB3Utility
無料。
以下、SB3Uと記載します。Modの本体である『unity3d』を弄繰り回すのに必須なツール。
こんな名前(SB3UGS_v21.0.3.7z)の奴があるはずなのでダウンロードします。
※例に挙げたバージョンにこだわらず基本的に最新のものを使用すれば問題ないと思います。
インストールの必要のないアプリです。ダウンロードしたら、解凍した中身をPCのどこかに展開しておきましょう。
※『SB3UtilityGUI.exe』のショートカットをデスクトップに作っておくと楽です(意味がわからなければ飛ばして良いです)。

ダウンロード先
https://github.com/enimaroah/SB3Utility/releases

PhotoShop
有料。
『柄』の作成時に使用します。服などアイテム作成の時にも使うのかも?
ダウンロードやインストール方法などは、ググれば山ほど情報があるので割愛。
有料のツールなので、お財布とご相談の上ご利用ください。

GIMP
無料。
PhotoShop同様に画像の加工ができるツール。
私は使用したことがないので、まったくわかりません。
『GIMP 使用法方』とかでググればきっと解決すると思います。
有料のPhotoShopは避けたいという人は、こういったツールを使用するのがよろしいかと思います。

CSVエディタ
無料。
Modを配布可能な形式にする際にCSVファイルをいじることになるのであった方が便利なツール。
「CSVをExcelで弄るなんてとんでもない!」という人は使用推奨。
私は下記のエディタを使っています。
これもインストール不要なので、ダウンロードしたらどっかに展開しておきましょう。

ダウンロード先
https://www.asukaze.net/soft/cassava/

Excel
有料。
CSVファイル作成時に必要と思われます。もしかしたらサクラエディタとかで代用もできるかも。

Blender
無料。
今回は使いません。3D作成時に使用。いずれ必須になるのでインストールしておいて損はないでしょう。
これも使い方はググれば(以下略)。

7zip
作成したmodの圧縮(無圧縮だけど)に使います。
これも使い方は(以下略)。

ダウンロード先
https://sevenzip.osdn.jp/download.html

今回の講座では上記があればOKです(Blenderはなくても良い)。

手順1.作成物の決定と類似ファイルの探索

HS2ではバニラのデータをコピーしてModを作成します。
そのためまずは自分が作るModをイメージします(今回は上でも書いたように『柄』を作成します)。

イメージが確定したら、自分が作りたいものと同一あるいは類似のデータが入っているファイルを探します。
HS2の『abdata』フォルダ配下にある『chara』フォルダに遷移しましょう。
例)D:\illusion\HoneySelect2\abdata\chara

『00』『02』など沢山のフォルダがあるのでこの中から自分が作成予定のModに近いファイルを探します(面倒くさいです)。

フォルダの中には『ao_hand_34.unity3d』のようなファイルが沢山あるので、ファイル名からなんとなくあたりをつけて探しましょう。
『hand』なら『手』関係かな?『hair』なら『髪』かな?といった具合。
あたりがつけられないなら全部見るしかないね。仕方ないね。
※もっと楽な方法があれば(きっとある)情報ください。

参照するファイルを決めたら『SB3UtilityGUI.exe』からSB3Uを起動し、赤枠の部分にファイルをドラッグアンドドロップします。

今回は『st_pattern_34.unity3d』が求めるファイルでした(同様のファイルがあればどれでもOKだと思います)。
ファイルを入れたら左側のボックスにリストが出るのでどれか(Imgタブの「pattern49」など)をダブルクリックすると、下画像のようになります。

対象ファイルが判明したので、一旦SB3Uはそのままにします。

手順2.unity3dの加工

次に自環境でのみ動くModを作ります。
(自環境で動かないものは配布先でも当然動かないので、配布用は自環境で動くものが作れてから考えましょう)

HS2の『abdata』フォルダ配下にある『chara』フォルダに、自作Mod用のフォルダを作成します
フォルダを作成したら、『chara』フォルダ内にある『etc.unity3d』をコピペし、ファイル名称を変更します(ファイルのリネームは下記の※※注意事項※※を参照してください)。
※今回は『log_mod』という名前のフォルダを作り、『etc.unity3d』を『st_pattern_logo_mod.unity3d』にリネームしました。

こんな感じになっていれば合っています。
ファルダ構造

※※注意事項※※
『unity3d』はファイル名称についている『ao_hand_34.unity3d』の『ao_hand_』などという記載で、対応するカテゴリを判別しているそうなので名称を変更する際には、この部分を残しておきましょう。
『ao_hand_34.unity3d』をリネームするのなら『ao_hand_oresamamod.unity3d』といった具合ですね。
変更する部分は自分で判別できる名前で、他のファイルと被ることがなければなんでもOKです。

フォルダの用意ができたら、用意したファイル(st_pattern_logo_mod.unity3d)をSB3Uで開きます。
用意したファイルをSB3Uで開く

p_dummyという文字通りのダミーが入っているだけで、今の状態では何の役にも立たないのでこの中に手順1で見つけた『st_pattern_34.unity3d』の中身をコピペします。
下画像のように①『Quick Access』の『st_pattern_34.unity3d』→②コピー対象『pattern49』→③『Assets』の順にクリックします。
※コピー対象の『pattern49』は今回のmodではその他のリストにあるpattern50~60でもどれでも良いです。
元になるファイルを選択する

④『Assets』内の『Mark/Unmark for Copying』をクリック
⑤ペースト先である『Quick Access』の『st_pattern_logo_mod.unity3d』をクリック
⑥『Assets』内の『Paste All Marked』をクリック
⑦ダイアログが表示されるの『Paste』をクリック
対象ファイルをコピペする

『st_pattern_logo_mod.unity3d』のImgタグの中に『pattern49』がコピペされるとこのようになります。
ペースト後の状態

上記までの操作が終わったら、間違って編集してしまうと危険ですし、もう使いませんので『st_pattern_34.unity3d』は閉じます。
元ファイルは閉じる

『st_pattern_logo_mod.unity3d』ですが、『File』>『CABinet(s)』の値を変更して保存します。
デフォルトで『CAB-』から始まる計37桁の文字が入っていますが、この値はファイル毎にユニークな値でなければならないので値を書き換えてしまいます。
『CAB-mylogomod00000000000000000000001』こんな感じです。
未検証ですが『CAB-』は必須で、残り33桁も適当で良いので必須と思われます。
Cabinet(s)を書き換える

Cabinet(s)の値を変更したら、『File』>『Save.unity3d』で変更を保存します。
保存する

保存が完了すると下画像のように、バックアップファイルが自動で生成されます。
保存を繰り返すごとに新しいファイルが出来上がっています。
必要以上に生成されたら適宜処分しましょう。
保存完了

『st_pattern_logo_mod.unity3d』の作業はここで一旦終了です。
お疲れさまでした!

手順3.リストファイルの作成

作成した『unity3d』ファイルを読み込ませるためのリストファイルを作成します。

HS2の『abdata』>『list』>『characustom』フォルダに遷移しましょう。
例)D:\illusion\HoneySelect2\abdata\list\characustom

このフォルダにも沢山のファイルがあります。
手順2と同様にデフォルトのファイルを利用しますが、迷う必要はありません。

mod作成時に利用したデフォルトデータ(今回であれば『st_pattern_34.unity3d』)のファイル名に記述されている数字と、このフォルダにファイルはリンクしているので該当するファイルを利用することになります。
ようするに今回であれば『34.unity3d』が自動で選ばれることになります。
リストファイルを選ぶ

使用するファイルを見つけたら、そのファイルをフォルダ内にコピペしましょう。
コピペできたら、ファイル名をリネームします。
今回は『logo_list.unity3d』にしました。
手順2とは違って以下の一般的なルール以外に命名規則はないようなので自由でOKです。
※リネーム時には半角英数字と記号のみ使用しましょう。
※基本的にファイル編集時は日本語などの2バイト文字は使用しないのが一般的です。
ファイルをリネームする

リネームが終わったら、SB3Uでファイルを開きましょう。
ファイルを開くとリストのに色々出てきますが、ここでは先と同様に『st_pattern_34.unity3d』と同じ名前のデータを選択します。
一覧表が表示されたら、『st_pattern_logo_mod.unity3d』にコピペしたID48の『Pattern49』に注目しましょう。
リストファイルを開く

『Pattern49』を発見したら、その他のデータは不要なのでザクザク消します。
『st_pattern_34[348]』タブのID49からID59は行を選んで(複数選択も可)、『Delete』を押せば消えます。
左側のリストは下画像のように消したいデータを選んで(こちらも複数選択可)、『Assets』>『Attention!』>『Remove』で消します。
※『st_pattern_34』と『list/characustom/34.unity3d』という奴が残るようにします。
※『list/characustom/34.unity3d』を残す理由はよくわかってないです。
データを削除するのは怖いかもしれませんが、いらないデータがあっても意味がないですし、modが動かない原因にもなるのでズバズバっと消してしまいましょう。
余計なファイルを消す

不要データを削除したら、一覧表を修正します。
ここの内容に間違いがあるといくら素敵なmodを作ってもゲームに反映されなくて地団駄踏むことになるので慎重にいきましょう。
(※注意※ググっても詳細を見つけられず、苦労したわりによくわかっていない部分が多いです)
①ID
他に被るものがなさそうな値にしましょう。具体的に何が良いのかは私もちょっとわかっていないのですが、画像のように大きな値などに設定すると大丈夫っぽいです。
②Kind/Possess
デフォルトのままで良いようです。よくわかりません。
③Name
ゲーム画面に表示された時に他のアイテムと区別がつくような名前にしておきましょう。『テスト』とか『自分の名前』とか見分けがつくやつですね。
④EN_US/ZH_CN/ZH_TW
デフォルトのままで良いようです。よくわかりません。
名称から察するに外国語の場合使うのかも??
⑤MainTexAB
重要。手順2で自作した『st_pattern_logo_mod.unity3d』がある場所(パス)を記述します。
『chara/~』から始まり、ファイル名までを記述しましょう。
例)chara/log_mod/st_pattern_logo_mod.unity3d
⑥MainTex
ここには⑤で指定したファイルで参照するデータ名になると思われます。
ここも重要だと思うのですがあんまりよくわかってないです(汗)。
使用する画像と同一名を入れておきましょう(pattern49)。
⑦ThumbAB
ゲーム画面で表示するサムネ画像の場所を記述します。
今回の場合はサムネ画像も『st_pattern_logo_mod.unity3d』に格納されているので、『⑤MainTexAB』と同様の記述になります。
⑧ThumbTex
サムネに使用するファイル名だと思います。
画面右に表示されるImage(下画像の⑨)と同一名称(pattern49)を入れておきましょう。
一覧表修正

修正が終わったら、手順2と同様に『CABinet(s)』の値を変更してから保存しましょう。
ここまでくれば作成したmodがゲームに反映されています(ミスってなければ)。
ゲームを起動して確認してみましょう。

ゲームで確認
スクショを摂る前に確認してしまったのでついていませんが、間違いなく作業を進めていれば『NEW』のついたアイコンが表示されます。
名称も『テスト』と表示されています。
実際に柄が反映されていることも確認しましょう。
表示されない、柄が反映されないなどがあればどこかで間違っているので手順を確認しましょう。

よくあるミス

・パスを間違っている。
・ファイル名を間違っている。
・CABinet(s)を修正し忘れている。
・IDの値が何かと被っている(別の値に変更してみる)。

手順4.オリジナル柄の挿入

今までの手順では、デフォルトのデータをベースに自環境でmodが動くところまでを確認しました。
これからは、オリジナルデータの使用→配布用データの作成へと作業を進めます。

まずは、PhotoShopなどで512×512のpngファイルを用意しましょう。
こんな感じ。この辺はご自身のお好きな内容でどうぞ。
データを用意する

自分でファイル用意するのが面倒くさいという人はここからファイル持って行ってください。

では、再びSB3Uで『st_pattern_logo_mod.unity3d』を開きます。
『Assets』>『Replace Files…』を押すとファイルの選択画面になるので、取り込みたいファイルを選びましょう。
用意したデータを取り込む

取り込めたら下画像のように、拡張子を除いた取り込んだファイルの名称がリストに追加され、右側にファイルの画像が表示されます。
Streamedの中身が空白ですが、データを入れる/表示させる方法は不明です。
取り込み後

『st_pattern_logo_mod.unity3d』の作業はここまでなので、保存してしまいましょう。
続いてリストファイル(logo_list.unity3d)で作業を行いますので、SB3Uで『logo_list.unity3d』を開きます。
リストの中身を手順3と同様の考え方で埋めます。
リストに追加する

保存してゲームを起動すれば新たに柄が追加されます。
巨乳追加

手順5.配布用ファイル(zipmod)の作成

いよいよ最後の工程です。
繰り返しになりますが、今までの工程では自環境でしか使用することができないので(そのままファイルを渡せばよそでも使えますが)modとして流通しているzipmodの形に作り替えます。

デスクトップなどに作業用のフォルダを作りましょう(作らなくてもできますが、煩雑になりがちです)。
フォルダを作ったらその中にmodの本体となるフォルダを作成/ファイルの追加を行います。

フォルダは『st_pattern_logo_mod.unity3d』と『logo_list.unity3d』が入っている現状と同じようにします。
今の段階では『characustom』の下は空でOKです。
こんなイメージです(伝わるかな?)。
abdata\chara\log_mod\st_pattern_logo_mod.unity3d
(abdata)\list\characustom\

『st_pattern_logo_mod.unity3d』はこの後特に操作はしません。
一方のリストファイル(logo_list.unity3d)はzipmodでは使用できないのでCSVファイルを作成する必要があります。再度SB3Uで開きましょう。

『Assets』>『Export』を選んで『TextAsset』ファイルを出力します。
出力するファイルは作業フォルダやデスクトップなど自分のわかりやすいところに出力しましょう。
エクスポートするんじゃ

出力されたファイルですが『TextAsset』という見慣れないファイルで、テキストエディタなどで開こうとすると文字化けして役に立ちません。
※ググってみると普通に開いている風な人もいるので環境依存かもしれません。

文字化けしてしまう人はExcelを利用します。
適当にExcelを開いて、『データ』>『テキストまたはCSVから』を選択します。
Excelで読み込む

該当のファイルが見当たらない場合は、『データの取り込み』ウィンドウの右下を『すべてのファイル』に変更しましょう。
すべてのファイルを選択

読み込むと文字化けしているはずなので『元のファイル』で『65001:Unicode(UTF-8)』を選んで、『読み込み』をクリックしましょう。
UTF-8を選ぶ

読み込みが終われば綺麗な表になっているはずですが、私はCSVをExcelで編集する気はさらさらないので一旦CSVに保存します。
※シートは1シートだけの状態にしましょう。
※ExcelはCSV編集に最適化されたツールではないと教わっているので(実際ぶっ壊し経験があるので)、私は忌避しています。そうでない人はこのまま編集しても良いかも?

『ファイル』>『名前を付けて保存』から保存します。
保存場所は任意でOK。
ファイル名を任意(logo_list.csv)に変更。
ファイルの種類を『CSV UTF-8(コンマ区切り)』に変更します。ここ重要。
これを変更しておかないと吐き出されたCSVは文字化けを起こして使い物にならないので忘れないようにしましょう。
ファイルの種類を選んで保存

めでたく出来上がったCSVを開くとこんな感じです。
(cassavaというCSVエディタで開いています)
これに3行追記します。
CSVの中身

①1行目
『logo_list.unity3d』をSB3Uで開いたときに、一覧ファイルのタブに表示される[]内の数字を入れます。
今回の場合だと『st_pattern_34[348]』と表示されていたので『348』と入力します。
②2行目
ここは『0』で良いそうです。
③3行目
ここには今編集しているCSVファイルを格納する場所を記述します。
適当でいいという噂もありますが、正しいであろうと思われる値(abdata/list/characustom/logo_list.csv)を入れています。
CSV編集後

編集が終わったらCSVを保存して閉じて、abdata\list\characustom\の下に格納しましょう。

次に『manifest.xml』ファイルを作成します。
AI少女までは結構重要な役割を持っていたっぽいファイルです。必須ファイルなので作成します。
※HS2ではあんまり重要じゃないんじゃないのと個人的に思ってます。なので入力内容はかなーりいい加減です。
マニフェストファイル

BepinExでのIDだそうです。ユニークな値にしましょう。mod名をいれればそうそう被らないんじゃないかな?

mod名称。なんでもOK。

作ったmodのバージョンです。1.0.0とか1.0とか1.02とか好きな値をどうぞ。

mod作った人の名前です。

説明文欄。あってもなくてもOK。

最終的には以下の構成になっていればOK。
abdata\chara\log_mod\st_pattern_logo_mod.unity3d
(abdata)\list\characustom\logo_list.csv
manifest.xml

最後にzipmodに圧縮します。
作業用フォルダ内で作成した『abdata』『manifest.xml』を一緒に選択して7zipで圧縮します。
7zipで圧縮

ファイル名の拡張子を『zipmod』にします。圧縮後に変更するとmodが機能しない場合があるそうです。
アーカイブ形式を『zip』にします。
圧縮レベルを『無圧縮』にします。
設定が終わったら『OK』を押しましょう。
圧縮とは言っていますが『無圧縮』なので実際には圧縮されていません。一つにまとめているだけですね。
無圧縮する

これで完成です!

あとは出来たzipmodをmodsフォルダに入れて、干渉を避けるために最初に作った自環境用のmodはリネームして動作しなくするなり、削除するなりしてしまいましょう。
では動くかどうかを確認しましょう。

最終確認

独り言

実際このmod自体がそれほど有用かと言うと、どうだろねとは思っています。
この記事はmodの作成方法の基礎を抑えるための内容とmodなのでその辺ご理解いただければ幸いです。

私自身、服などのmodを作りたい野心があるので今後研究してまとめられたら、そっち方面の作成講座も記事にしたいなと思ってます。

ではでは楽しいハニーセレクト2ライフを~。