XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEWarframe

【WinUI】基于Warframe游戏本体的公开服务器以及安装器

公开
关注 0 Fork 0 Star 0
UTF-8

共用 MOD 配装与原版资源缓存

管理员端与玩家端共用 Client/SharedUI/ModLoadoutView.cs。从战甲、主武器、副武器、近战武器、兽型宠物或已建立配装的显赫武器详情,选择 SelectorBar 的「MOD 配装」。关联的荣耀等显赫武器仍从宿主战甲的「显赫武器」进入。兽型宠物使用两排共十个普通 MOD 槽。

编辑操作

  • A–C 分别保留草稿,已购买额外配置的装备开放 D–F;选择其他配置不会立即写入存档。
  • 将持有的卡片拖入槽位进行安装;槽位之间拖动会交换卡片;拖回下方库存或使用右键菜单卸下。也可先选择槽位,再点击库存卡片安装。
  • 库存使用分页、完整卡面文本搜索和 MOD、光环/姿态、特殊功能、赋能筛选。同一个 MOD 实例不会在同一配置中复制为两个实例。
  • 「保存配装」只写当前配置的 MOD 槽和名称。其他配置、外观及不在本页面支持范围内的额外槽保留;未升级卡安装时,从持有数量中转为一个等级 0 的独立 MOD 实例。
  • 未保存修改保存在编辑模型中。「重置输入」丢弃当前配置的草稿。库存或权限发生外部变化时,沿用装备详情页的冲突处理。

两个桌面端使用相同的拖动规则;服务端保存时再次验证库存归属、槽位锁定、装备兼容、重复类型以及版本。明确关闭 loadout 配装权限后,玩家端隐藏配装页的数据与操作,旧 exalted.mods.* 接口也不能绕过撤销。exalted 权限用于建立缺失的关联显赫武器;没有显式 loadout 设置的旧权限配置沿用 exalted 值。

搜索规则

搜索覆盖整个可用卡片库,再分页显示;名称、资源路径、原版效果说明、等级、消耗、类型、稀有度及极性均可检索。原版中英文卡面文本固定在 Server/data/editor/mod-search-text.json,来源 URL、获取时间和原文件 SHA256 随索引保存;运行时无需访问网络或游戏。紫卡只索引当前指纹中实际存在的正负词条,不把所有可能词条当成当前效果。

复合元素按“该元素或任一组成元素”匹配:「病毒」匹配病毒、冰、毒;「腐蚀」匹配腐蚀、电、毒;磁力、辐射、爆炸、毒气同理。以空格或逗号分隔的独立关键词须同时匹配,例如「病毒 暴击」只显示包含冰/毒/病毒且具有暴击描述的卡片。输入框候选与卡片库采用相同规则。索引建立、检索、筛选与排序在后台执行,取消过期请求并显示加载动画。

原版卡面与技能图标

配装页使用完整原生卡面缓存,已缓存的 PNG 在游戏关闭后仍可显示,不以单张物品插画冒充完整卡面。缓存以卡片类型、完整指纹(含等级/紫卡属性)、游戏版本、语言和卡面形态分别识别。库存与已装备卡片共用这份缓存。

技能移植的输入框与候选列表显示名称及原版技能图标。图标通过随项目固定的 Public Export 图片清单获取并缓存;网络读取、JSON 解析、缓存查询和图片解码采用异步方式,页面显示加载状态。

首次尚无卡面时,页面显示「等待原生卡面缓存」。点击「缓存原版卡面…」后,C# 组件直接为请求的资源与指纹创建临时原生 UpgradeInfo,调用原版 CardUtilitiesRedux 绘制,无需进入、浏览或滚动游戏 MOD 页面,也不修改库存或配装。

每帧在组件拥有的临时电影中排布 20 张卡,共用黑、白背景两次 GPU 读取,恢复透明度后并行编码与保存 PNG。绘制期间临时隔离其他电影的绘制及原版弹窗装饰线,防止提示框、人物和背景混入卡面;结束、取消或失败后关闭组件拥有的电影并恢复普通绘制。批量任务会临时占用游戏画面,完成后自动返回。只有透明外边距被裁掉,不重新绘制、缩放或替换卡片插画、边框、徽章和等级灯。

HTTP 请求按实际 UTF-8 大小组包(每次最多 200 项、64 KB),原生渲染仍以 20 张为一组。紫卡完整指纹支持 16,384 字符;导入存档中旧的狂怒赋能路径映射到当前客户端的原生资源。大量重复词条生成的超长紫卡名称限制在自身文本区域内,避免覆盖同批次其他卡片,指纹与存档保持原样。单张失败单独记录,不阻止剩余卡片渲染。

缓存位置:%LOCALAPPDATA%/XFEWarframe/VisualAssets。写入采用临时文件和原子替换,并校验 PNG 块、尺寸及 CRC。游戏原件和游戏存档不作为图片缓存写入位置。

当前验证边界

自动原生渲染要求 Bridge 1.4.7 或更新版本(当前打包为 1.4.9),仅为已审计的 2026.08.19.11.06 客户端和 DirectX 11 提供绑定。其他版本或 DirectX 12 不声明可用;已有离线缓存不依赖运行游戏。桌面端在缺少新组件时返回明确提示,不把所有绑定错误归因为 DirectX。

