Releases: jing-hy/EndfieldModController
Release list
v0.9.5
本版修复
闪退:两套 DLSS5 抢同一条 NGX 链路
开启 DLSS5 后游戏可能几十秒内静默退出(没有崩溃弹窗、也没有崩溃转储)。原因是旧版「喂帧组件」
dlss5-feed.addon64 没有被自动停用,与当前方案 renodx-dlss5 同时去 hook NGX。
本版修正了自动停用的判定:当程序目录与禁用目录里各有一份时,现在会真的把多余那份清掉
(保留一份、可还原),两套 DLSS5 不会再并存。
Mod 下载(新功能)
- 粘贴网址批量下载(一行一个、并行执行);能解压的(zip / 7z / rar)自动解压进 Mod 库并识别角色;
- 支持香蕉网(GameBanana)页面地址:自动换成真实文件直链,并带出封面、作者与版本;
- 访问不上时提示检查 VPN;速度过低时提示开加速器,而不是只报失败;
- 按内容识别压缩格式(有些下载直链不带文件名,以前会被误判成「需手动解压」而白下);
- 每个 Mod 文件夹里写入
download-info.json(来源网址、下载时间、作者、版本); - 封面图会存进 Mod 文件夹,Mod 库卡片直接显示预览图;
- 进度条显示总进度与实时速度;支持暂停 / 继续 / 终止;
- 下载中关闭程序会先确认;入库成功后自动清理源包与临时封面。
界面
- 统一卡片观感(最外层保留虚影,嵌套卡片平面化);Mod 库页改为分区卡片;
- 设置页新增「依赖清空重新下载」(红色):还原游戏本体 + 清空运行数据与随包资产,然后自动重装依赖。
设置
- 新增「下载代理」:VPN / 加速器只对浏览器生效时,填它的本地代理地址即可让本程序也走代理(填完立即生效)。
v0.9.4 —— RabbitFX 洗清 · 跑通即自动撤回预警 · 湿润效果修复与旗袍的崩溃根因(#10 #11)
本版修复的反馈:#10 · mod问题 与 #11 · 湿润效果修复,UID mod问题2(同一批现象,见第 1 节);另有一条来自 QQ 群的「某个皮肤包导不进去」(第 3 节)。
一、修好了「跟湿润效果修复 / 庄方宜旗袍一起用就崩、或模型不出来」(#10 #11)
根因是我们自己造成的:0.9.2 之前,程序在生成「给游戏加载的那份 Mod 配置」时,会把 Mod 里要塞进游戏着色器的汇编文本误当成 ini 控制流,把其中的 endif 整行删掉(拿修复前的旧实现真跑,实测:RabbitFX.ini 的 endif 67 → 5(删 62 行)、湿润效果修复 11 行、庄方宜两份 CutoutMask.ini 各 4 行)。汇编不闭合 ⇒ 显卡着色器编译器当场崩(nvgpucomp64),或者让剔除遮罩失效、模型干脆不显示。
- 生成逻辑在 0.9.2 已修;本版再补上自动体检:打开管理器时如果发现你那份「给游戏加载的配置」是被旧版本改坏的,会按你 Mod 库里的原件自动重新生成,并在自检里写清是哪个 Mod、为什么。
- 你的 Mod 库一直是安全的:我们只改给游戏加载的那份副本,库里原件从来没有被改过(本版也把这条做成了明确的判定:万一是库里的原件受损,只如实报告、绝不自动改库)。
二、原来那 12 条「覆盖同一批资源」不是冲突,而且以后不会再报
「(重要前置)湿润效果修复」是个通用效果前置包(它给 25 个角色各配一张 wet_map),跟每个皮肤都有资源交集是它的设计使然,不是两个 Mod 抢资源。本版起:
- 实测跑通过的组合,它的静态冲突提示会自动消失 —— 只要这套 Mod 真的进得去游戏(正常退出,或存活 ≥ 2 分钟),以后不再提示"覆盖同一批资源",自检里会写「另有 N 条…以前跑通过、已忽略」。
- 同理,之前"这套组合以前崩过"的提示也会自动撤回:同一套组合后来跑通了,那条记忆就被移出,下次启动不再弹。
判据是"确实跑通"而不是"没检测到崩溃" —— 静默闪退(进去几十秒进程就没了)不算成功,记忆会留着,免得把有效预警误删掉。
三、某个皮肤包"导不进去"(QQ 群反馈)
一个名字里带 rabbitfx 的皮肤包(莱万汀 as 2B)导入后在界面上完全不出现 —— 它被误判成"依赖"藏起来了。本版修好归类判据(名字像依赖 且 自己不带换装资源,才算依赖包),真依赖包照旧不出现在 Mod 列表里。
四、RabbitFX 结案:不再自动屏蔽
上一个版本把 RabbitFX 列进了「已知有害依赖」并自动不加载。那个判断的依据,正是第 1 节那个我们自己的 bug 造出来的(它的着色器汇编被删了 62 行 endif)。修好之后实测:带着 RabbitFX 进游戏,渲染一切正常 ⇒ 本版移除这条禁令,它随皮肤正常按需加载。
五、其它修复
- 崩溃判定的两条链路判据不一致:以前"正常退出"也可能被报成「崩溃判定:CrashSight 记录到异常」,还会连带挂上"Mod 资源冲突"的归因,把人引去折腾 Mod。现在统一为只有真的上传了崩溃转储才算崩,弹窗文案也改成「检测到崩溃(CrashSight 上传了崩溃转储)」/「未检测到崩溃(正常退出)」。
- 公告与异常状态预警支持版本区间:每条公告可选
min_version/max_version—— 两个都不填 = 所有版本都能收到(安全预警走这条);两个都填同一个版本号 = 只有装了那个版本的人看得到。critical预警同样受这个限制,避免老公告越积越多。 - 清掉了遗留的探针:原来有两处「每帧」自增的诊断计数(
MC_Probe.ini与控制器产物controller.ini的[Present]),改成每 5 秒记一次;并退役了一对早期排查专用的探针段。
已知问题
- RTX 40 系及更早显卡用不了 DLSS5 神经渲染 —— 这是 NVIDIA 的支持范围问题(面板会显示「成功NR帧 0」+
0xBAD00001),不是装坏了,等驱动放开即可用。 - #5(问题合集)仍然开着:里面还有待复测的部分。
- 库里若手动放过多份 RabbitFX:程序只启用其中一份(作者在发布页写死过"多个实例会导致异常行为与游戏崩溃")。
v0.9.3 —— 修好「修复后仍有缺失」与「EFMI d3d11.dll(注入用)缺失」+ Mod 备份开关(含上一批 v0.9.2)
上一批(v0.9.2)的改动 —— 这次一起发布
v0.9.2 当时只更新了源码、没有单独发 Release,所以从 v0.9.1 用过来的人,下面这一批是这次才拿到的:
- 修掉一个"会改坏你的 Mod"的 bug(查庄方宜水墨旗袍时定位到的)
sanitize_ini_control_flow()以前会把Pattern/InsertDeclarations段里 shader 汇编文本中的endif当成 ini 控制流删掉。那段if_nz…endif是要插进 shader 的汇编、不是 ini 的逻辑;删掉后汇编不闭合,游戏启动几十秒后崩在显卡着色器编译器(nvgpucomp64)。现在只删真正的 ini 控制流 —— 库里那份 59 行的 ini 不会再被改成 55 行。 - 「皮肤 Mod」总开关语义重做:EFMI 的
d3d11.dll始终注入(实测不注入游戏直接起不来),这个开关现在只表示"一个皮肤都不加载"。 - 依赖自动处理:按需激活 + 去重 + 内外优先级;判据不再把「注释里提到的名字」当成引用(旗袍那句 isolation 声明曾把 RabbitFX 误激活 ⇒ 崩在着色器编译器);已知会导致崩溃的依赖(RabbitFX)自动不加载 —— 库里的文件照留,只是不放它进
Mods,日志里写明原因。 - 随包组件被换过时自动按基线重新展开(以前只提示,得自己删
runtime重下)。 - 崩溃归因更准:插件自己记下的崩溃(例如显卡着色器编译器)压过静态推测的「Mod 资源冲突」;启动前那个风险弹窗不再把「崩溃记忆」说成「Mod 冲突」。
- NRStyle 相关的自动改写与"是它导致崩溃"的断言已整段删除(实测它不是崩因)。
- 崩溃包 / 诊断包新增
runtime-inventory.txt(文件名 + 字节数 + sha256 + 是否偏离基线)。 - 设置页 15 个开关补上滑块样式;Mod 备份目录可在设置里自选(留空 = 数据根下的
mod-backup\)。
修好了「点几次『修复』都不管用」的四个判据
来自反馈者发来的诊断包与截图:界面一直停在 「修复后仍有缺失」,每次启动都弹 「发现缺失文件:EFMI d3d11.dll(注入用)/是否自动修复?」 —— 点了"继续"也修不好。
- Poser 安装记录被误判成"缺失"
上游向导写的plugin\poser-install.json带 UTF-8 BOM,我们按utf-8读会直接解析失败、被当成"根本没装过",于是每点一次「修复」就重装一遍 Poser(plugin\poser-backups\每点一次多一个目录,向导每次还都回一句"安装记录已同步")。现在按utf-8-sig读,不再重复安装。 - 「修复」链路补上 XXMI 签名密钥
全新环境里 XXMI 的Security.user_signature可能是空的(我们把它拉起来生成配置后随即关闭,签名没来得及落盘;而写注入库时只在"私钥文件缺失"才会补这一对)。这时我们写进去的注入签名,会在 XXMI 下次启动时被它自己重新生成的密钥作废 → 它弹Failed to validate unsecure settings!→ 点 Reset 后注入列表被清空,表现就是**"修了又坏"**。「修复」现在和一键启动一样,先补签名、再写配置。 EFMI d3d11.dll(注入用)的判据死结已解
以前要求<XXMI>\EFMI\d3d11.dll已经存在才算找到 EFMI;而刚解压好、还没被 XXMI 部署过的环境里,这个 dll 只在Resources\Packages\XXMI\。于是永远判"缺失":启动时弹框、点"继续"也修不好(修复链里没有任何一步能让它变"存在"),这个 dll 也永远进不了注入库(皮肤 Mod 因此加载不了)。现在会回退到包目录,那条早就写好却"永远走不到"的回退真正生效了。- 诊断包里的
active_importer不再永远显示None
注入链摘要读错了配置段(正确段名是Launcher),会让每次排查都被自己的摘要往"XXMI 没配好"上带。
新增:Mod 备份总开关
设置页 ① 最上面新增 「Mod 备份」 滑块,默认开(与原来的行为一致)。
- 关掉后 一个字节都不再备份,连备份目录都不会被创建;那一行的「Mod 备份目录」与「选择…」会变灰。
- 已有的备份一个都不会删 —— "只增不减"这条不变,开关只决定"以后还备不备份"。
- 重新打开后,库里还没备份过的 Mod 会在下次扫描 / 一键启动时补上。
顺带修正
- 依赖的"已知有害"闸门判据:被**主动跳过(不加载)**的依赖,不再同时被报成"依赖缺失",日志不再自相矛盾。
相关反馈
v0.9.1 —— 面板改为发 Mod 原键 · 诊断包一次抓全 · ini 生成即体检
本版修好的问题
1. XXMI 界面里不出现"终末地"的启动按钮(我们自己的 bug)
ensure_injections() 里有两处写成了 log=log,而该函数没有名为 log 的变量 → 抛出 NameError、被外层 except 吞成一条 WARN → 于是 ensure_xxmi_game_folder() 从未执行,XXMI 配置里的 active_importer / enabled_importers 一直是空的 ⇒ XXMI 界面里不出现启动按钮。
2. 生成的 controller.ini 里可能混入"3DMigoto 不认"的行
新增 ini_lint:按 3DMigoto 源码规则体检生成的 ini —— 变量名合法性、初值能否被 %f 完整解析、是否重复声明、赋值左值是否已声明、[Key*] 键名与 run 目标是否存在,并配了 3 例测试(含"体检器真能抓住这个回归"的反向验证)。生成即体检。
3. elif 不是 3DMigoto 的关键字
[Present] 里的分档判断改成每档一个独立的 if … endif(每个 if 都有自己的 endif)。
4. EFMI 的 skip_early_includes_load 出厂默认值
纠正为 0 并配 config_initialization_delay = -1。原来那个纠正函数挂在已废弃、全库无人调用的 launch_migoto_loader() 上,所以从来没生效过;现在挂到「一键启动」必经的 launch() 上,并补了回归测试。
5. 诊断包 / 崩溃包改为"一次抓全"
- 运行时每 5 秒采样:进程模块清单、相对上次新出现的模块、工作集内存、句柄数、线程数、两个关键日志的行数;
- 崩溃包新增:完整
Player.log、官方崩溃转储目录、Windows 事件日志(崩溃事件带出错模块名)、EFMI 的d3dx.ini/d3dx_user.ini与 Mods 清单、XXMI 日志与配置、整个 EFMIMods目录(小文本全收、大资源只登记含 sha256 的清单)。
面板(整合 Mod 快捷键)
改为直接发送 Mod 自身的按键(读 actions.tsv 的 original_keys 列,例如 → ← ↑ ↓ Backspace),并以扫描码形式发送。
不再锁 Mod 的原键 —— 所以你按 → 照样能换装,面板点「外套」也会发同一个键。
⚠️ 已知问题(如实说明):在《终末地》里,合成输入(SendInput)会被游戏进程屏蔽 —— 面板上的遥控点击目前不会生效,而手按物理键一切正常。我们已经实测排除了 ini 写法、加载时机、命名空间、键位冲突、单击/长按、修饰键等所有已知方向(连"发真实键 + 扫描码"也同样被屏蔽)。
面板界面本身是可用的(作为快捷键对照表与含义提示),这条通道我们会继续想办法。
其它
- 面板操作不再自动关闭 ReShade 页面(原来点一下就会退出 overlay,想在面板里连点几个开关根本做不到)。
v0.9.0 —— 一个面板收掉所有 Mod 快捷键 · Mod 备份仓 · DLSS5 判据定案
v0.9.0 —— 一个面板收掉所有 Mod 快捷键 · Mod 备份仓 · DLSS5 判据定案
1. 统一 Mod 控制面板(启动页「整合 Mod 快捷键」)—— 本版起默认开启
Mod 自带的按键各不相同(←、Ctrl+5、Alt 0…),装多了必然记混。现在:
- 打开开关 → 各 Mod 自带的按键被统一锁住,控制面板随 exe 自动装进 ReShade 真正读取的目录;
- 进游戏按
Home→ 切到 ModeController 页:按角色分栏、开关都是滑块、每项都写着它控制什么(变量名 / 推测含义 / 原来的快捷键); - 面板装不上时程序拒绝锁键并说明原因 —— 不会出现"键被锁死了、入口却不存在";
- 不想用就关掉(或者原本就习惯记 Mod 按键的),一切恢复原样。
2. 修掉面板的两处硬伤(来自实测反馈)
- 按面板上的开关会连带触发别的插件:旧协议的合成键用了
F1..F12,正好撞上 DLSS5 的 F6(NR 开关) 与 第一人称的 F7 —— 那些插件的按键检测不看修饰键,所以点一次面板等于替它们按了一下。协议键已整体挪到F13..F24(标准键盘上不存在这些键,谁都不会绑)。 - 点一下面板就自己关掉:旧实现每次操作后都会关闭 ReShade 面板,想在面板里连点几个开关根本做不到。已去掉。
- 另加自检项
panel:hotkey_conflicts:以后真有快捷键冲突会直接报出来,不用你自己撞。
3. Mod 备份仓(默认放在程序旁边的 mod-backup)
- 只要库里出现新导入的 Mod,就自动整份复制进去(纯复制、不打包 —— 打开就能看见、能直接拷回去);
- 只增不减:程序从不删除、从不覆盖里面任何文件,想清理只能你自己动手;
- 第一次启动会把库里现有 Mod 备份一遍(后台跑,不挡界面),之后只有新 Mod 才会动它。
4. DLSS5:判据定案 + 按显卡代次处理
同一批反馈里"DLSS5 没出帧"的根因终于定案了 —— 不是装坏、不是配置、更不是驱动:
- DLSS5 神经渲染首发只支持 RTX 50 系(英伟达已表示后续扩展到 40 系,但目前驱动/运行库尚未放开)。40 系机器上 NGX 会直接回
0xBAD00001(不支持该特性),面板永远「成功NR帧 0」; - 因此:非 RTX 50 系的机器,DLSS5 开关默认关闭;手动去打开会被拒绝并弹窗说明原因(省得你去折腾分辨率、驱动、重装 —— 那些都是白费功夫);
- 自检新增
dlss5:gpu_support,会直接写明你的显卡属于哪种情况;诊断包里的「DLSS5 前提」也按代次给出结论(不再笼统写"检测到 RTX 即可")。
5. 其它修复
- XXMI 路径留空时自动回落到内置(内置没有就自动下载),不再出现"找不到 XXMI"卡住;
- 修「重下 XXMI 之后终末地的启动按钮消失」:XXMI 退出时会把它内存里的配置整份写回、冲掉我们写的字段 —— 现在会在它运行期间拒绝写入、并在拉起它的前一瞬间补写 + 回读校验;
- 数据安全:生成控制器时的清理只删程序自己产出的
MC_*目录,你手动放进 Mods 的皮肤一律保留;Mod 库在任何情况下都不动; - 修「库里一个 Mod 都没有却报 Mod 冲突」:残留的旧
MC_*会被正确识别为残留并清理,不再误报、也不再因此让游戏进不去。
相关反馈(issue)
本版没有可直接对应的 issue —— 上面第 2、4、5 条修的都是 QQ 群 / 私信反馈的问题(其中 DLSS5 那条附带了两份诊断包与面板截图,已据此定案)。
#5(问题合集)按你的要求仍在挂起状态,未回复未关闭。
下载
EndfieldModController.exe—— 单文件,双击即用(数据根 = exe 所在目录,别放 Program Files 或临时目录);assets-bundle.zip—— 随包资产(NVIDIA 运行库等),首次启动会自动取,一般不用手动下。
v0.8.0 —— 冲突一键处理 + OptiScaler 自动移走 + 自带 DLSS 时停用喂帧组件 + 资产包镜像回退
本版修复的反馈:#8 · mod问题 · #9 · mod问题2(同一反馈者)—— 见文末「相关反馈」。
一、冲突可以一键处理了:每组冲突一个下拉框
启动前检测到 Mod 资源冲突、或游戏因冲突崩溃之后,弹窗右侧的橙色主按钮现在是「一键关闭其中一个(自行选择)」:
- 点了之后先关掉当前弹窗,再弹出「选择要保留的 Mod」;
- 里面每一组冲突各有一个下拉框(组里列出共享的资源标识),你每组选一个要保留的;
- 点「保留所选并重新生成控制器」→ 其余的自动取消勾选并重新生成控制器。
只改勾选,不会删除或移动你的任何 Mod 文件。
二、不再让"第三方注入器"和"多余的喂帧组件"悄悄让 DLSS5 失效
- OptiScaler(
WINHTTP.dll注入)会自动被移走:它会把进程里所有 NGX 调用截走(连游戏自带的 DLSS 一起),而它自己的神经渲染默认是关闭的(只做超分)—— 表现就是 DLSS5 面板「成功 NR 帧 0 / 最新 NR NGX 结果0xBAD00001」、看起来"根本没启动"。现在一键启动会在注入之前自动备份并移走它(被顶替的系统模块用原版补回),想留着它的话备份就在runtime\game_backup\ngx-conflict-<时间戳>\。 - 游戏自带 DLSS 时自动停用喂帧组件:终末地自带 DLSS,而喂帧组件(
dlss5-feed)本来是为"没有 DLSS 的游戏"准备的,留着会和游戏自己的 DLSS 抢同一条 NGX 链路 → 现在自检会把它停用(文件移到runtime\dlss5\_disabled\,可逆)。设置页新增开关「游戏自带 DLSS 时自动停用喂帧组件(可逆)」,默认开启,关掉后下次自检会自动放回。
三、找不到游戏目录导致的一连串问题
游戏装在扫不到的盘(例如 X 盘 / W 盘)时,以前会静默失败 → XXMI 界面里没有终末地的启动按钮、注入配置写不进去、乳摇自检还会误报"注入不完整"。现在 三层兜底:遍历 XXMI 里所有 importer 的游戏目录 → 从 XXMI Launcher Log.txt 里把 …\Endfield.exe 的路径捞出来 → 才做全盘搜索。失败不再静默(日志会写清原因),成功且"游戏位置"原本为空时会自动回填。
四、拿不到随包资产的老问题
一台数据根没有 assets\ 的机器上,自动补资产那条路只打 GitHub API,撞上限流(HTTP Error 403: rate limit exceeded)就彻底拿不到 —— 于是三个 addon、shader 标准头、两个 NGX 运行库全缺,表现为「缺失第一人称插件、修复也补不回来」。现在资产包下载先走网页 + 镜像线路(零 API 消耗),失败才回退 API;网页路线拿不到校验值时再补一次 API 只为取 sha256。
顺带修掉一个我们自己引入的问题:数据补写时可能落进 PyInstaller 的临时解压目录(退出即丢),现在一律写数据根。
五、Mod 库扫描的两处加固
- 整包放进库不再被算成两个 Mod(外层多包一层时会被当成"按角色分组",同一个 Mod 出现两个同名条目、还会同时进 staging);
- 内容相同的重复副本会在卡片上标注「⚠ 与「X」内容相同(重复副本)」—— 只标注,绝不自动删,要不要去重你自己决定。
六、其它修复与改进
- DLSS5 preset 不再每轮白报"需要修复"(判据与写入顺序统一:只看两项是否都启用;顺序只作为提示);
- 辅助 Mod 页:隐藏 UI / 改界面这类非皮肤小包有独立页签,与角色 Mod 互不影响(自动识别 + 可在卡片「⋯」里手动标记);
- 「一键还原游戏本体」现在会把第三方注入器一起移走(含 OptiScaler 的
winhttp.dll与它的.ini/.log),与系统System32完全一致的文件不会被动; - 诊断包新增「NGX 消费者」段(谁在接管 NGX、该看什么才说明 DLSS5 真在出帧)。
相关反馈
#8 · mod问题 / #9 · mod问题2(同一反馈者)
| 现象 | 结论 |
|---|---|
| 「庄方宜水墨旗袍 mod 互斥 / 不加载」 | 库页的「强行关闭角色 Mod 互斥」拨钮被打开了,于是两个覆盖同一批游戏资源的旗袍包同时进了 Mods(自检点名了 4 个独享标识相交),后加载的覆盖前面的 → 看起来就是"不加载"。本版新增的「一键关闭其中一个(自行选择)」就是为这种情况做的:点一下,每组冲突选一个保留即可 |
| 「一大批 Mod 显示识别=未识别」 | 是旧版(0.7.0 / 0.7.1)的已知 bug:早期发布版的 exe 漏带了角色表 characters.json,角色识别会退回内置的 18 条兜底表 —— 佩丽卡、秋栗、赛希、萤石、余烬、昼雪、洁尔佩塔这些都不在里面。0.7.3 起已修好,升级后重新扫描即可正常识别 |
| 「佩丽卡耳羽没了」 | 不是资源包坏了,那是这个皮肤自带的可切换部件:它的 ini 里 $ear 是持久变量(global persist),只有 $ear = 1 时才画 OL 装的耳羽;而这个值会被 d3dx_user.ini 记住。进游戏切到佩丽卡身上按一次 ←(左方向键)即可恢复(那个皮肤的按键是 → 外套 / ← 耳羽 / ↑ 眼镜 / ↓ 胸衣 / Backspace 头发)。"用别的 XXMI 启动就正常"也是同一个原因:两套注入环境各有自己的 d3dx_user.ini,里面记的值不同 |
| 「不闪退了但不知道湿润效果修复能不能用」 | 从日志看 12 次运行里只有 1 次真崩溃,原因是 0x887A0005 / 0x887A0006(显卡设备被移除/挂起,属 GPU/驱动层,不是 Mod 资源冲突)。「(重要前置)湿润效果修复」是通用效果前置包,要和配套的那个 Mod 一起启用才看得出效果;单独放不一定有可见变化 |
有后续问题直接在本贴回复或 Reopen 即可(附上诊断包);也可以加 QQ 群 1045239747(验证答案
jing_hy)。
v0.7.4 —— 乳摇角色数据自行拉取 + Mod 库保护(任何情况都不动你的 Mod 库)
一句话
这一版做了一件"以后不用等上游发版"的事(乳摇角色数据自己拉),外加一条数据安全红线:程序再也不会有任何情况动你的 Mod 库。
数据安全:你的 Mod 库是只读的
- 修掉一个可能删库的隐患:清理 staging 的流程是在「Staging Mods 目录」与「Mod 库」相同或互相嵌套时会把库里的 Mod 一起删掉(有反馈报过「重装的时候还把我 mod 都删完了,还好我备份了」)。现在程序检测到这种重叠会直接拒绝执行并告诉你该怎么改配置;此外逐项删除前还会再校验一次,任何情况都不会删除、移动或"整理"你的 Mod 库。
- 依赖组件只允许装进
<Mod 库>\_deps\—— 防止"清单里写个目录名就把你的 Mod 删掉"。 - 唯一会改动库的动作仍然是你自己在卡片「⋯」里点「移出 Mod 库」(移到
runtime\backups\mod-trash\,可找回)。
乳摇(SecondaryMotion):角色数据由管理器自己补
- 上游 Release 的角色数据落后于它的仓库 —— 例如 提弗洛斯(Typhoea)只在
main分支里,发行包里没有,所以你从 Release 安装后在游戏里对他就没数据。现在管理器每次启动后会在后台从仓库拉一次:只补你本地缺的角色,绝不动你调过的幅度/频率,也不碰你自己的presets\User.json。 - 24 小时节流、失败静默(不影响启动与首屏);来源可配:
config.json的sbm_data_source可以指向你自己 fork 的仓库,改完 push 即生效,不用等我们发版。 - 随包资产里的乳摇角色数据也一并升级到 20 条(含提弗洛斯)—— 因此本版
assets-bundle.zip与上一版不再相同,首次启动会自动重新拉取。
相关反馈(issue)
- 本版没有直接对应某个已开的 issue;本次的"删库"隐患来自群里/评论区的反馈(无 issue 编号)。
- 仓库里 #8(mod问题) 与 #5(问题合集) 里反映的「切换键不生效」属于同一类现象,其根因(程序曾把 Mod 自带热键统一改写成
VK_F24)已在 v0.7.3 修掉 —— Mod 作者写的快捷键与它自带的控制菜单现在直接生效。若你在 v0.7.4 上仍然遇到"Mod 不加载 / 切换键无效 / 某个部件(如佩丽卡耳羽)消失",麻烦在 #8 里补一句现象并附上诊断包(设置页最上方「一键导出诊断包」),我会继续跟进。
其它
- 给上游提了一条建议 issue(把提弗洛斯的角色数据带进正式版 Release):
Sp1cHless/Arknights-Endfield-Plugin-Secondary-bodyphysics#5。 - 自研"控制器面板"(ReShade addon)仍未完成;当前策略是不改写 Mod 自带热键,等面板做好再谈接管。
v0.7.3 —— 拖入 7z/rar + 拼音识别 + 归属预识别/更换 + 关闭互斥拨钮 + 恢复 Mod 快捷键 + QQ 群反馈
一句话
这一版把「拖进来的 Mod 能不能直接用」这条路补齐了:支持 .7z / .rar、认得出拼音与社区昵称、认不出角色就直接弹窗让你定归属;同时修好你反馈的快捷键 / 控制菜单失效,并新增了强行关闭角色互斥的拨钮与 QQ 群反馈途径。
拖入导入
- 支持
.7z与.rar(此前只支持.zip):解压链 = 项目内 7-Zip → PATH 上的 7z → Windows 自带 bsdtar 兜底;加密包、缺分卷、坏包都会给出可读原因,且不会在library\里留下半成品目录。 - 认不出角色的包现在会直接弹出「角色归属确认」窗口。此前只弹一句"角色归属已识别",弹窗永远不出现 —— 根因是导入后拿到的是导入前的旧 Mod 列表缓存,于是永远判定"已识别"。
- 拖进来的包如果连
.ini都没有(多半拖错了文件),会明确提示"可能不是有效的服装 Mod 包"。
角色识别
- 中文拼音:
zhuangfangyi、Zhuang_Fang-Yi、zhuang fang yi、luoxi、alieshi这类写法都能认(下划线 / 连字符 / 空格 / 大小写都不影响)。 - 社区昵称:「杰哥」= 洁尔佩塔。
- 预识别:名字里同时出现多个角色、分不清主次时,按"和哪个角色相关字数最多"先猜一个并把它预选在弹窗下拉里 —— 但卡片上的黄字「角色待确认」照旧显示,必须你点一下保存才算数。
- 「⋯」菜单新增**「更换 Mod 归属…」**(写进该 Mod 的
mod.meta.json,分组与同角色互斥随之改变);菜单顶部顺带显示"归属:<角色>"。 - 顺带修掉一个老问题:发布版 exe 里原本根本没带角色表 —— 33 位干员、社区昵称与拼音在发布版全部失效,一直在用 18 条内置兜底表(跑源码时看不出来)。
Mod 库
- 新增拨钮**「强行关闭角色 Mod 互斥」:便于部分同角色但不冲突的 Mod**(例如一个改服装、一个只改贴图)。打开后勾选不再自动取消同角色的其它 Mod,生成控制器时也不再按角色去重(前端 + 后端两处一起放行)。
- 去掉库页那段很长的"修复工具"说明;「修复」按钮恢复可点 —— 上一版是我按"工具还没展开到
runtime\modfix\"错误置灰的,而随包assets\modfix\里那份一直都在,点下去会自动展开。
快捷键 / 控制菜单(你反馈的那条)
- 不再改写 Mod 自带快捷键:Mod 作者 readme 里写的键、以及它自带的控制菜单(例如庄方宜那套按
ALT 0打开)现在都直接生效。 - 此前程序会把每个 Mod 的
[Key*]统一改写成VK_F24(实测莱万汀 6 处、庄方宜 34 处),交给"控制器面板"驱动 —— 但那个面板尚未完成(addon 既没随包,也没装进 ReShade 真正读取的目录,它只在d3d12.dll所在目录搜 addon),结果就是键被改死、入口却不存在。 - 接管能力保留在
config.json的hotkey_takeover(默认false),等面板做好再切回。
反馈与诊断
- QQ 群:1045239747(加群验证答案
jing_hy)—— README 顶部、说明页、崩溃弹窗、诊断包弹窗都写上了。 - 设置页最上方新增**「一键导出诊断包」:导出后弹窗给出 GitHub issue 与 QQ 群两种反馈方式,并要求附上现象**(什么时候出现的、你点了什么、屏幕上看到什么)—— 诊断包里没有"你做了什么"这一层,缺了往往要多来几轮。
- 程序内所有"网址 + 打开按钮"改成直接点网址打开(顺带发现崩溃弹窗那个「打开 issue 页」按钮从来没绑定过事件,点了没反应)。
其它
- 各类失败原因(解压、依赖、修复工具缺失)都会落进
runtime\launch.log,不再是只写在内存里。
已知问题
- #5「问题合集」(ReShade 面板里看不到 DLSS5 / 第一人称标签)仍在跟进中,等新的诊断包 —— 有结果会在这条 issue 里更新。
v0.7.2 —— 修好「修复」按钮 + 日志包带设备信息 + 文件被反复删会提醒
本版修复的反馈:#6 · 发现缺失文件:DLSS5 ReShade.ini(含 [endfield-enhancer] 段) EFMI d3d11.dll(注入用),之后修复还是缺失
修好了一个"点了也没用"的按钮(#6)
有反馈说自检报「缺失文件:DLSS5 ReShade.ini / EFMI d3d11.dll」,点「修复」之后还是缺失。
查下来是「修复」这条链路比「一键启动」少了两个关键动作:
- 不生成 XXMI 的配置文件 —— 这个配置是 XXMI 首次运行时才写出来的;没有它,注入库就没地方写,于是永远停在
写入 XXMI 注入库失败: 找不到 XXMI Launcher Config.json; - 不补随包资产 ——
ReShade.ini与 DLSS5 的 shader 都来自资产包,资产没下下来时修复也就无从下手。
现在两条链路完全一致:修复会先生成 XXMI 配置、再补齐资产与运行时、最后写注入库;修复过程还会自动打开日志窗,每一步(含下载进度)都看得见。
日志包现在带设备型号
诊断包的 summary.txt 与崩溃包的 environment.txt 新增一段:
-- 设备与显卡(判断"是不是显卡不支持"看这里)--
CPU : AMD Ryzen 7 9800X3D 8-Core Processor(逻辑处理器 16 个)
内存 : 47.2 GB
系统 : Windows 11 Pro 26H2 (build 26300)
显示适配器 : 2 个
[1] AMD Radeon(TM) Graphics | 驱动 32.0.21042.62 | 显存 0.5 GB
[2] NVIDIA GeForce RTX 5080 | 驱动 32.0.16.1714 | 显存 15.9 GB
DLSS5 前提 : 检测到 RTX 显卡 → 具备 DLSS / DLSS5 神经渲染的硬件前提
这样一眼就能分清"他的机器是不是本来就不支持"(没有 N 卡 / GTX 老卡 / 驱动太旧)和"我们这边配错了"。(注册表在 Windows 11 上仍写着 "Windows 10",这里按 build 号纠正过。)
文件被反复删掉时会提醒你加白名单
关键组件(最典型的是 165 MB 的 nvngx_dlssnr.dll)很容易被安全软件当威胁隔离,表现就是"补好了、第二天又缺"。程序现在每次启动都会记一次这些文件在不在,满足三个条件才提醒:
- 它曾经就位过(从没装过 = 还没下载,不算);
- 连续两次启动都发现它不在;
- 同组还有别的文件在(杀软删的是单个文件;你自己清理/换版本是整片都没了)。
弹窗会列出具体是哪个文件、"已缺几次",并给出建议加入白名单的目录。
时机:挂在**「一键启动」上 —— 点了一键启动之后、在自检补齐之前**弹(那时"补了又被删"的现场最清楚);打开管理器时不弹,只在日志里留一行。
其它
- 换线路更聪明:某条镜像的 HTTPS 证书与当前网络返回的不符(加速器 / 运营商劫持)时,一次就跳过它并冷却 30 分钟,不再每次下载都白试一遍。
- 修复过程中不再"只写一句修复中就卡着"。
完整测试清单见仓库 TESTING.md 的 O 段(编号 81–90);安装与排查见 详细文档。
v0.7.1 —— 补上三处自动路由 + 诊断包更全面
v0.7.1 —— 补上三处「网络受限时不该失败」的地方 + 诊断包说清楚
修复
-
自更新检查 / Poser 组件 / 公告预警通道,都补上了「网页 + 镜像」自动路由。
这几处原先只走 GitHub API:匿名额度用完(60 次/小时)时会分别表现为「检查更新失败:GitHub API 额度用尽」、「Poser 一直缺失、下载不了」、「收不到公告」。
现在它们和其余组件一样,走网页路线(零 API 消耗),直连不通时自动换镜像线路。(本程序绝大多数检查与下载本来就走这条路、不受额度影响;这次只是把漏掉的几处补齐。)
诊断包更全面了
导出的诊断包 summary.txt 现在多出三段,专门用来定位「ReShade 里没有 DLSS5 / 第一人称」这类问题:
-- XXMI 注入链摘要 --:active_importer是不是EFMI、extra_libraries实际列了哪些 DLL、每个文件是否存在、签名长度、密钥文件是否存在(不含任何密钥内容);-- DLSS5 shader 文件清单 --:关键 shader 文件的字节数(0 字节会标出)、iMMERSE 目录清单、ReShade.ini的搜索路径、preset 的Techniques=行;-- DLSS5 运行库指纹 --:nvngx_dlss.dll/nvngx_dlssnr.dll与随包基线是否一致。
说明
- 验证:
python -m pytest tests -q→ 145 passed(含 6 例专测上面的回退)。 - 公告 / 预警内容由仓库里的
alerts.json决定:改完 push 即生效,不需要更新程序。