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

10 分鐘閱讀 View counter badge

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

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

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

正確的下載插件

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」

如果你要向任何人尋求協助
務必提供這個檔案
我真的不會通靈

這個檔案會在每次程式重新啟動時被重新產生

如果檔案太大,請這麼做:

將遊戲關閉重啟
→ 再次觸發錯誤讓他確實記錄
→ 直接關閉遊戲
→ 之後將此檔案備份出來保存

開啟 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 字眼

判斷: 應該是那個更改預設載入角色的功能,因為我把設定的角色卡移除了,他找不到才跳這個錯

大概就是這種感覺

最後祝各位都能順利安裝、順利除錯