Skip to content

Latest commit

 

History

History
267 lines (186 loc) · 15.9 KB

File metadata and controls

267 lines (186 loc) · 15.9 KB
NTE DPS Toolkit

NTE DPS Toolkit

实时 DPS 伤害分析与战斗诊断工具 · 基于 Rust + egui,本机运行

中文 | English

官网 / 项目主页 →

License: AGPL v3 Commercial license available Platform Language UI Capture GitHub stars

关键词:NTE DPS Toolkit · DPS Tool · DPS Analyzer · DPS 伤害统计 · 实时伤害分析 · 战斗诊断 · 封包解析 · Npcap · egui


项目简介

NTE DPS Toolkit 是一个使用 Rust + egui 实现的 NTE 本地 DPS(每秒伤害)分析与诊断工具。它完全在用户本机运行,通过 Npcap 读取本机相关 UDP 流量,提取伤害、深渊事件和部分 GameplayEffect 统计,并在本地以图形界面展示总览、角色、技能、命中明细和深渊上下行线统计。仓库同时提供无 GUI 的 nte-core.exe,供第三方本机工具通过 stdio 集成同一套抓包和解析核心。

作为一款 DPS Analyzer(伤害分析器),它面向希望复盘战斗数据、优化输出循环和分析配队表现的玩家与研究者,提供实时统计、历史对比和深渊预测等工作流。

本项目为独立社区工具,与 NTE 游戏发行方、开发方、平台方或相关权利方无从属、授权、背书或合作关系


功能特点

  • 实时 DPS 统计:实时计算总伤害、DPS、命中数、受击统计和战斗时长。
  • 角色维度分析:按角色展示伤害、占比、命中数、DPS、受击统计、技能分类和可筛选命中明细。
  • 双时间口径:支持"扣除时停"和"现实时间"两种 DPS 时间口径;扣除时停仅使用原生插件读取的游戏权威暂停状态。
  • 目标 HP 字段保留target_hp_beforetarget_hp_aftertarget_max_hptarget_hp_percent
  • 技能与效果映射:解析并展示 GameplayEffect 映射、技能分类、ability_namedamage_nameattack_type
  • 深渊上/下行线统计:独立统计上下行线,保留重开、进入线路、通关和离开事件状态,并提供深渊怪物数值表查看。
  • 深渊预测:按上下行线估算清怪时间、按目标时间反推所需 DPS,并按波次展示静态 HP 占比。
  • Console 复盘面板:提供战斗时间轴、技能占比、解析质量和本地历史页;历史页可手动保存脱敏战斗摘要、查看详情、对比两条记录,并把历史队伍用于深渊预测。
  • 场地 Buff 归类:将 GA_CardTrigger_* / GE_AbyssCard_*_Damage 这类异境补给站可选场地 Buff 伤害归类为 深渊场地Buff,避免混入角色技能或创生花。
  • 抓包与回放:实时保存完整 Ethernet 帧到 logs/nte_raw_*.pcapng;支持导出解析后的 JSON、另存完整 PCAPNG,并导入 JSON / PCAPNG 进行 Debug 回放。
  • Debug 工具:查看封包端点、角色声明、解析结果和载荷预览;可编辑角色数据 res/data/characters/characters.json,打开/搜索/编辑并保存 NTE 加密 INI;提供资源覆盖率检查、自动诊断向导、网卡列表、服务端伤害校准开关等。
  • 可定制 HUD:自定义显示模块、最大角色数和小型 DPS 曲线,默认保持总 DPS、时间、总伤害和角色排行。
  • 自动持久化:透明度、深浅色主题、窗口置顶和服务端伤害校准设置保存到程序目录下的 config.json;旧版 %LOCALAPPDATA%\NTE DPS Tool\config.json 首次启动时自动迁移。
  • 快捷键Home 切换鼠标穿透;F12 打开/关闭包含 Packets、Resources 和 Diagnostics 的 Console。
  • 自动选网卡:根据 HTGame.exe 的活动连接自动选择网卡和本机 IP。

具体敌方目标识别与场景识别仍在研究中。


使用场景

  • 战斗复盘:记录单场战斗的总伤害、DPS 曲线和命中明细,找出输出循环的瓶颈。
  • 配队评估:按角色对比伤害占比与技能贡献,验证不同队伍的输出表现。
  • 深渊规划:用历史队伍 DPS 与静态怪物 HP 估算清怪时间,或反推达成目标时间所需的 DPS。
  • 数据研究:导出 JSON / PCAPNG 离线分析,或导入样本做可复现的解析回放与调试。

运行环境

  • 操作系统:Windows 10 / 11
  • Rust:1.85 或更高版本
  • 抓包驱动Npcap,建议启用 WinPcap API-compatible Mode
  • 权限:实时抓包可能需要以管理员身份运行

普通 GUI 使用只需要 Rust、Npcap 和仓库内的 res 资源。不需要客户端导出树、CUE4Parse、FModel、Python、Npcap SDK、资源导出 AES key 或 usmap。Console 的加密 INI 编辑器使用代码内置的稳定 INI 协议 key,不需要用户提供资源导出密钥。CLI 发行包只内嵌解析所需的核心 JSON,不包含 GUI 图片、字体或图标。


