文章目录
- 从哪里开始 How do I get started?
- Dalamud 插件例子
- Dalamud 底层探究
- XIVLauncher 启动器
- 在哪里寻找帮助 Where do I ask for help?
- 如何热重载插件 How do I hot-reload my plugin?
- 如何调试插件,甚至游戏?
- 如何在编码过程中使用 How do I use FFXIVClientStructs in my own code?
- 译者的结语
原文来自 https://goatcorp.github.io/faq/development#q-how-do-i-get-started
如果您有英语原文阅读习惯,推荐您直接阅读原文!
从哪里开始 How do I get started?
主要的 XIVLauncher 和 Dalamud 系统建立在 C# 上,因为这个语言高可用、遍历、稳定;
建议你做的许多事情也可以尝试移植到 C# 上,除非你做的工作需要通过 native code 来控制机器运行。
想要开始编写 Dalamud 插件,建议您使用 Visual Studio,当然 JetBrains 的 Rider 同样不错。
Dalamud 插件例子
插件允许你和游戏进行 交互、添加功能、修改功能。
您需要尊重这条准则 https://goatcorp.github.io/faq/development#q-what-am-i-allowed-to-do-in-my-plugin
否则您的仓库将不被保证可以 进入主仓库,这样做的同时也规避了 Square Enix 对您插件的风险评估
这是不被推荐制作的插件 https://goatcorp.github.io/faq/development#q-why-do-you-discourage-certain-types-of-plugins
您需要先熟悉 Git / GitHub,建议选择一个模板 clone,然后根据你的想法进行修改、拓展!
- https://github.com/goatcorp/SamplePlugin
- https://github.com/karashiiro/DalamudPluginProjectTemplate
- https://github.com/lmcintyre/PluginTemplate
当您需要将插件打包,可以手动编译,也可以通过 DalamudPackager:
- https://github.com/goatcorp/DalamudPackager
当你的插件准备测试 / 发布时,提交 PR 到 Dalamud 插件主库。注意,请将测试插件仍然放在测试文件夹中!
- https://github.com/goatcorp/DalamudPluginsD17
Dalamud 底层探究
Dalamud,国服称卫月框架,通过 XIVLauncher 加载入游戏,你可以在这几个链接获取更多 Dalamud 本体信息:
- Dalamud 源码 https://github.com/goatcorp/Dalamud
- Dalamud 资源 https://github.com/goatcorp/DalamudAssets
- Dalamud API ★ https://goatcorp.github.io/Dalamud/api/index.html
XIVLauncher 启动器
感谢开源工作者!这玩意同样也是开源的,可以自动将 Dalamud 加载入游戏,十分方便(划掉
- https://github.com/goatcorp/FFXIVQuickLauncher
在哪里寻找帮助 Where do I ask for help?
这是一条不可能显示出来的内容,请自行查看原网站!
译者:可以去找找汉化 / ACT插件开发交流群,部分群还是有插件开发讨论的
如何热重载插件 How do I hot-reload my plugin?
从 API 4 / Dalamud 6 版本开始,Dalamud 就支持热重载了,请:
- 打开 Dalamud 设置 > 实验性 > 开发插件位置
- 添加插件所在文件夹 或 插件本体 DLL
- 如果添加的是文件夹,那么里面的所有 DLL 都会被尝试加载
如何调试插件,甚至游戏?
你需要把调试器附加到游戏,默认游戏是有反调试保护的。
在游戏中输入 /xldev 显示开发者界面,启用 AntiDebug 即可把你的调试器附加到游戏上。
要使得调试功能完整,请把 Attach to 设置为 both and,这会保证你的调试器对游戏和插件都可用!
这个功能只是为了支持调试插件,如果你做其他事情将不会获得任何支持。
如何在编码过程中使用 How do I use FFXIVClientStructs in my own code?
FFXIVClientStructs 同样是个开源项目,为 C# 和逆向工程师提供了游戏数据、类的接口。
在 .csproj
中添加如下
<Reference Include="FFXIVClientStructs">
<HintPath>$(AppData)\XIVLauncher\addon\Hooks\dev\FFXIVClientStructs.dll</HintPath>
</Reference>
或者右键点击 VS 中的项目,点击 “添加”,然后把程序集引用到这个路径。
这里粗略翻译一下意思,等我尝试以后再重新翻译一遍,或者麻烦各位可以在评论区留言~
译者的结语
这是 Dalamud 插件开发白皮书的第一章,后面还有关于更多更新、限制、开发指南、逆向工程的知识,请关注支持原文作者,谢谢~