Dalamud 完全指南:FFXIV 插件框架如何打通游戏数据、界面覆盖与原生 Hook
【免费下载链接】DalamudFFXIV plugin framework and API项目地址: https://gitcode.com/GitHub_Trending/da/Dalamud
Dalamud 是《最终幻想XIV》(FFXIV)的插件开发框架,核心能力是让第三方插件读游戏数据、Hook 游戏原生函数、在游戏画面上叠加自定义界面。如果你是想找插件用的玩家,或是想给 FFXIV 写第一个插件的开发者,这一篇就是入口。
Dalamud 是什么:FFXIV 插件框架的定位
一句话:输入是一个实现了IDalamudPlugin接口的 C# 插件程序集,输出是在游戏进程内运行的代码,可以访问游戏内数据、注册/控制台命令、绘制悬浮层。与只做界面美化的工具不同,它提供的是完整的游戏互操作层:Excel 表格数据、内存签名扫描、函数 Hook、聊天与事件流,插件拿到的不只是画布,而是游戏本身。README.md 里对它的定义是“提供游戏数据访问与原生互操作的插件开发框架”。
四个核心能力:从数据访问到插件管理
直接读取游戏 Excel 数据
插件通过IDataManager拿到 Lumina 的ExcelModule,按行类型读取游戏内任意数据表,不解析内存、不改文件。接口定义见 IDataManager.cs,注释里明确写着插件可以按需使用。
用内存签名扫描定位游戏函数
SigScanner.cs 按字节签名在游戏主模块里搜索函数地址,并把结果缓存到cachedSigs目录,二次启动直接读缓存。这是框架跟游戏版本“赛跑”的机制:客户端更新后签名失效,重新扫描即可。
在游戏画面上绘制覆盖层与完整窗口
界面层基于 ImGui,绑定代码在 imgui/Dalamud.Bindings.ImGui/ 目录,包含两百多个生成的绑定文件。框架自身的窗口也是用同一套画的,比如插件安装器、控制台、性能分析窗口,都在 Dalamud/Interface/Internal/Windows/ 下,可以直接当用法参考。
插件生态:加载、进程内通信与自动更新
统一的能力出口是 Dalamud/Plugin/Services/ 下的四十多个服务接口(客户端状态、物品栏、小地图、通知等);插件之间调用走 Dalamud/Plugin/Ipc/ 的进程内 IPC,互不直接引用程序集。PluginListInvalidationKind.cs 把列表变更分成加载、卸载、手动更新、自动更新四种,更新逻辑是框架内建而不是插件各管各的。
它怎么跑起来:从注入到插件框架的三层
按 README.md 里的组件表,启动是一条固定流水线:Dalamud.Injector(C#)对目标进程做 DLL 注入 →Dalamud.Boot(C++)把 .NET 运行时加载进游戏进程,或者改写进程入口点来完成同样的事 →Dalamud(C#)核心框架接管,逐个加载已安装插件。另外还有一个独立的 DalamudCrashHandler/ 崩溃处理进程负责异常时的信息收集。玩家不需要关心这条链,它由启动器统一驱动。
一个完整场景:把游戏数据做成画面上的悬浮层
- 背景:你在副本里想实时看某项数据(比如队伍成员状态),不想反复打开系统界面。
- 操作:新建插件,实现
IAsyncDalamudPlugin,在LoadAsync里从IDalamudPluginInterface取到IDataManager,读目标 Excel 表;再用UiBuilder注册每帧绘制回调,在画面上画一个小窗口。 - 结果:悬浮层随游戏帧同频刷新,数据直接来自游戏本地文件,客户端更新后内容自然同步;不需要插件自己去抓内存。
上手指南:从零到第一个插件的 4 步
普通玩家路线:
- 安装 XIVLauncher(官方推荐的唯一入口,它负责 Dalamud 的依赖管理与加载)
- 进游戏后打开插件安装器(框架内置窗口)
- 搜索并安装目标插件
- 启动游戏,插件自动加载,无需手动干预
开发者路线:
git clone https://gitcode.com/GitHub_Trending/da/Dalamud之后在 Windows 下运行仓库根目录的generate.cmd生成 CMake/Visual Studio 工程;SDK 版本由 global.json 锁定为 .NET 10.0.0(允许小版本向上滚动)。文档入口:README.md 的“Plugin development”一节、docs/index.html(指向官方 API 文档站)、index.md 的 API 说明索引。
开始之前要知道的边界
- 仅支持 Windows 上的 FFXIV,核心项目标记了
EnableWindowsTargeting - 框架版本跟随游戏客户端,签名与地址解析依赖具体版本号(当前核心版本见 Dalamud/Dalamud.csproj 中的
DalamudVersion) - 许可证为 AGPL-3.0-or-later,闭源分发受限
- 官方 README 建议不要脱离 XIVLauncher 手动运行框架,依赖管理容易出坑
- 仓库声明不接受生成式 AI 撰写的贡献,提 PR 前注意
下一步做什么
玩家:装好 XIVLauncher,进游戏打开插件安装器,按需求搜索安装。开发者:克隆仓库、读一遍官方 API 文档,然后用IAsyncDalamudPlugin+IDataManager写出第一个最小插件,从只读一张 Excel 表开始。
【免费下载链接】DalamudFFXIV plugin framework and API项目地址: https://gitcode.com/GitHub_Trending/da/Dalamud
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考