差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
appendix:プラグインのお話 [2023/02/07 16:41] fumble |
appendix:プラグインのお話 [2024/05/09 18:56] (現在) fumble |
||
---|---|---|---|
行 1: | 行 1: | ||
=====プラグインのお話===== | =====プラグインのお話===== | ||
- | オダメのプラグインはSybarisプラグインとBepInExプラグインに分かれます。\\ | + | オダメのプラグインは大きくSybarisプラグインとBepInExプラグインに分かれます。\\ |
+ | \\ | ||
+ | ====Sybarisプラグイン==== | ||
+ | Sybaris用に作成されたプラグイン。\\ | ||
+ | Sybaris2環境ではSybaris2から呼び出され、\\ | ||
+ | BepInEx環境ではBepInEx用のプラグインから呼び出されます。\\ | ||
+ | |||
+ | ====BepInExプラグイン==== | ||
+ | BepInEx用に作成されたプラグイン。\\ | ||
+ | BepInEx環境でのみBepInExから呼び出されます。\\ | ||
+ | Sybaris2環境では動作しない。\\ | ||
+ | BepInExはUnity汎用なのでオダメ用で無いFPSカウンターなどゲームに依存しないプラグインも動作する。\\ | ||
+ | |||
+ | ====Sybaris2環境とは==== | ||
+ | オダメ(カスメ)用に作成されたと思われるインジェクターを使用する環境。\\ | ||
+ | オダメの実行フォルダに居るopengl32.dllがインジェクターとなるDLL。\\ | ||
+ | |||
+ | ====BepInEx環境とは==== | ||
+ | Unity用汎用インジェクターを使用する環境。\\ | ||
+ | Sybarisプラグインを呼び出すBepInExプラグインが存在するため、こちらの環境で構築すると使えるプラグインが多くなる。\\ | ||
+ | オダメの実行フォルダに居るwinhttp.dllがインジェクターとなるDLL。\\ | ||
+ | |||
+ | ====インジェクターとは(広義ではなくここで言ってるSybaris2とBepInExを指す)==== | ||
+ | DLLインジェクションを用いて、オダメに潜り込みオダメを拡張します。\\ | ||
+ | |||
+ | ====DLLインジェクションとは(簡単な説明)==== | ||
+ | Windowsのexeファイルを実行する際にいくつか必ず読み込まれるDLL((レガシーDLL、NETのアセンブリではない))があり、\\ | ||
+ | DLLはexeと同じフォルダにあるものが優先されるため、exeと同じフォルダに偽DLLを置くことでexe実行時にexeの中に潜り込むというテクニック。\\ | ||
+ | DLLをexeの横に置く方法以外(フックとかリモートスレッドとか)にもやり方はありますが、DLLをexeの横に置く方法はお手軽なのでよく使われます。\\ | ||
+ | |||
+ | ====Sybarisプラグインを構成するファイル==== | ||
+ | 命名規則のようなものがあり、3種類のDLLに分かれる\\ | ||
+ | |||
+ | ===Sybarisフォルダに置かれるファイル=== | ||
+ | *.patcher.dll\\ | ||
+ | *.managed.dll\\ | ||
+ | |||
+ | ===UnityInjector(Sybaris\UnityInjector)に置かれるファイル=== | ||
+ | *.plugin.dll\\ | ||
+ | |||
+ | ===*.patcher.dll=== | ||
+ | 他のプログラムを書き換える処理が書かれたDLL。\\ | ||
+ | 通常はオダメ本体を書き換えて、本体の動作を変更する。\\ | ||
+ | 書き換えを行うためにオダメのバージョンに依存し、競合も発生しやすい。\\ | ||
+ | Aと言うプラグインが書き換えた箇所をBと言うプラグインが書き換える様なことになった場合、BはAが書き換えていることを想定していないため書き換え箇所がわからなくなったり、誤った書き換えを行ったりする場合がある。\\ | ||
+ | |||
+ | ===*.managed.dll=== | ||
+ | 通常はpatcherで書き換えた箇所から利用される機能が含まれているDLL。\\ | ||
+ | 「patcherがオダメ本体を書き換えて、managedに含まれている処理を呼び出すようにする」と言った使われ方が多い。\\ | ||
+ | patcherだけでmanagedがないプラグインはあるが、managedだけでpatcherがないプラグインは原則存在しない。\\ | ||
+ | |||
+ | ===*.plugin.dll=== | ||
+ | 機能として読み込まれ動作するDLL。\\ | ||
+ | |||
+ | この3種以外に別途共通機能をまとめるなどしたDLLを持っていたり、設定ファイルやデータファイルを持つプラグインも多い。\\ | ||
+ | DLLは使用するプラグインと同フォルダ、設定ファイルはConfigフォルダの中に置かれることが通例。\\ | ||
+ | |||
+ | ====BepInExプラグイン==== | ||
+ | こちらはSybarisで言うところのpatcher/ | ||
+ | |||
+ | もちろんDLLや設定ファイルがあるのことがあるのはSybarisプラグインと同じ。\\ | ||
+ | |||
+ | ====プラグイン作成において==== | ||
+ | 使用者側からみたメリットデメリットはSybarisプラグインだろうがBepInExプラグインだろうがあまりなく、\\ | ||
+ | Sybarisプラグインの方が置くファイルが増えるためちょっと面倒なぐらいであるが、\\ | ||
+ | 作成者側からみるとオダメを書き換える処理(Sybarisプラグインではpatcherが行う処理)を書くのが、\\ | ||
+ | Sybarisに比べBepInExの方が簡単であるためオダメを書き換える場合はBepInExの方が作りやすい。\\ | ||
- | かきかけ |