Koikatsu / Koikatsu Party のカード・シーン PNG ファイルを LZMA でロスレス圧縮/解凍するツール群。
| コンポーネント | 形式 | 用途 |
|---|---|---|
| KK_CardCompression.dll | BepInEx プラグイン | ゲーム内でセーブ時に自動圧縮、ロード時に自動解凍 |
| KKCC.exe | WPF デスクトップアプリ | ファイルをドラッグ&ドロップでバッチ圧縮/解凍 |
圧縮形式: PNG 画像データ(IEND チャンクまで)はそのまま保持し、後続のゲームデータ部分のみを LZMA 圧縮。元の PNG 画像部分は無変更のため、エクスプローラのサムネイル表示には影響しない。
| マーカー | 状態 |
|---|---|
100 |
未圧縮(バニラ) |
101 |
LZMA 圧縮(本ツール / KK_SaveLoadCompression 互換) |
- キャラカードで約 4-25% 削減(9件の実測、平均 8.2%)
- コーデで約 0-9% 削減(6件の実測、平均 4.3%)
- シーンファイルで約 5-90% 削減(12件の実測、平均 約 34%。ファイルの内容により削減率は大きく変動)
- バイト単位で完全復元(ロスレス)
- 並列バッチ処理で複数ファイルを高速処理
KK_CardCompression/
├── src/
│ ├── Plugin/ # BepInEx プラグイン (.NET Framework 4.8)
│ │ ├── KK_CardCompression.csproj
│ │ ├── Plugin.cs # エントリポイント
│ │ ├── PngCompression/ # PNG LZMA 圧縮エンジン
│ │ ├── Extension/ # 共通ユーティリティ
│ │ ├── Extension.Unity/ # [削除済] Unity 依存コード(旧ウォーターマーク機能)
│ │ ├── Resources/ # 埋め込みリソース
│ │ └── Embedded/ # 埋め込み SevenZip.dll(ビルド時に自動生成)
│ ├── App/ # デスクトップアプリ (.NET 8 WPF)
│ │ ├── KK_CardCompression.csproj
│ │ ├── MainWindow.xaml(.cs) # メイン UI
│ │ ├── Models/ # データモデル
│ │ └── Services/ # 圧縮・設定サービス
│ └── TestRunner/ # テストプロジェクト
├── Assets/ # アプリアイコン
├── tools/ # Python ユーティリティ
├── .github/workflows/ # CI / CD
└── KK_CardCompression.sln # Visual Studio ソリューション
- Koikatsu (Koikatu) または Koikatsu Party
- BepInEx 5.4.x(BepInEx.Core 5.4.21 との依存あり)
- KK_SaveLoadCompression.dll の同梱は不要(単一ファイルで動作)
- .NET 8 Desktop Runtime (x64)
- Windows 10 以降
- .NET 8 SDK
- Visual Studio 2022 または
dotnetCLI
dotnet build src/Plugin/KK_CardCompression.csproj -c Release
# 出力: src/Plugin/bin/Release/KK_CardCompression.dlldotnet build src/App/KK_CardCompression.csproj -c Release
# 出力: src/App/bin/Release/net8.0-windows/win-x64/# 単一ファイル発行
dotnet publish src/App/KK_CardCompression.csproj -c Release -o publish/dotnet build KK_CardCompression.sln -c ReleaseKK_CardCompression.dllを以下のいずれかに配置:BepInEx\plugins\KK_CardCompression\KK_CardCompression.dll(推奨)BepInEx\plugins\raurau\KK_CardCompression.dll(旧配置)
- 必須:
BepInEx\plugins\raurau\SevenZip.dllが残っている場合は削除(v1.0.0 以降は単一 DLL で動作) - 必須: 旧
jim60105\KK_SaveLoadCompression.dllが存在する場合は削除(競合防止) - Koikatsu 起動後、F1 → Plugin Settings → KK Card Compression → Enable = ON
| セクション | キー | デフォルト | 説明 |
|---|---|---|---|
| Config | Enable | true | プラグイン全体の有効/無効 |
| Settings | Delete the original file | true | 圧縮後に元ファイルを上書き |
| Settings | Display compression message on screen | true | 画面に圧縮メッセージ表示 |
| Settings | Skip bytes compare when saving | false | 保存時のバイト検証をスキップ |
| Enable at Where | Character | false | キャラ保存時に圧縮 |
| Enable at Where | Coordinate | false | コーデ保存時に圧縮 |
| Enable at Where | Studio Scene | true | スタジオシーン保存時に圧縮 |
KKCC.exeを任意の場所に配置- .NET 8 Desktop Runtime をインストール
- アプリ起動後、PNG ファイル/フォルダをドラッグ&ドロップ
- 「圧縮」または「解凍」をクリック
- 必要に応じて「低CPU優先度」トグルをON(圧縮中のCPU負荷を抑制)
主な機能:
- 複数ファイルの並列バッチ処理
- マウスオーバーによるPNGプレビュー
- ウィンドウサイズ・位置の自動保存
- 低CPU優先度モード
- 互換性あり: KK_SaveLoadCompression.dll (jim60105 版) — 同一の LZMA マーカー形式(101)を使用
- 圧縮形式は LZMA(マーカー 101)のみ対応。Zstd 形式(102, 103)には非対応。
Apache-2.0
raurau