KazeFactor 是咱为《元气骑士》(Soul Knight)联机模式专门打造的一款 Android 辅助小工具 OwO!它集成了挑战因子配方管理、合法性校验、命中概率计算、离线口令码分享,以及基于系统无障碍服务的屏幕识别与全自动刷新功能哒。
完全不需要 Root,轻装上阵,专治各种刷因子手酸与眼花哦 -w-!
- 🗂️ 随心所欲的配方管理:支持对全部 59 个普通挑战因子进行三态配置(
想要/不想要/默认)。不管你是喜欢一目了然的紧凑图标网格,还是喜欢看清效果的详细列表视图,咱都有准备好哦!还能保存多套常用配方随时切换呢 owo! - 🛡️ 防呆规则校验与一键修正:内置硬核规则引擎(
R1~R6),当你不小心选多了想要因子、想要与排除重叠、撞上因子互斥冲突、排除太多导致根本刷不出来,或是违背了槽位类别分布规律时,咱会实时提醒并提供一键自动修正方案,绝不让你对着不可能刷出的配方空等啦 QAQ。 - 🧮 玄学改命?不,是精确算命!:拒绝盲目狂点!基于游戏内固定的 17 种合法槽位类别序列与 11 组互斥冲突对,咱会在底层直接穷举全部合法组合,帮你精确算出当前配方的单次命中概率与几何分布期望刷新次数。非酋还是欧皇,一看便知哒 -3-。
- 🔗 超短口令码离线分享:咱还有一套紧凑的自研口令码协议(格式
SKF1-<Base32>-<CRC8>)。内置变长整数(Varint)压缩、去易混字符 Base32 编码与 CRC-8/MAXIM 校验。复制一串短短的神秘代码分享给小伙伴,就可以跨设备秒速同步配方哦 >w<! - 🤖 全自动盯盘与刷新:借助 Android 无障碍服务完成屏幕截图、槽位识别、模拟点击刷新与游戏内悬浮窗展示。一旦刷出你心心念念的目标配方,立刻自动停手 + 高亮提示 + 短震动反馈,安全感拉满啦!
- 🎯 聪明又省心的位置校准:默认采用两段式自动校准,也支持全屏手动拖框与方框边缘自动吸附。首次定位或重设时,会先弹出可视化预览让你确认“咱有木有看准”,确认无误后就会按当前屏幕分辨率牢牢记住位置档案啦 awa。
咱的截图服务、模拟点击和游戏内悬浮窗,统统都是通过系统标准的无障碍服务(TYPE_ACCESSIBILITY_OVERLAY)实现的,所以不需要额外去申请「显示在其他应用上层」的悬浮窗权限哦 owo!
Important
📱 Android 13 及以上系统的「受限设置」怎么破? 如果你是从浏览器或文件管理器直接安装 APK 的,系统出于安全策略默认会把无障碍开关置灰 QAQ。别慌!按下面两步就能解开啦:
- 先进入本应用主界面顶栏的**「自动刷新」引导页,点击「打开本应用信息页」**。
- 在系统应用详情页的右上角菜单(或页面最底部)中选择「允许受限设置」,然后再去系统无障碍设置里,就能愉快地开启「KazeFactor 自动刷新」啦!
Tip
🔋 防杀后台小贴士 部分定制系统在切入游戏后会偷偷清理后台服务 -w-。强烈建议在系统设置里把咱的省电策略设为**「无限制」,并在最近任务列表里给咱加个小锁**,这样刷因子才不会中途掉线哦~
- 准备配方:在主应用里捏一套新配方,或者用好友分享的口令码导入目标配方哒。
- 召唤悬浮球:进入「自动刷新」页面,确认无障碍服务已连接,点击**「开启悬浮窗模式」——这时候屏幕左上角就会蹦出一个可爱的「风」**字悬浮球啦 awa!
- 进入游戏界面:启动《元气骑士》,手动进入联机模式的「挑战因子」配置界面,并务必打开挑战因子开关(确保 4 个槽位显示为具体的因子图标,而不是四个大大的问号
????哦)。 - 设定参数开刷:点击「风」字悬浮球展开控制面板,选好目标配方、调整期望刷新频率(支持
1~10 次/秒,受限于系统无障碍截图的限流机制,实测最快大约在2.8~3.0 次/秒),点击**「开始自动刷新」**就可以啦。 - 首次确认预览:如果是第一次在当前分辨率下运行,会弹出一个全屏确认预览界面。帮咱核对一下画框位置和识别出的 4 个因子名字对不对,点击**「对,开始」**,咱就会保存好位置档案并开始全速帮你刷因子啦,坐等命中震动即可 >w<!
咱在项目里内置了全部 59 个普通挑战因子 的完整数据与像素图标,它们的分类是这样滴:
| 因子类别 | 数量 | ID 范围 | 代表性因子举例 |
|---|---|---|---|
| 😈 大恶因子 | 6 | id 1~6 |
双倍快乐、元素异常、脆皮、人海战术、双领主、细胞分裂 |
| 👿 中恶因子 | 14 | id 7~20 |
武器过热、劣质药剂、闪现的敌人、坚强的敌人 等 |
| 😣 小恶因子 | 8 | id 21~28 |
精神的敌人、坏运气、能量衰弱、冷却翻倍 等 |
| 😐 中性因子 | 15 | id 29~43 |
跑起来的敌人、天赋选择+1、硬壳守护、巨大化 等 |
| 😊 小良因子 | 7 | id 44~50 |
天降神兵、驯兽师、复活苏生、神灯 等 |
| 🌟 大良因子 | 9 | id 51~59 |
无限能量、特卖日、越战越勇、配件大师 等 |
📜 槽位刷新潜规则: 游戏里的 4 个槽位并不是完全随机乱刷的,而是严格遵循固定的 17 种合法类别序列,外加 11 组互斥因子冲突规则哒:
- 第 1 槽:只会出
大恶/中恶/小恶 - 第 2 槽:只会出
中恶/小恶/中性 - 第 3 槽:只会出
小恶/中性/小良/大良 - 第 4 槽:只会出
小良/大良
(注:以上硬核数据均整理自 元气骑士中文维基 - 挑战因子,感谢维基大佬们的无私奉献 awa!)
如果你也是开发者小伙伴,欢迎来看看咱的内部构造!在这块咱可是下了不少功夫的呢 OwO~
- 开发语言:Kotlin 2.2.10(Java 11 字节码)
- UI 框架:Jetpack Compose (BOM 2026.02.01) + Material 3 + Navigation Compose 2.10.2
- 异步与状态:Kotlinx Coroutines 1.9.0 + StateFlow
- 数据持久化:Jetpack DataStore Preferences 1.2.0 + Kotlinx Serialization JSON 1.8.0
- 构建工具链:Gradle 9.8.2 + Android Gradle Plugin (AGP) 9.5.0
- 系统版本要求:
- 配方管理与口令码分享:Android 8.0+ (minSdk 26)
- 屏幕识别与自动刷新:Android 11+ (API 30+),因为依赖了
AccessibilityService.takeScreenshot啦 - 目标与编译 SDK:API 37
为了不让代码变成一坨烤冷面,咱采用了清爽的三模块分层架构。最酷的是,识别算法 (core-engine) 与领域逻辑 (core-domain) 都是纯 Kotlin JVM 模块,完全脱离 Android 设备也能直接在电脑上秒跑全量单元测试哦 >w<:
KazeFactor/
├── core-domain/ # 纯 Kotlin JVM 领域层(0 Android 依赖,干净清爽!)
│ ├── model/ # 因子、类别、17 种槽位约束、配方与因子数据库模型
│ ├── rule/ # 规则引擎(R1~R6 校验与自动修正)与穷举概率计算器
│ └── codec/ # 口令码编解码(Varint、去易混 Base32、CRC-8/MAXIM)
│
├── core-engine/ # 纯 Kotlin JVM 识别与自动刷新引擎(仅依赖 core-domain)
│ ├── image/ # ArgbImage 内存像素表示与面积平均缩放、裁剪、合成
│ ├── vision/ # 掩膜模板匹配、两段式自动校准、手动边缘吸附、开关检测、位置档案与快速核验
│ └── loop/ # 截图/点击抽象接口、多候选展开决策(Decision)与自动刷新状态机(RefreshEngine)
│
└── app/ # Android 客户端模块(依赖 core-engine 与 core-domain)
├── data/ # 配方、引擎参数与位置档案的 DataStore 持久化仓库
├── domain/viewmodel/ # 主应用各界面 ViewModel
├── ui/ # 配方列表、配方编辑、口令码分享与权限引导界面
├── overlay/ # 悬浮窗(小球/面板/运行中/命中)与全屏手动位置引导、确认预览
└── service/ # 无障碍服务、HardwareBuffer 截图器、GestureDescription 点击器与窗口生命周期宿主
OpenCV 原生库虽然好用但是还不够酷也不够轻便!所以咱自己用纯 Kotlin 手搓了一套轻量又精准的图像处理与状态机管线喔!(期待夸夸和摸摸头ww)
- 掩膜像素差模板匹配:
直接从
assets/factors/icons/加载原始图标,按各因子的实测显示尺寸系数与当前屏幕缩放动态生成模板;匹配时仅对不透明像素(alpha >= 200)计算 RGB 三通道平均绝对差,并结合槽位类别约束提前剪枝候选集。针对长得像双胞胎一样的易混图标(比如**「天赋选择+1」与「天赋自助餐」**),还会在高对比度差异像素上执行二次凝视比较,绝不认错人哦 owo! - 模糊槽位组合展开(
Decision): 万一某个槽位因为画面干扰出现了多个近似候选(Ambiguous)咋办?咱的决策器会将该槽位展开为笛卡尔积,先过滤掉违反 17 种槽位类别序列、重复或互斥冲突的非法组合,再逐一对照目标配方判定。如果所有合法可能都没命中,就果断继续刷;如果全都命中,就安心停机;只有在结论出现分歧时才会标为不确定(Uncertain)并停下保护现场哒。 - 两段式自动校准与手动边缘吸附:
- 自动校准(
Calibrator):第 1 段先在 1/4 缩放分辨率下快速搜索标题旁的帮助图标并保留前 5 个候选;第 2 段利用挑战因子面板左右竖条与横向边框的亮度跳变梯度,进行抛物线亚像素插值与最小二乘拟合,通过残差检查(<= 1.5 px)与 4 槽位验证筛选出真正的锚点。 - 手动吸附(
Snapper):遇到画面非等比拉伸或奇葩分辨率导致自动校准没通过时,玩家只需在冻结截图上大概拖动一下 4 格轮廓,算法就会对 16 条槽位外框边缘的截断梯度进行分步搜索与逐边覆盖率检查(每条边覆盖率>= 0.9),还支持横纵独立缩放系数呢! - 位置档案与快速核验(
CalibrationProfile/ProfileVerifier):首次校准或重设位置后必须经过玩家确认预览才会落盘保存;之后每次启动,只需比对挑战因子开关区域的参照像素块(距离<= 15)及首帧槽位有效性即可秒速开刷,不用每次都全屏大海捞针啦~
- 自动校准(
- 绝不手滑的状态机安全保护(
RefreshEngine): 咱的原则是**「宁可停手,也不误刷」**!遇到无法识别的槽位或画面异常时,会乖乖停手不会触发点击;每次点击刷新后,必须确认 4 槽因子组合真的发生了变化,才允许进行下一次点击;如果你有在中途切出游戏窗口回QQ、拉下通知栏,或者出现连续 3 次识别失败、连续 3 次点击画面无变化、达到总次数上限时,引擎都会乖巧地自动暂停哦 -w-。
想自己拉代码下来跑跑看或者改改玩?没问题,安排 OwO!
- Android Studio(需支持 AGP 9.5.0+)
- JDK 17+(工程配置已禁用 Gradle 工具链自动下载,直接使用本地 JDK 即可哒)
- Android SDK API 37
git clone https://github.com/FuturelessWindchan/KazeFactor.git
cd KazeFactor
# 运行全量单元测试(领域层 85 项 + 识别与状态机引擎 73 项 + 应用层 6 项,共计 164 项测试!)
./gradlew :core-domain:test :core-engine:test :app:testDebugUnitTest --console=plain
# 构建 Debug APK
./gradlew assembleDebugNote
🔧 维护小备忘:运行时因子数据位于 app/src/main/assets/factors.json,而领域层单元测试使用的副本位于 core-domain/src/test/resources/factors.json。如果后续要修改因子定义,记得两边要保持同步更新哦 awa~
本项目源代码、以及 assets/logo 下的美术资产均采用 CC BY-NC-SA 4.0(知识共享 署名-非商业性使用-相同方式共享 4.0 国际)许可协议开源。
项目中包含的以下游戏美术资源与实机截图版权归凉屋游戏(ChillyRoom)所有,不适用本项目的 CC BY-NC-SA 4.0 开源协议:
app/src/main/res/drawable/与app/src/main/assets/factors/icons/下的 59 个挑战因子图标app/src/main/assets/recognition/下的界面识别锚点与问号模板core-engine/src/test/resources/screenshots/下的实机测试截图
详细使用限制请参阅仓库根目录下的 ICON_LICENSE.txt。
- 🏠 凉屋游戏 (ChillyRoom):感谢带来这么好玩的《元气骑士》!
- 📖 元气骑士中文维基:提供详尽的挑战因子分类、槽位规律与冲突规则数据支持。
本工具仅通过 Android 系统标准无障碍接口执行屏幕图像识别与模拟点击,
不修改、不读取游戏内存或其他数据,亦不包含任何联网功能。
本工具仅供个人学习与技术交流使用,祝大家地牢探险愉快 OwO!