安装方式

git clone https://github.com/kongbaiz/nte-dps-toolkit.git
cd nte-dps-toolkit
cargo test
cargo run --release --bin nte-dps-tool --features gui

可选原生 NTE Mods Plugin

native/nte-mods-plugin 是仓库内可独立编译的 Windows x64 子模块,只包含 单 DLL 受限脚本加载器、固定 IPC 头文件和 Visual Studio 工程,不依赖 vcpkg 或客户端 SDK。 安装 Visual Studio 2022 的“使用 C++ 的桌面开发”工作负载后,可在仓库根目录运行:

# 在“Developer PowerShell for VS 2022”中执行
msbuild .\native\nte-mods-plugin\nte-mods-plugin.sln /t:Clean,Build /p:Configuration=Release /p:Platform=x64 /m

原始输出位于 native/nte-mods-plugin/x64/Release/dwmapi.dll,构建完成后会自动 同步到主程序统一读取的 plugins/dwmapi.dll。模块细节见 native/nte-mods-plugin/README.md

GUI 发布版会把 plugins/ 目录放在 nte-dps-tool.exe 同级并一并加入压缩包,其中 dwmapi.dll 是唯一的自定义 Windows 模块,nte-mods/*.nte 是由其直接解释的 NTE Script v4 程序。外部脚本可使用变量、持久状态、算术/位运算、 if/elif/else、有界 for range、类型化只读内存、China/Global SDK 一致的角色 读取 API、隐藏客户端 Offset 的 game.* 会话内置值及自定义 IPC 事件。实时抓包 会把 pre.*post.* 和普通脚本事件送入程序的共享事件管线;DLL 保留源码编译器、 VM、共享 Hook、边界校验和 capability 白名单。 在“控制台 → Mod 工坊”中打开“游戏内 Mod 加载器”后,程序会先显示第三方 Mod 风险与加载原理;启用按钮在 5 秒内保持锁定, 取消按钮和 Esc 可立即关闭弹窗。若同时安装了国服与国际服,可先选择需要管理的客户端。确认后,程序 只把 dwmapi.dll 安装到所选客户端中 HTGame.exe 所在目录;启用集合和脚本始终 保留在软件同级的 plugins/ 目录。DLL 通过当前用户注册的工作区路径读取脚本,并在 游戏运行期间监听保存和启停更改。编辑 nte-mods.enabled 可只加载 equipmentcombat-clock;配置只保留 nte_mod_set 1 时,DLL 会移除 Viewport Hook 并 关闭 IPC。更改 DLL 安装状态前必须关闭游戏;Mod 脚本可在运行时启停。 关闭选项会移除由本工具安装的副本。若目录里已有其他来源的 dwmapi.dll,程序会 保留该文件并报告冲突,不会覆盖或删除其他 Mod。


GUI 与本地 CLI Sidecar

正式 Windows 产物分为:

  • nte-dps-tool-windows-x64.zip:标准 GUI,资源内嵌,包含 plugins/dwmapi.dll 与受限 Mod 脚本,始终包含 F12 和完整诊断工具;
  • nte-core-windows-x64.zip:无 GUI 的本地 Sidecar,供第三方本机工具集成;
  • nte-dps-tool-windows-external-resources.zip:完整 GUI,res/ 资源外置,并包含 plugins/dwmapi.dll 与受限 Mod 脚本。

master 分支的自动构建会依次执行格式检查、编译检查、测试、Clippy 和 GUI/CLI 依赖边界检查。三个发行目录生成后,其中的所有 .exe 都会使用固定版本的 UPX 执行 upx -9,并在创建 ZIP 前通过 upx -t 完整性检测;下载的 UPX 官方压缩包也会先校验 SHA-256。GitHub Release 标题取自 Cargo.toml 的版本号(例如 v0.3.0),标签仍包含构建序号和短提交 SHA,以允许同一版本重复构建。Release 的“本次改动”会按时间顺序累计当前版本相对上一个版本构建标签的全部非合并提交,而不是只显示最后一次 push。

nte-core.exe 使用 JSON-RPC 2.0 over NDJSON,通过 stdin 接收请求、stdout 返回响应和事件。它不监听或开放任何网络端口;stdout 仅用于协议,日志写入 stderr。CLI 包不包含 GUI 图片、字体、图标或 GUI 依赖。协议、生命周期和调用方式见中文协议文档英文协议文档无第三方依赖的 Python 示例。CLI 与 GUI 发行和再分发均遵守本仓库的 AGPL/商业双授权。

构建 CLI:

cargo build --release --bin nte-core --no-default-features --features cli

使用方法

  1. 安装 Npcap 并启用 WinPcap API-compatible Mode
  2. 以管理员身份运行程序(实时抓包通常需要)。
  3. 启动 NTE 客户端(HTGame.exe);工具会根据其活动连接自动选择网卡和本机 IP。
  4. 在主界面开始实时抓包,程序会把通过当前 BPF 过滤器的原始帧写入 logs/nte_raw_*.pcapng
  5. 在总览 / 角色 / 深渊等页签查看实时统计;在 Console 历史页保存或对比脱敏战斗摘要。

开始抓包后,Console 可导入完整 PCAPNG 或解析 JSON,并使用与实时抓包相同的稳定解析流程;停止抓包后可另存当前完整 PCAPNG。


配置说明

应用配置自动保存到程序(exe)所在目录:

<程序目录>\config.json

包含透明度、深浅色主题、窗口置顶、服务端伤害校准等设置,无需手动编辑即可在下次启动时恢复。旧版本保存在 %LOCALAPPDATA%\NTE DPS Tool\config.json 的配置会在首次启动时自动迁移到程序目录(原文件保留不动)。原始抓包与崩溃日志同样写入程序目录下的 logs\,战斗历史写入 history\

资源目录结构:

res/
  data/characters/   角色配置
  data/skills/       GameplayEffect、技能、伤害名称和分类映射
  data/reactions/    环合反应和反应图片配置
  data/abyss/        深渊怪物静态表、数值表和字段中文名
  images/characters/ 角色头像
  images/attributes/ 属性图标
  images/font/       游戏伤害数字字体素材
  images/monsters/   深渊怪物头像
  images/reactions/  环合反应文字素材
  icons/             应用图标

程序会从当前目录或可执行文件上级目录查找 res。角色、属性、伤害数字、反应文字和深渊怪物图片会在编译时内嵌,作为外部图片缺失时的降级资源。


示例

界面截图

主界面 深渊统计
主界面 深渊统计
队伍命中明细 角色命中明细
队伍命中明细 角色命中明细
战斗时间轴 可定制 HUD
战斗时间轴 可定制 HUD

验证构建

cargo fmt --check
cargo check
cargo test
cargo check --bin nte-core --no-default-features --features cli
cargo test --no-default-features --features cli
pwsh -NoProfile -File scripts/verify_architecture.ps1

最后一条命令校验 GUI/CLI Feature、两个 Binary 的启用条件、GUI 可选依赖归属及 CLI 依赖树隔离。

依赖真实抓包的诊断测试默认忽略。需要运行时设置 NTE_TEST_CAPTURE=<pcapng-path>,再执行:

cargo test -- --ignored

常见问题(FAQ)

Q:抓不到任何流量 / 没有数据? A:确认已安装 Npcap 并启用 WinPcap API-compatible Mode,以管理员身份运行,并已启动 HTGame.exe。GUI 的 Diagnostics 页可运行自动诊断向导,逐项检查 Npcap 设备、活动连接、抓包状态、原始包写入和伤害解析状态。

Q:需要游戏资源导出 key、usmap 或 Python 吗? A:不需要。普通运行只依赖仓库内 res/ 与代码内置的稳定协议 key。

Q:历史记录会包含敏感信息吗? A:不会。Console 历史页"保存本次摘要"只写入脱敏统计(统计结果、角色/技能摘要、深渊上下行摘要、解析质量摘要),不包含原始包、payload、decoded text、IP、端口、本机路径或资源授权信息。

Q:深渊预测准确吗? A:预测基于静态怪物 HP 和所选队伍 DPS 估算,不包含无敌、转阶段、走位和机制时间,仅作参考。

Q:这是外挂吗? A:不是。本工具仅被动读取本机网络流量进行统计展示,不注入、不修改、不向游戏发送任何数据。


贡献指南

欢迎提交 Issue 和 Pull Request。提交前请注意:

  • 运行 cargo fmt --checkcargo checkcargo test 确保通过。
  • 请勿提交敏感数据logs/target/data/、本机抓包、完整载荷、授权资源路径、资源导出密钥、usmap 或完整解包数据不应提交到仓库、Issue、PR 或公开报告。
  • 资源导出、CUE4Parse probe、NTE_Assets 后处理等工具链已迁出到独立私有仓库 kongbaiz/nte-resource-exporter;需要更新 res/ 时,只同步必要的可分发资源文件。
  • 顶层 NTE_封包解析算法.md 是降敏后的维护摘要,只记录解析模块的公开设计边界;更细的样本、特征、偏移、函数名和抓包对照不应随公开仓库发布。

License

本项目采用双重授权(详见 LICENSING.md):

  • 开源授权 — GNU AGPL v3.0:你可以自由使用、修改和再分发本项目,包括商业用途。但根据 AGPL 的 Copyleft 条款:一旦你分发本软件、其修改版,或让用户通过网络(SaaS)使用修改版,就必须以 AGPL 公开完整的对应源码。简而言之——你可以商用,但不能用它做闭源产品或服务。
  • 商业授权:若需以 AGPL 不允许的方式使用(如并入闭源产品、提供不公开源码的商业托管服务),请向版权方单独获取商业授权——在仓库提交带 commercial-license 标签的 Issue,联系方式详见 LICENSING.md

第三方库、运行组件和资源文件保留各自许可和权利声明,见 THIRD_PARTY_LICENSES.mdNOTICE.md


NTE DPS Toolkit · DPS Analyzer & 战斗诊断工具 · 由社区维护,与 NTE 官方无关