[Koikatu][BepInEx v5.X] コイカツ! 插件安裝方式、問題判斷及排除指南


「大佬,為什麼我安裝了☆☆☆以後都沒有反應啊?」
「請問進遊戲在@%@%處白屏了怎麼辦」
「求救,我安裝了超級無敵終極霹靂宇宙第一天上天下唯我獨尊整合包,加上了不知道哪裡來的一堆插件,然後遊戲打不開」

我怎麼知道? 我又不會通靈 σ ゚∀ ゚) ゚∀゚)σ

這篇文章要告訴你這些插件的正確安裝方式、遇到問題的檢測流程,以及如何給出足夠的錯誤資訊讓別人幫你

正確的下載插件

Github

大部分的插件都是發佈在Github上,我遇到很多天兵把源碼下載回來蓋進遊戲目錄,然後問說他怎麼不動。請務必按此流程操作:
  1. 閱讀作者的Readme!!!!!!!!!!!!!!!!!!
    所有的重要事項都會寫在這裡
    說明事項大部分都是簡單英語,有小學水平就該能讀個大概
    讀不懂就把翻譯機拿出來用
    更別說有的發布者是直接把下載連結放在Readme裏頭
  2. 查看Release,那是發佈的意思。通常插件開發到一段落,開發者就會釋出一版Release給使用者
    (其中打叉的部分是源碼,通常裏頭沒有你要的東西)

    Release頁,檔案一般會放在Latest ReleaseAssets裡面 (最底下打叉的倆Source Code是源碼)
    因為發布格式都是自由的,有些人是做一整包,有些人是分很多項目,也有的人發Release不會把所有插件包一起
    關鍵是多看頁面上的文字做判斷

Patreon

Patreon是一個可以讓各位斗內開發者的平台,不少大佬會在這裡發東西
一般來說是拉到頁面最下面,尋找迴紋針圖示的夾帶檔案
同樣,上方的Readme非常重要,請重點閱讀
(右側綠框是斗內按鈕,請踴躍投錢讓程序猿買香蕉)

Mega

Mega如果不會下載,我應該幫不到你

uploader.jp

日本人喜歡把東西發佈在這裡
日本開發者不喜歡用BepInEx和sideloader插件,需要特別注意是不是IPA或者Hardmod形式
選擇要下載的插件

拉到下面按這個日文的下載按紐

再點一次「Download Now」才會開始下載

正確的安裝插件

東西下載到了,接下來講安裝
插件一般會有幾種形式:

*.dll

遇到dll副檔名,請判斷他是BepInEx4插件還是BepInEx5插件
如果發布時間在2019/10/23以前,那他大概是個BepInEx4插件

但少部分是IPA插件,IPA插件要放在「遊戲根目錄\Plugins」資料夾
更多詳細請參考コイカツ! BepInEx框架 v4.X→v5.X升級指南: 三種插件類型

*.zip

這是一個壓縮檔,遇到這壓縮檔有數種情況需要判斷
  1. 裡頭包含一個「manifest.xml」:
    他是一個Sideloader mod,不要解開,直接把他放到「遊戲根目錄\mods」資料夾下即可
  2. 很明顯包含了「BepInEx」,同時也可能有「mods」和「UserData」資料夾,但不包含其他遊戲目錄文件:
    直接蓋進遊戲目錄
  3. 有一個「Plugins」資料夾:
    他很有可能是一個IPA插件,請詳細閱讀Readme看是否有任何說明
    Plugins資料夾也是直接蓋進遊戲目錄 (沒有Plugins目錄就自己新增)
  4. 包含了遊戲目錄,但並不是上述幾種情況,且安裝說明叫你蓋進遊戲目錄
    注意!這是一個Hard mod!建議按照這篇說明將他sideloader化,或是直接丟了
  5. 其他情況,就自己判斷囉

*.zipmod

其實他跟zip是一樣的東西,但是他絕對是一個sideloader mod
不要解開,直接把他放到「遊戲根目錄\mods」資料夾下
你如果用壓縮軟體去開,會發現他跟前面那個是一樣的結構

*.rar、*.7z

他就是一個壓縮檔
看都不用看,我給你三秒把他解壓縮
安裝還有一點要注意,那就是依賴
大部分的人如果不是死在安裝出錯,就是死在依賴沒裝對
而這些全都會寫在插件的Readme裡頭
並且請特別特別注意版本號!!!!!!!!!!!!!!!!!!!!!!

簡述除錯方式

