# しばりす取説 ## これは何? - しばりすはReiPatcher等を必要とせず、単体で動作するCM3D2用の非公式MOD適用ツールです。 - (基本機能だけであれば)CM3D2のインストールフォルダにDLLを1つ置くだけで動作します。 - ゲーム本体にパッチを当てる等の改造をしないので、CM3D2_KAIZOUのようなフォルダを用意する必要もありません。 - arcの展開も必要なく、色んなツールの導入がめんどくさい自分のような人向け。 ## 内容物 - opengl32.dll (64bit用ツール本体) - x86\opengl32.dll (32bit用ツール本体) - readme.txt (説明書) - Sybaris (様々なファイルを入れるためのフォルダ、後述) ## 導入方法 - アーカイブに同梱のopengl32.dllとSybarisフォルダをインストールフォルダ(CM3D2.exe等があるところ)に展開するだけです。 - ゲーム本体が32bit版の場合はx86フォルダに入っているopengl32.dllを上記ファイルの代わりに展開します。 - しばりす本体のバージョンアップも基本的に上書きのみでOKです。 ## 関連ファイルの導入方法 - MODデータはSybaris\GameDataの中に入れて下さい(mod形式、preset形式のファイルも対応) - UnityInjector用プラグインはSybaris\Plugins\UnityInjectorに入れて下さい。 - ReiPatcherは事前にパッチを当てるUnityInjectorプラグインがある場合のみ導入の必要があります。 ## Sybarisフォルダ(初期構成) - Sybaris - GameData (この中にtexやmodel等のMODファイルを入れる。フォルダ構成は自由) - Samples (サンプルデータフォルダ。内容物は不要であれば捨てても問題なし) - Loader (しばりす用プラグインフォルダ) - Mono.Cecil.dll (パッチ用ライブラリ) - Mono.Cecil.Rocks.dll (パッチ用ライブラリ) - Sybaris.Loader.dll (しばりす用プラグインローダー) - Sybaris.ModLoader.Patcher.dll (Modサブフォルダ対応プラグイン) - UnityInjector.dll (UnityInjector本体) - ExIni.dll (UnityInjector関連dll) - Plugins - Managed (プラグインリダイレクト機能を使用する場合はManaged系ファイルをここに入れる) - UnityInjector (プラグインリダイレクト機能を使用する場合はUnityInjectorプラグインをここに入れる) - Poses (ポーズ定義フォルダ) - Preset (ここに入れたプリセットファイルは正規のプリセットフォルダに入れるのと同等として扱われる) - Sybaris.ini (しばりすの設定ファイル。基本的には書き換え不要) ## 機能一覧 - Sybaris\GameDataフォルダ下に置いた非公式MODファイルの読み込み - Sybaris\GameDataフォルダ下に置いた公式MODファイルの読み込み - Sybaris\PresetもしくはSybaris\GameDataフォルダ下に置いたプリセットファイルの読み込み - 非公式MODファイルの自動フォルダ分け(Sybaris\GameData内に自由に配置したファイルを実行時にメモリ内で適切なフォルダ構成に変更) - 非公式MODファイルの実行時リロード(エディットの入り直しやアイテムの付け外しでリロード) - プラグインリダイレクト(Sybaris\Plugins\Managed下に置いたファイルを実行時に本物のManaged内ファイルと置き換え) - UnityInjectorのダイレクトロード(ReiPatcherなしでUnityInjector.dllを直接ロード) - ユーザー定義ポーズの追加(サンプルポーズ付き) - Mono.Cecilを利用したアセンブリへの実行時パッチ機能(開発者向け) - しばりす専用プラグイン - 公式Modフォルダのサブフォルダ対応プラグイン ## 更新履歴 - build151205 - 起動時とプリセットリスト表示時のファイル検索処理を少し高速化 - 許可頂いた一件以来、なぜか氏と仲良くなって毎日メールしてる件 - build151202 - oggの差し換えに正式対応 - 今回は一応動作確認済み(全BGM・SE・ボイスを射精音に置き換えるというテストをしてちゃんと発射しまくってたので大丈夫なはず。頭おかしくなるかと思った) - UnityInjector.dllとExIni.dllをアーカイブに含めるようにした - 作者であるusagirei氏にしばりすに同梱して配布する許可を頂きました - これで新規導入の際はしばりすを導入するだけですぐにUnityInjectorプラグインも使用可能です - 公式mod形式ファイル(拡張子mod)をSybaris\GameData内の任意のフォルダに置いても認識するようにした - presetファイルをSybaris\GameData内の任意のフォルダに置いても認識するようにした - 上記2点の機能により、同一MOD内のtex, model等非公式modファイル、公式modファイル、mod用プリセットをまとめて管理できます - また、副次的にプリセットのフォルダ分けが可能になります。ファイル名よりフォルダ名を優先してソートされるため、ファイル名の変更に頼らないプリセットの並び替えが可能になります - build151117 - Sybaris.PoseLoader.dllとSybaris.PoseLoader.Patcher.dllが残っていた場合に自動で削除するように - UnityInjectorが導入済みで、DebugPlugin.iniのCodePageが-1の時に932に書き換えるように - 環境によって上書き系modが機能しない問題を修正?(手元の環境で再現しないので…) - C#ソースコード(csファイル)の簡易自動コンパイル機能を追加 - Sybaris\Plugins\UnityInjectorにAutoCompileというフォルダを作り、その中にcsファイルを入れて起動すると自動でdllを生成します - AutoCompileフォルダ下に直接csファイルを置いた場合、同名のdllが生成されます - ex: YASD.Pluginを使用する場合、AutoCompileフォルダの下にCM3D2.YASD.Plugin.csを置いて起動するとdllが生成されます(新しめのUnityInjectorで利用する際は https://gist.github.com/asm256/2a4fd9aa9be9cf3c4ba3 の書き換えが必要) - 複数のcsファイルから単一のdllを生成する場合は、AutoCompileフォルダ下に生成したいdll名のフォルダを作り、その中にcsファイルを置きます - ex: PersonalizedEditSceneSettingsを使用する場合、AutoCompileフォルダ内に「CM3D2.PersonalizedEditSceneSettings.Plugin」というフォルダを作り、その中に「PersonalizedEditSceneSettingsPlugin.cs」と「Helper.cs」を置いて起動するとdllが生成されます - dllが未生成の時のみ作動するため、csファイルを更新した等で再度dllを生成したい場合は、起動前にあらかじめdllを削除する必要があります - あくまでも*簡易*なので、できない場合は自前で何とかしてください☆ - build151110 - Chu-B Lip版でエラーが出る問題を修正(したはず) - ちくわ持ってないので申し訳ないですが動作確認できてません… - oggの追加と差し換えができなくなっていた問題を暫定的に修正(差し換えはダメかも) - 起動時の処理を少しだけ軽量化 - コールドスリープから目覚めて荒廃した世界に旅立つので、今後のアップデート時の対応が遅くなるかもしれません>< - build151107 - Win7環境でUnityInjectorフォルダのリダイレクトが動作しない問題を修正 - 従来の場所(CM3D2\UnityInjector)に置いたままだと動作しなくなるので、Sybaris\Plugins\UnityInjectorへ移動させてください - PoseLoaderを廃止し、1.16で実装された本体のポーズロード機能を利用するように変更 - これによりSybaris.PoseLoader.dllとSybaris.PoseLoader.Patcher.dllは不要になったため、実行前に**必ず**削除して下さい - 上記に伴い1.16より下のバージョンでは動作しなくなります - build151031 - 1.15環境でPoseLoaderが動作しない不具合を修正 - 動かなくなったのは対策とかじゃなくて単純に今後の拡張のための仕様変更っぽいです(KISSの皆様お疲れさまです) - 上記に伴い1.15より下のバージョンでは動作しなくなります - 暗号化arcを処理から除外するように修正 - build151025 - prioritymaterialやscriptなど一部のarcへの追加ができていなかった不具合を修正 - build151024a - x86版でエラーになっていたのを修正 - Patcher機能の不具合を修正 - build151024 - 別配布していたサンプルポーズデータをいくつか追加 - MOD使用時のメモリ使用量を9割くらい削減 - 上記に伴い起動を多少高速化 - Patcher機能を追加(開発者向け) しばりすがPatcherとして読み込むアセンブリの条件は以下の通りです - Sybaris\Loaderフォルダに配置されている - *.Patcher.dll というファイル名 - ネストしていないpublic static classを持つ(複数可) - 上記class内に public static readonly string[] TargetAssemblyNames というフィールドを持ち、ターゲットとなるアセンブリ名が列挙してある - 例: public static readonly string[] TargetAssemblyNames = {"Assembly-CSharp.dll"}; - 厳密にはreadonlyである必要はない - 上記class内に public static void Patch(AssemblyDefinition assembly) というメソッドを持つ - 以上を満たした場合にmono.dllがアセンブリをロードする直前にPatcherを読み込みメモリ上で動的にパッチを行います - よく分からない場合はSybaris.Loader.dllや既存のPatcherを逆コンパイルしてください - しばりす関連への依存性を無くしているので、今後似たようなツールが出てきても流用が簡単(なはず) - ReiPatcher用にも薄いラッパーを被せればそのまま流用できる(はず) - pmatの追加に対応した(かも) - build151018 - Loaderフォルダに未対応のDLLが入っているとエラーとなっていたのを修正 - Modフォルダ内のサブフォルダにあるmodファイルも読めるようにした(Mod\なんとか\かんとか.modという構成でもロード可能) - サンプルポーズデータをいくつか追加 - build151015 - 速度が低下していた問題を修正 - build151013 - ポーズ追加プラグインとサンプルポーズデータを追加 - ポーズ追加プラグイン「Sybaris.PoseLoader.dll」はしばりす専用プラグインです。 - ポーズを定義したanmとアイコン用のtexをSybaris\GameData下に適当に放り込んだ上でPosesに定義ファイルを入れると追加可能です - 追加されたポーズはエディット画面上で選択できます - たぶん公式かMODでポーズエディタがすぐに出てくると思うので、それまでの繋ぎということで - anmの生成ツールは誰かが作ってくれるはず - build151010 - 一部のファイルがリダイレクトされない問題を修正 - UnityInjector.dllを直接読み込む機能を追加 - これによりReiPatcherなしでUnityInjector及び関連プラグインをロードできます - 使い方としては、従来Managedに入れていたUnityInjector.dllとExIni.dllをSybaris\Loaderフォルダに入れるだけです(ReiPatcherは不要です) - あとは従来のUnityInjectorフォルダかリダイレクト用のSybaris\Plugins\UnityInjectorフォルダにプラグインを入れれば動作します - ReiPatcherによるパッチが必要なUnityInjector用プラグインの場合は、従来通り対象のアセンブリ(Assembly-CSharp.dllなど)にパッチを当てた後Sybaris\Plugins\Managedに入れればOKです - これの実装結構大変だったのに終了するわけないじゃないですか>< - 上記機能に伴い、Loaderフォルダ内にUnityInjector.dllがある時もUnityInjectorフォルダをリダイレクトするように変更 - build151008 - 32bit版に暫定対応 - build151005 - プラグインリダイレクトの説明にプラグインのコンパイルについて追記 - プラグインのリダイレクト先を指定できるようにした Sybarisフォルダ内にあるSybaris.iniで指定します。詳細はini内を参照して下さい - build151004 - 男用メニューファイルがarc内で適切なディレクトリ構成になるように修正 メモリ内でディレクトリを自動再構成するので、.menu自体はどこに置いてもOKです - build151003a - Windows 10 でも動くようになった…かも(手元に環境が無いので未確認) - それでも動作しない場合は、opengl32.dllをsybaris.dllにリネームした上で、 次を行をバッチファイルにして試してみて下さい(バッチファイルはCM3D2フォルダに置くと仮定) rundll32.exe sybaris.dll,InjectDll CM3D2x64.exe - バッチファイルを他の場所に置きたい場合はsybaris.dllのみフルパスで指定して下さい (例) rundll32.exe C:\KISS\CM3D2\sybaris.dll,InjectDll CM3D2x64.exe - build151003 - neiファイルの上書き処理に対応(Sybaris\GameData内に入れることで読み込みます) - build150928a - VR版でもプラグインリダイレクトが動作するようにした - リダイレクトによって一部プラグインにエラーが発生していたのを修正 - おまけでSybaris Arc Editorを追加 作りかけのツールなので名前に反して編集はまだできないです しばりす本体とは特に関係ないので、いらなければ捨てて下さい 簡単に書いておくと、CM3D2フォルダに置いて起動するとGameData\*.arcを全読み込み、 それ以外に置いた場合は「開く」かD&Dでarcファイルを読み込みます ファイルを選んで右クリックから保存できます - build150928 - 追加分のファイルもエディット入り直しや非表示→表示等の切り替えで再読み込みするようにした - build150927 - UnityInjectorのリダイレクトがうまくいっていなかったのを修正 - build150926a - 一部ハッシュの計算がおかしくなっていたのを修正 - プラグインリダイレクト機能を追加 従来ManagedやUnityInjectorフォルダに置いていたプラグインを、 Sybaris\Plugins\ManagedやSybaris\Plugins\UnityInjectorに置くとそこから読み込むようになります これによりゲーム本体への改造をほぼ行うことなく、集中的なMODの運用が可能になります (改造用にゲームを丸ごとコピーした別フォルダが必要なくなるので、アップデート時などに行う作業が簡略化できます) デフォルトではオフで、Sybaris\Plugins\ManagedにAssembly-CSharp.dllがあると機能が有効になります (逆に従来のフォルダに置いたままだと読み込まなくなるので注意してください) - build150926 - 異なる階層のフォルダで同名のファイルがあった場合は片方のみ使用するように - arc内ファイルへの上書き処理に対応(スクリプトもOK) - スクリプトの追加処理に対応 - 起動が多少(環境によってはかなり)重くなったかも? - わりと人柱版なので念のためセーブデータのバックアップ等々やった方が安心 - build150924a - デバッグ用の出力が残ったままだったので修正 Sybaris\GameData下にarcファイルが生成されてしまっている方はお手数ですが削除をお願いします - build150924 - Sybaris\GameData内のファイル読み込み機能を実装(追加ファイルのみ) ## FAQ - Q. 他に何を導入すればいいの? - A. モデルやテクスチャの追加だけであればしばりすのみで完結するため、他ツールの導入は必須ではないです - Q. 非公式MODを入れるフォルダの構成はどうしたらいいの? - A. Sybaris\GameDataの下は自由に配置できるので、作者さん別にフォルダを分けたり、 公式のmaterial,model,texture,...のようなフォルダ分けでもOKです - Q. 公式MODはCM3D2\Modに入れないと動かないんでしょ? - A. 公式MOD(拡張子mod)ファイルの読み込みにも対応しています。プラグイン以外のデータはだいたいSybaris\GameData内に放り込めば動作します。 - Q. これを入れれば他のプラグインも使えるの? - A. ReiPatcherを必要としないUnityInjectorプラグインであれば、UnityInjectorフォルダに入れるだけで動作します。 UnityInjector本体はしばりすと一緒に入っているので新たに導入する必要はありません。 しばりす専用プラグインであればUnityInjectorも必要なく、Sybaris\Loaderフォルダに入れるだけで動作します。 - Q. 追加用のポーズはどうやって作るの? - A. 必要なファイルは3種類で、json(ポーズ情報)、anm(モーション)、tex(アイコン)があります。 jsonはただのテキストファイルなので、Posesフォルダ内のサンプルをコピーしてメモ帳等で編集して下さい。 anmはSybarisArcEditorのポーズエディタで生成できます。 texはSybarisArcEditorのTEXエディタで生成できます。 ## 既知の問題 - 今のところなし? ## 今後の予定 - 非公式MOD管理用ツールの作成 ## お約束 - 「MODはKISSサポート対象外です。」 - 「MODを利用するに当たり、問題が発生しても製作者・KISSは一切の責任を負いかねます。」 - 「カスタムメイド3D2を購入されている方のみが利用できます。」 - 「カスタムメイド3D2上で表示する目的以外の利用は禁止します。」