这是一个 BepInEx 插件,包括多种新的功能改进 为游戏真正的flac支持. 为游戏提供歌曲批量导入和歌单管理. 使《Chill With You》游戏正确在 Wallpaper Engine 环境下运行. 添加了游戏内输入法.
请提供日志文件以便排查!
日志文件位置:
BepInEx\LogOutput.log
提交 Issue 时请附带此日志文件,否则可能无法定位问题!
EnableWallpaperEngineMode更改为是来启动壁纸引擎模式 此模式不需要steam授权,并且可以鼠标点击交互
- 无法获取时长
- 缓存的成就
壁纸引擎模式会缓存成就到本地,当在线启动之后会自动从缓存的成就尝试为steam解锁,但是需要设置OfflineUserId为你的steamid.就是你的steam存档名.在C:\Users\kevin\AppData\LocalLow\Nestopi\Chill With You\SaveData\Release\v2
你的steam安装的游戏也需要安装此插件,并且没有开启壁纸引擎模式,才会尝试从缓存同步成就
- 🎮 壁纸引擎模式运行:无需 Steam 即可启动游戏
- 💾 存档切换:支持多个存档槽位,或读取原 Steam 用户的存档
- ⌨️ 桌面输入支持:在 Wallpaper Engine 中可以直接从桌面输入
- 🇨🇳 中文输入法:集成 RIME 中州韵输入法引擎,支持拼音、双拼等多种输入方案
- 🌍 语言切换:自定义默认语言设置
- 🎁 DLC 控制:可选启用或禁用 DLC 功能
- 🎵 歌曲扩充:歌曲功能扩充
- ⚡ 虚拟滚动:只渲染可见的音乐列表项,大幅提升性能
- 支持 2000+ 首歌曲不卡顿
- 内存占用降低 90%+
- 滚动流畅丝滑
- 📁 文件夹播放列表:自动扫描音频文件夹,按目录生成播放列表
- 🎵 扩展音频格式:支持 OGG、FLAC、AIFF、.egg
- 🔢 突破限制:扩充 AudioTag 到 16 位限制,支持12个额外自定义标签, 可扩充曲目上限
- 下载 BepInEx 5.x
- 解压到 Wallpaper Engine 项目目录:
wallpaper_engine\projects\myprojects\chill_with_you\ - 运行一次游戏以生成 BepInEx 配置文件
- 从 Releases 下载最新的
ChillPatcher.dll - 将
ChillPatcher.dll复制到:wallpaper_engine\projects\myprojects\chill_with_you\BepInEx\plugins\
安装完成后,游戏将自动:
- 绕过 Steam 验证
- 使用离线用户 ID 创建存档
- 支持在桌面激活时捕获键盘输入
配置文件位于:BepInEx\config\com.chillpatcher.plugin.cfg
[Features]
## Enable unlimited song import (may affect save compatibility)
# Setting type: Boolean
# Default value: false
EnableUnlimitedSongs = false
## Enable extended audio formats (OGG, FLAC, AIFF)
# Setting type: Boolean
# Default value: false
EnableExtendedFormats = false
## Enable virtual scrolling for better performance
# Setting type: Boolean
# Default value: true
EnableVirtualScroll = true
## Enable folder-based playlists (runtime only, not saved)
# Setting type: Boolean
# Default value: true
EnableFolderPlaylists = true[Advanced]
## 虚拟滚动缓冲区大小
## 在可见区域前后渲染的额外项目数量
## 较大值:滚动更流畅,内存占用略高
## 较小值:内存占用低,快速滚动可能有延迟
## 推荐值:3-5
VirtualScrollBufferSize = 3[Playlist]
## 是否启用文件夹歌单系统
## true = 启用(默认),扫描目录并创建自定义Tag
## false = 禁用,不会扫描文件夹也不会添加自定义Tag
# Setting type: Boolean
# Default value: true
EnableFolderPlaylists = true
## 歌单根目录路径
## 相对路径基于游戏根目录(.dll所在目录)
## 默认:playlist(与ChillPatcher.dll同级的playlist文件夹)
# Setting type: String
# Default value: playlist
RootFolder = playlist
## 目录递归扫描深度
## 0 = 仅扫描根目录
## 1 = 扫描根目录及其一级子目录
## 2 = 扫描两级子目录
## 3 = 扫描三级子目录(默认)
## 建议范围:0-5
# Setting type: Int32
# Default value: 3
# Acceptable value range: From 0 to 10
RecursionDepth = 3
## 是否自动生成playlist.json
## true = 首次扫描目录时自动生成JSON缓存(默认)
## false = 仅使用已存在的JSON文件
# Setting type: Boolean
# Default value: true
AutoGenerateJson = true
## 是否启用歌单缓存
## true = 读取playlist.json缓存,加快启动速度(默认)
## false = 每次启动重新扫描所有音频文件
# Setting type: Boolean
# Default value: true
EnableCache = true使用示例:
假设你的音乐文件夹结构如下:
Music/
├── Pop/
│ ├── song1.mp3
│ └── song2.ogg
└── Rock/
├── album1/
│ ├── track1.flac
│ └── track2.flac
└── album2/
└── track3.mp3
配置 RootFolder = Music 和 RecursionDepth = 2,将自动生成以下播放列表:
- 📁 Pop (2 首)
- 📁 Rock (1 首)
- 📁 Rock/album1 (2 首)
- 📁 Rock/album2 (1 首)
支持的音频格式:
.mp3- MP3 (MPEG Audio).wav- WAV (Waveform Audio).ogg- Ogg Vorbis.egg- Ogg Vorbis.flac- FLAC (Free Lossless Audio Codec).aiff/.aif- AIFF (Audio Interchange File Format)
如何添加新歌曲(增量更新):
首次运行后,每个歌单文件夹会生成两个文件:
playlist/
├── 我的收藏/
│ ├── !rescan_playlist ← 扫描标志文件
│ ├── playlist.json ← 歌曲缓存
│ ├── song1.mp3
│ └── song2.mp3
要添加新歌曲:
- 将新的音频文件放入歌单文件夹
- 删除该文件夹中的
!rescan_playlist文件 - 重启游戏
系统会:
- ✅ 保留已有歌曲的 UUID(收藏、排序、排除状态不丢失)
- ✅ 为新歌曲分配新的 UUID
- ✅ 更新
playlist.json缓存 - ✅ 重新创建
!rescan_playlist标志文件
注意:
- 每个歌单文件夹独立管理,互不影响
- 只需删除需要更新的文件夹的标志文件
- 不删除标志文件时,使用缓存快速加载
[Language]
## 默认游戏语言
## 0 = None (无)
## 1 = Japanese (日语)
## 2 = English (英语)
## 3 = ChineseSimplified (简体中文) - 默认
## 4 = ChineseTraditional (繁体中文)
## 5 = Portuguese (葡萄牙语)
DefaultLanguage = 3[SaveData]
## 离线模式使用的用户ID
## 修改此值可以使用不同的存档槽位,或读取原Steam用户的存档
## 例如:将其改为你的 Steam ID 可以访问原来的存档
OfflineUserId = OfflineUser如何使用原 Steam 存档?
- 找到你的 Steam ID(17 位数字)
- 修改配置文件中的
OfflineUserId = 你的SteamID - 重启游戏即可使用原存档
如何使用多个存档槽位?
- 不同的
OfflineUserId对应不同的存档 - 例如:
OfflineUserId = Save1、OfflineUserId = Save2
[DLC]
## 是否启用DLC功能
EnableDLC = false[KeyboardHook]
## 键盘钩子消息循环检查间隔(毫秒)
## 默认值:1ms(推荐)
## 较小值:响应更快,CPU占用略高
## 较大值:CPU占用低,响应略慢
## 建议范围:1-10ms
MessageLoopInterval = 1调整建议:
1ms- 最佳响应速度(默认推荐)5ms- 平衡性能和响应10ms- 低 CPU 占用
[InputMethod]
## 是否启用RIME中文输入法
EnableRimeInputMethod = true当你点击桌面(而不是游戏窗口)时,仍然可以输入到游戏的输入框中:
- 在游戏中点击输入框(如搜索框、聊天框等)
- 此时输入框获得焦点
- 即使你点击了桌面,在键盘上输入的字符仍会被捕获并输入到游戏中
支持功能:
- ✅ 中文输入(RIME 输入法引擎)
- ✅ 英文字母、数字、常用符号
- ✅ Backspace(删除)、Delete、方向键
- ✅ Enter(确认)、上下键选择候选词
本插件集成了 RIME/中州韵输入法引擎,这是一个强大的开源跨平台输入法框架。
RIME(Rime Input Method Engine)是一个开源的输入法引擎,支持:
- 🎯 多种输入方案:拼音、双拼、五笔、注音等
- 🔧 高度可定制:通过 YAML 配置文件自由定制
- 📚 智能候选:支持云输入、用户词库、自动学习
- 🌏 跨平台:Windows(小狼毫)、macOS(鼠须管)、Linux(ibus-rime)
更多信息请访问:
| 按键 | 功能 |
|---|---|
| F4 | 打开方案选单(切换输入方案、中英标点、全/半角) |
| F6 | 重新部署 RIME(重新加载配置,无需重启游戏) |
| 上/下 | 选择候选词 |
| 数字键 1-9 | 直接选择对应候选词 |
| 空格 | 确认第一个候选词 |
| 左/右 | 移动拼音光标 |
首次运行会自动部署以下输入方案:
- 🌙 明月拼音 (luna_pinyin) - 全拼,默认方案
- 📌 小鹤双拼 (double_pinyin_flypy)
- 🎹 自然码双拼 (double_pinyin)
- 🪟 微软双拼 (microsoft_shuangpin)
- 等等
RIME 配置文件位于:
BepInEx\plugins\ChillPatcher\rime-data\shared
常用配置文件:
default.yaml- 全局配置(方案列表、快捷键等)<方案名>.schema.yaml- 各输入方案配置<方案名>.custom.yaml- 用户自定义配置(推荐)<方案名>.userdb.txt- 用户词库(可导入导出)
修改 user/default.custom.yaml(如不存在请创建):
# 自定义补丁文件
patch:
# 修改候选词数量
"menu/page_size": 7
# 修改快捷键
"switcher/hotkeys":
- "Control+grave" # Ctrl+` 切换输入方案
- "F4"
# 添加自定义方案
"schema_list":
- schema: luna_pinyin # 明月拼音
- schema: double_pinyin_flypy # 小鹤双拼修改后按 F6 重新部署即可生效。
- 下标数字
₁₂₃- 未选中的候选词 - 上标数字
¹²³- 当前选中的候选词
示例:nihao [你¹ 呢₂ 尼₃ 倪₄](当前选中"你")
Q: 如何切换输入方案?
A: 按 F4 打开方案选单,用数字键或方向键选择。
Q: 修改配置后如何生效?
A: 按 F6 重新部署 RIME,无需重启游戏。
Q: 如何导入自己的词库?
A: 将 .userdb.txt 或 .dict.yaml 放入 rime/user/ 目录,按 F6 重新部署。
Q: RIME 输入法有问题怎么办?
A:
- ✅ 请先查看 RIME 官方文档:https://github.com/rime/home/wiki
- ✅ 检查日志文件:
rime/user/logs/ - ❌ 不要向 RIME 官方仓库提交 issue(这是第三方集成)
- ✅ 如果确认是本插件集成问题,请在本项目提交 issue
Q: 如何完全禁用中文输入法?
A: 修改配置文件 BepInEx\config\com.chillpatcher.plugin.cfg:
[InputMethod]
EnableRimeInputMethod = false如果不想继续输入,只需:
- 在游戏中点击任意位置(鼠标左键)
- 或者点击其他输入框(会自动清理 RIME 状态)
# 克隆仓库
git clone <repository-url>
# 使用 Visual Studio 或 Rider 打开
ChillPatcher.sln
# 构建项目
dotnet build
# 输出目录
bin/Debug/ChillPatcher.dll- SteamAPIPatch:绕过 Steam 初始化,防止启动死锁
- LanguagePatch:自定义默认语言设置
- KeyboardHookPatch:全局键盘钩子,捕获桌面输入
- AchievementsPatch:禁用 Steam 成就系统
- EventBrokerPatch:防止 Steam 事件代理异常
使用 Windows 底层键盘钩子 (WH_KEYBOARD_LL) 捕获全局键盘事件:
- 检测前台窗口是否为桌面 (Progman/WorkerW/SysListView32)
- 捕获键盘输入并加入队列
- 在 TMP_InputField.LateUpdate 时注入字符
- 使用
PeekMessage非阻塞消息循环 - 监听
OnApplicationQuit()事件清理钩子 - 捕获
ThreadAbortException防止退出报错
A: 检查 BepInEx\LogOutput.log 查看错误信息。通常是 BepInEx 版本不兼容。
A: 确保:
- 游戏输入框已获得焦点
- 当前前台窗口是桌面(不是其他应用)
- 尝试调整
MessageLoopInterval配置
A: 最新版本已修复此问题。如果仍有问题,请查看日志中的 [KeyboardHook] 信息。
A: 暂不支持配置禁用。如需禁用,请移除 ChillPatcher.dll 插件。
本项目采用 GPL v3 许可证,因为它使用了以下开源组件:
- librime (中州韵输入法引擎) - BSD 3-Clause License
- BepInEx - LGPL 2.1 License
- HarmonyX - MIT License
根据开源许可兼容性,ChillPatcher 整体采用 GPL v3 许可。详见 LICENSE 文件。
注意: 本项目仅供学习研究使用。游戏本体版权归原开发者所有,请支持正版。
- RIME/中州韵输入法引擎 - 强大的开源输入法引擎
- BepInEx - Unity 游戏模组框架
- HarmonyX - .NET 运行时方法补丁库
- dr_libs - flac解码支持