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

XFEWarframe

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

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

API 实现与兼容性状态

服务端使用 C#/.NET 和 XFEExtension.NetCore.ServerInteractive;WinUI 3 管理端独立运行。没有 JavaScript 引擎、Node 子进程、上游 HTTP 代理或 WebView。对照上游提交 aafde8476edd91275de0f30bffe4cf79f4cfc81c。

路由覆盖

309 条普通 GET/POST 路由与 23 条正则路由均已接入原生处理器,pending = 0。网页路由按要求排除;/cdn/ 和 /:id/dynamic/ 别名不重复计数。17 条较小控制器标为 ported,315 条仍标为 partial,表示具有业务实现,但完整上游分支和所有客户端版本的行为等价性尚未验证。332/332 是入口实现覆盖,不是全游戏完成率。

完整清单由当前源码编译后生成:JSON、CSV。EveryRegisteredRouteDispatchesWithoutMissingImplementationOrUnhandledException 会逐条调用全部入口,在有效账户和独立状态下检查不出现 500/501。它不替代各 API 的正常业务用例。

已有 C# 业务实现

模块 实现范围
主机与账户 HTTP/TLS、gzip/zlib、16 MiB 解码上限、Whirlpool/PBKDF2、自动注册、nonce、封禁/改名/改密、Android Google 令牌校验与注册
库存与个性化 图鉴驱动物品获取、槽位、余额、导入导出、现代与部分旧版配装、指挥官/漂泊者/Kahl、飞船与个人房间、花园和装饰
任务与成长 任务经验、星图、掉落、轮次/缓存奖励、赏金、突击/警报/裂隙/入侵、遗物、集团、扫描、收藏奖励、段位、任务链奖励与邮件
周期玩法 Nightwave、Kahl、Calendar/Hex、Circuit、Duviri、Descent、深层科研、世界轮换、Ghoul/Plague Star 活动与配置的活动目标
经济与装备 市场/集团/商人/Baro/Varzia/Darvo、礼包、登录奖励、制作/加速/取消、装备材料、孵化/烙印/魅影、出售/交易/赠礼、MOD/紫卡/赋能/极化/专精/Incarnon
伙伴与舰队 模组武器、Moa/Hound、感染伙伴、宠物状态、资源提取器、Railjack 舰员/残骸/研究/融合
Helminth/Nemesis 喂养、吞噬/加速、移植、振奋、源力石安装/拆除、Lich/Sister/Coda 的生成/战斗/击杀/转化/配方/历史
氏族与联盟 成员/等级/权限、邀请、联盟、研究、房间、装饰、染料、金库、广告、跑酷排行榜、活动进度与奖杯
社交与统计 好友/忽略/头像、HTTP 匹配会话、资料、个人与氏族统计、排行榜、Ollie 邮件、异步助战
数据与管理 PublicExport/15 种语言、纹理/缓存本地文件、HTTP Arbiter、上游 custom API、WinUI 管理 API、Cheat 配置与账户/装备/任务编辑

奖励、材料、货币和跨账户交易通过同一存档事务提交。失败会回滚;邮件、每周领取、重复任务上传、部分任务阶段等具有领取记录或请求回执。制作取消恢复原装备与其配置,不重造丢失经验的替代品。制作蓝图受预留检查,不能在任务完成前售出或交易。

验证结果

  • 128 项 .NET 自动化用例通过,包括全部入口分派、成功与失败路径、跨账户权限、重复请求、数据重启恢复及共享元数据不被修改。
  • 23 项真实 ServerInteractive HTTP 检查通过,覆盖压缩登录、鉴权、库存写入、世界状态、每周奖励、重复解锁、文件字节、无网页、日志脱敏和正常退出。
  • WinUI 保留原生 TitleBar、Mica、Per-Monitor V2 DPI 和按工作区计算的初始尺寸;本轮同步 API 状态展示。没有完成全 UI 自动化回归。

复现:运行 scripts/Test.ps1、scripts/Smoke-Test.ps1、scripts/Export-Coverage.ps1。测试均使用独立临时状态,不使用正式玩家存档;HTTP 脚本默认独立编译当前源码,支持 -ServerPath 验证发布包。TRX 位于 artifacts/test-results/core-tests.trx,HTTP 报告位于 artifacts/http-smoke-*/results.json。

依赖条件与已知边界

  1. 尚未完成真实 Warframe 客户端的登录→飞船→任务→结算→重连验证,也没有逐一验证所有历史版本。旧版奖励表/蓝图变更、配装和档案序列化、任务特殊副作用等仍需要对照流量补充用例;不能宣称所有版本完全兼容。
  2. IRC 已内置在 C# 服务器中,覆盖频道、私聊、社交通知、名单与会话生命周期;支持 2026.08.19.11.06 原生握手及 nonce/token,其他原生版本的未校验兼容入口限本机 TLS,详见 游戏内通讯。NRS 和 UDP Hub 的实时服务仍需外部提供;没有可用 HubServers 时,Hub 分配返回 503。
  3. Android 登录需要配置 GoogleClientIds 并访问 Google 公钥服务。测试覆盖注入身份提供者的账户流程和无效令牌;真实 OAuth 账户授权尚未联调。缺配置返回 503,无效令牌返回 400。
  4. 游戏客户端、纹理、平台缓存文件不随包分发。GameAssetRoot 配置的文件不存在时返回 404。当前二进制响应读入内存,尚未实现大缓存流式传输/Range 下载。
  5. 世界生成器覆盖主要常驻周期玩法与 Ghoul/Plague Star,未自动重建上游所有历史限时活动的每个配置开关。管理员可通过 /control/v1/world 提供具体 Goals/Alerts 等内容。氏族周常奖励接口按当前上游实现生成奖励;上游未完成的额外周常协议不由服务器凭空补造。
  6. 配装及部分任务结果/Helminth 振奋等沿用客户端提交数据的协议,不构成服务端完整反作弊系统。历史排行榜当前保留实现中的日/周/活动排名语义,没有完整赛季归档数据库。
  7. 单进程 JSON 快照存档支持原子提交和上一版备份,不等同上游 MongoDB 的全库迁移。大型存档、多实例并发和生产规模性能尚未验证。

维护约定

对照上游 controller、service、模型默认值、版本分支、响应和副作用编写迁移逻辑。只返回 200、空对象或仅登记路径不算业务实现。某些上游本身就是固定应答的接口(例如 Steam packs 回调和道场分配 fallback)保留其语义,不产生额外奖励。

新增路由需要同时接入 GameEngine.Execute 与 RouteCatalog。多对象修改使用 StateStore.Update;物品/货币差额使用 Inventory.Combine。外部 Google 网络验证放在存档锁外。清单状态不应仅因入口测试通过而从 partial 升为 ported。

世界、掉落、旧版配方等元数据由 Import-WorldData.ps1 解析静态 TypeScript 字面量生成,禁止执行上游脚本作为运行时后端。更换上游提交或 PublicExport 版本后,需要重新生成数据、运行验证并重新评审兼容性。