你很努力地安裝完成了,但是他依然沒有正確運作 (或是程序猿出錯讓他故障了⊂彡☆))д`))
這時候請檢查output_log,裡面會有運行時產生的所有輸出資訊

「Koikatu」本篇遊戲 和 捏人: 「遊戲根目錄\Koikatu_Data\output_log.txt」
「CharaStudio」工作室: 「遊戲根目錄\CharaStudio_Data\output_log.txt」

如果你要向任何人尋求協助
務必提供這個檔案

BepInEx v5.2改到了「遊戲根目錄\output_log.txt」
修改 doorstop_config.ini 中 redirectOutputLog=false 可以取消這個表現

這個檔案會在每次程式重新啟動時被重新產生
如果檔案太大,請這麼做:
將遊戲關閉重啟 → 再次觸發錯誤讓他確實記錄 → 直接關閉遊戲 → 之後將此檔案備份出來保存

開啟command line視窗

  1. 除錯時建議開啟command line視窗
    編輯「遊戲根目錄\BepInEx\config\BepInEx.cfg」檔案,將[Logging.Console]和[Logging.Disk]底下這兩個啟用
  2. 若你有安裝VNEngine,可能還需再修改此處 (沒有安裝就跳過)
    編輯「遊戲根目錄\BepInEx\plugins\Console\Lib\vngameengine.ini」檔案,將[Options]的HideConsoleAfterStart改為0或2

簡述output log

首先開頭紀錄了你的系統資訊,還有遊戲主文件的載入資訊
如果你的log在這裡載入就卡住了,代表根本連主遊戲都沒起來
Initialize engine version: 5.6.2f1 (a2913c821e27)
GfxDevice: creating device client; threaded=1
Direct3D:
    Version:  Direct3D 11.0 [level 11.1]
    Renderer: NVIDIA GeForce GTX 1060 3GB (ID=0x1c02)
    Vendor:   NVIDIA
    VRAM:     2988 MB
    Driver:   26.21.14.3200
Begin MonoManager ReloadAssembly
Platform assembly: C:\illusion\Koikatu\CharaStudio_Data\Managed\UnityEngine.dll (this message is harmless)
Loading C:\illusion\Koikatu\CharaStudio_Data\Managed\UnityEngine.dll into Unity Child Domain
.
.
.(省略)
Loading C:\illusion\Koikatu\CharaStudio_Data\Managed\Vectrosity.dll into Unity Child Domain
- Completed reload, in  0.025 seconds

接著是BepInEx和外掛插件載入
這裡可以確認插件清單和版本,判斷安裝資訊就看這段
如果插件放錯位置應該是炸在這
[Message:Preloader] BepInEx 5.0.1.0 - CharaStudio
[Info:Preloader] Running under Unity v5.6.2.10654012
[Info:Preloader] CLR runtime version: 2.0.50727.1433
[Info:Preloader] Supports SRE: True
[Message:Preloader] Preloader started
[Info:Preloader] Loaded 1 patcher methods from BepInEx.BepIn4Patcher, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
[Info:Preloader] Loaded 1 patcher methods from BepInEx.IPAHarmonyShimmer, Version=1.2.2.0, Culture=neutral, PublicKeyToken=null
[Info:Preloader] Loaded 1 patcher methods from BepInEx.IPAVirtualizer, Version=1.2.2.0, Culture=neutral, PublicKeyToken=null
[Info:Preloader] Loaded 1 patcher methods from DemystifyExceptions, Version=1.0.1.0, Culture=neutral, PublicKeyToken=null
[Info:Preloader] 5 patcher plugin(s) loaded
[Info:Preloader] Shimming IPA plugins
[Info:Preloader] Patching [UnityEngine] with [BepInEx.Chainloader]
[Info:Preloader] Starting BepInEx4 Migrator!
[Info:Preloader] Initializing BepInEx 4
[Info:Preloader] Patching [Assembly-CSharp] with [BepInEx.IPAHarmonyShimmer.HarmonyShimmer]
[Info:Preloader] Patching [Assembly-CSharp] with [BepInEx.IPAVirtualizer.IPAVirtualizer]
[Message:Preloader] Preloader finished
[Message:BepInEx] Chainloader ready
[Message:BepInEx] Chainloader started
[Info:BepInEx] 137 plugins to load
[Warning:BepInEx] Skipping because of process filters [Character Replacer 1.6.1]
[Warning:BepInEx] Skipping because of process filters [HeightBarX 3.3]
.
.(省略)
[Warning:BepInEx] Skipping because of process filters [Add mob characters to roam mode 1.0]
[Info:BepInEx] Loading [UnityConsole 0.1.0.0]
.
.
.(省略)

接著是Sideloader mods載入,關於sideloader mod的錯誤要查這裡
請檢查這些「Multiple versions detected, only "...." will be loaded. Skipped versions: "...."」
這是說有重覆的插件存在,系統從中挑了一個載入。
你最好手動移除舊的,因為它不一定是挑了對的那一個。
[Info:Sideloader] Found 1296 zipmods in directory: C:\illusion\Koikatu\mods
Platform assembly: C:\illusion\Koikatu\CharaStudio_Data\Managed\I18N.West.dll (this message is harmless)
[Warning:Sideloader] Multiple versions detected, only "Sideloader Modpack - Compatibility Pack\murara\[murara]kimono_jacket_t.zipmod" will be loaded. Skipped versions: "Sideloader Modpack - Compatibility Pack\[murara]Kimono Jacket.zipmod"
[Warning:Sideloader] Multiple versions detected, only "Sideloader Modpack - Compatibility Pack\[murara]Shoulder Over Jacket v1.0.zipmod" will be loaded. Skipped versions: "Sideloader Modpack - Compatibility Pack\murara\[murara]jacket_acc v1.0.zipmod"
.
.
.(省略)
[Info:Sideloader] Successfully loaded 1284 mods out of 1296 archives in 3224ms
[Warning:Sideloader] Could not load 12 mods, see previous warnings for more information. File names of skipped archives:
Sideloader Modpack\[Mysto]Modpack v1.0.5 (edit).zipmod | ...(省略)

在plugin載入中,可注意KKAPI這邊
[Info:BepInEx] Loading [Modding API 1.11.1]
Non platform assembly: C:\illusion\Koikatu\BepInEx\plugins\KKAPI.dll (this message is harmless)
[Debug:Modding API] Game version 5.1 running under en-US culture
[Debug:Modding API] Installed DLC: 01 02 03 04 05 06 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 50 51 52 53 54 55 56 100
[Debug:Modding API] Processor: Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz (6 threads @ 2904MHz); RAM: 16301MB (53% used); OS: Windows 10  (10.0.0) 64bit

IPA載入
[Info:BepInEx.IPALoader] ----------------------------------------
[Info:BepInEx.IPALoader] IPALoader found 2 plugins in "C:\illusion\Koikatu\Plugins"
[Info:BepInEx.IPALoader] KK_GaugeSlider: 0.2.2
[Info:BepInEx.IPALoader] KK_HeadUtl: 0.2.1
[Info:BepInEx.IPALoader] ----------------------------------------

最後Studio載入完成
[Debug:Modding API] SceneManager.activeSceneChanged - from  to Studio
[Debug:Modding API] SceneManager.sceneLoaded - Studio in Single mode

遊戲中不時會跑一些不重要資訊,像是下面這種完全可以忽略
(這個說的是他做了內存整理)
Unloading 2166 unused Assets to reduce memory usage. Loaded Objects now: 23654.
Total: 124.891304 ms (FindLiveObjects: 1.418400 ms CreateObjectMapping: 0.852400 ms MarkObjects: 121.572800 ms  DeleteObjects: 1.046500 ms)

接下來就是觸發你的錯誤
看他有沒有跳Error,或者是LOG斷在哪裡,死機在哪裡來進行判斷
基本上都是按照錯誤資訊來判斷而已


舉個例子
[Error] IsolatedStorageException: Could not find file "C:\illusion\Koikatu\UserData\chara\female\Koikatu_F_20181202110656420".
[Error] Stack trace:
System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,bool,System.IO.FileOptions) <0x007ae>
System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,bool,bool) <0x00059>
(wrapper dynamic-method) System.IO.FileStream..ctor_Patch1 (object,string,System.IO.FileMode,System.IO.FileAccess) <0x0006c>
ModDiscover.Hooks.LoadCharaFilePostHook (ChaFileControl,bool,string,byte,bool,bool,bool,bool,bool) <0x0017b>
(wrapper dynamic-method) ChaFileControl.LoadFileLimited_Patch3 (object,string,byte,bool,bool,bool,bool,bool) <0x002fc>
HSUS.HSUS.LoadCustomDefault (string) <0x0009e>
HSUS.HSUS.<onlevelwasinitialized>b__52_0 () <0x00124>
ToolBox.Extensions/<executedelayed_routine>d__15.MoveNext () <0x0007e>
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator,intptr) <0x00058>
首先聲明這是很久遠的案例了,現在的KKUS應沒有這個事情
從這個錯誤可以看到是HSUS發生了IO相關的錯誤,而資訊是說他找不到某個角色存檔
從報錯位置看出他是發生在進入女編輯器,剛載入後發生,且function名稱有個LoadCharaFilePostHook字眼
判斷: 應該是那個更改預設載入角色的功能,因為我把設定的角色卡移除了,他找不到才跳這個錯

大概就是這種感覺

最後祝各位都能順利安裝、順利除錯
若喜歡我的文章,歡迎給我鼓勵 (ノ>ω<)ノ!
任何的捐助都是對我的實際支持,謝謝你們
私が作ったものが役に立ったら、寄付してください (ノ>ω<)ノ!
寄付は私にとって大きな助けになります、ありがと
If you like my works above, please feel free to support me (ノ>ω<)ノ!
Any donation will be of great help to me, thank you.

>>捐款頁 & 銘謝清單<<
>>Donation page & Thanks list<<