实机验证使用 D:\Warframe 副本,清单来自账号库存的只读副本。初期在隔离测试环境中验证,最终全量渲染直接在游戏登录前创建临时卡片,不登录、读取或修改正式账号,也不修改原始 Steam 游戏。验证清单包含全部持有 MOD/赋能及配装页使用的不同指纹,检查原生批量绘制、PNG CRC/透明度/完整边界,以及游戏关闭后两端实际 WinUI 图片控件的离线解码。报告保存在 artifacts/card-cache-validation-20261003/。原版材质、字体和卡片脚本直接来自客户端;不将 PNG 完整性检测解释为与另一张游戏截图的逐像素比较。

Public Export 没有完整的装备默认极性与全部 MOD 变体互斥信息。只有库存给出所有相关槽位极性时,服务端才执行精确容量上限校验;否则显示估算容量,避免把合法的原生配装错误拒绝。MOD 同类型重复被拒绝,但没有完整覆盖游戏内部的所有 Prime/变体互斥组合。当前拖动页面支持上述六类装备,不声明已经覆盖 Archwing、哨兵、机械伙伴、指挥官或航道星舰各自的特殊槽位。

吸回·超域

独立兽型宠物 MOD /Lotus/Upgrades/XFEWarframe/FetchOverdrive,在物品目录搜索「吸回」「300」或「Fetch」添加。添加即满级(5 级),基础消耗 7,使用原版吸回插画、金色卡框与技能极性。与原版吸回互斥;已安装原版吸回时先卸下。管理员与开启 loadout 配装权限的玩家均可在宠物详情的「MOD 配装」拖动安装。添加权限仍由物品添加开关控制。

使用 Bridge 1.4.9,在当前宠物的当前配置中装备后,将原生吸回触发器半径设为 300 米。拾取与数量结算仍由游戏完成;适用于游戏允许自动拾取且已经生成的掉落物,不代替交互机关、开箱、任务提示操作。卸下、切换宠物或切换未装备的配置会恢复触发器原来的半径。大库存分批扫描,每帧最多处理 512 张卡。

存档保留独立类型与 UID;向游戏发送时投影成原版吸回资源,加上专用指纹标记。普通吸回的名称、半径和卡面缓存不被改写。新卡面通过同一原生批量缓存流程生成,沿用已有吸回缓存不能冒充这张新卡面。

1.4.9 修复了 GetLoadOut():GetItem() 返回配装包装对象导致装备识别失败的问题;所属物品 ID 需要从包装中的 mItem 读取。2026-10-04 在 D:\Warframe 副本、隔离账号与幻影装置场景中,通过 C# 引擎测试接口生成真实能量球:约 25、100、299 米均拾取并增加 50 能量,310 米不拾取;普通吸回的实际原生半径为 13.5 米,10 米拾取、25 米不拾取。证据记录在 artifacts/fetch-game-validation-20261004/actual-pickup-evidence.json,可用 scripts/Start-FetchTest.ps1 和 scripts/Test-FetchGame.ps1 在独立测试会话中复测。

测试使用游戏自己的拾取与结算路径,不注入额外吸回技能、不直接添加能量,也不使用桌面、键鼠或电脑控制工具。测试场景需要解除其特定宠物 AI 暂停原因,并通过直接引擎移动保持测试角色活动;正式功能遵循游戏原有的 AFK 拾取限制。

本次验证覆盖真实临时服务器上的添加、搜索、配置独立性、互斥、卸下、玩家权限,以及两端实际 WinUI 配装页面和原生组件构建、自检。未启动或中断用户游戏;300 米实机掉落物拾取及新卡面的实机渲染仍未验收。原生接口已按本机客户端审计,不能用接口审计代替这一项实机效果验证。

本次验证方法

  • dotnet test Server/Tests/XFEWarframe.Tests/XFEWarframe.Tests.csproj -c Release:持有卡安装、库存扣减、配置隔离、旧显赫接口、权限撤销、非法保存与版本冲突。
  • dotnet test Client/Tests/XFEWarframe.Client.Tests/XFEWarframe.Client.Tests.csproj -c Release:安装/交换规则、锁定与容量、六种复合元素搜索、多关键词和完整库存搜索、PNG 像素裁切和损坏校验、缓存指纹及本机控制协议。
  • scripts/Smoke-Desktop.ps1:独立临时 API 和隐藏窗口,检查两端的战甲/荣耀配装保存、安装/交换/卸下、草稿保留、说明/元素搜索与候选一致性、异步请求取消、窄宽布局与权限关闭后的只读导航。不会启动、重启或控制游戏;不等同于显示器上的视觉或拖动手势验收。
  • 传入 -NativeCardManifest <清单路径>,同时检查普通、Umbra、Prime、紫卡、自定义卡和赋能的实际原生 PNG,通过两端 GameAssetImage/WIC/WinUI 离线加载,并监测首次触发的线程访问异常。此检查不调用游戏接口或下载卡面。