ERNativeUI - 原生菜单框架

ERNativeUI - 原生菜单框架

一个共享的原生菜单框架,允许《艾尔登法环》模组在游戏真实的游戏选项界面中注册设置。

[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/headers/10767_1788124839.jpg[/img]

[size=5][b]为你的模组提供原生的 ELDEN RING 界面[/b][/size]

一个共享的菜单宿主。多个客户端模组。无覆盖层。

[url=https://github.com/Flammrock/ERNativeUI][b]GITHUB:源代码、SDK、文档和示例[/b][/url]
[url=https://github.com/Flammrock/ERNativeUI/releases/latest]完整的 WINDOWS SDK 和运行时发布版[/url][/center]

[quote][b]ERNativeUI 主要面向模组作者,是一个 SDK。[/b]

它让客户端模组能够添加原生菜单、设置、对话框、文本输入、颜色选择器和可配置的输入绑定,而无需再维护另一套相互竞争的 Elden Ring 界面钩子。

[b]玩家只需安装一个标准的 ERNativeUI.dll 宿主。[/b]如果某个模组将 ERNativeUI 列为前置要求,请从本页面的文件标签页下载宿主,安装一次,然后让所有兼容的客户端模组连接到同一份副本即可。[/quote]
[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711693-1080782593.png[/img][/center]
[center][size=5][b]一个原生宿主,多个客户端模组[/b][/size][/center]

ERNativeUI 拥有进程级的原生钩子,并安全地合并由相互独立的客户端 DLL 注册的界面。玩家获得一致的 native 体验;模组作者获得可复用的公共 API,而不必在每个项目中重新发现并维护相同的游戏内部机制。

[list]
[][b]看起来原生[/b] —— 使用 Elden Ring 自身的 GFX 控件、焦点、帮助文本、过渡、对话框和返回导航。[/]
[][b]协同工作[/b] —— 多个客户端模组可以通过一个共享宿主 DLL 提供菜单。[/]
[][b]为模组作者打造[/b] —— 稳定的 C11 二进制 ABI,外加友好的仅头文件 C++17 封装。[/]
[][b]对编译器友好[/b] —— 客户端无需导入库,也不跨 DLL 边界共享 STL、异常或分配器所有权。[/]
[][b]为兼容性而版本化[/b] —— 兼容的 1.x 宿主保留现有客户端所使用的先前发布的 1.x API 约定。[/]
[][b]考虑游戏更新[/b] —— 在安装原生钩子之前会验证签名和对象边界。[/]
[][b]开放且可复现[/b] —— 源代码、测试、示例、GFX 工具和逆向工程笔记均公开。[/]
[/list]
[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711381-1678734545.png[/img]
[i]来自多个客户端模组的设置,合并到 Elden Ring 原生的游戏选项页面中。[/i][/center]

[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711733-1600560216.png[/img][/center]
[center][size=5][b]功能[/b][/size][/center]

[b]原生控件[/b]
[list]
[]按钮和嵌套子菜单[/]
[]开关和有界滑块[/]
[]内联选项和原生弹出式选项列表[/]
[]带占位符、已确认值回调和可配置长度的 TextInput[/]
[]带原生调色板和自定义 RGB 编辑器的 ColorPicker[/]
[/list]
[b]菜单和页面[/b]
[list]
[]向受支持的内置配置页面添加条目:游戏选项、镜头选项、显示、声音、网络、键盘/鼠标和图形[/]
[]创建客户端自有的子菜单[/]
[]自动容量检测和分页[/]
[]原生下一页、上一页和返回行为[/]
[]自动页码编号和可自定义的提供者子菜单标题[/]
[/list]
[b]对话框、本地化和配置[/b]
[list]
[]原生模态提示框,支持仅关闭、单按钮或双按钮布局[/]
[]底部或居中的对话框放置[/]
[]运行时检测 Elden Ring 所选的 Steam 语言[/]
[]本地化的 ERNativeUI 导航标签,附带英文回退[/]
[]提供者自有的 INI 存储和公共输入分配编解码器[/]
[/list]
[b]玩家可配置的输入绑定[/b]
[list]
[]注册手柄、键盘和鼠标操作[/]
[]在 Elden Ring 原生的按钮设置和按键绑定界面中显示这些操作[/]
[]当玩家激活某个操作时接收回调[/]
[]观察分配和清除更改,以便客户端模组可以持久化它们[/]
[/list]
[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711733-1600560216.png[/img][/center]
[center][size=5][b]原生控件实际效果[/b][/size]

[img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711464-1865244305.png[/img]
[i]原生文本输入,包括占位符和已确认的客户端自有值。[/i]

[img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711504-820309910.png[/img]
[i]从客户端模组设置中打开的 Elden Ring 原生调色板。[/i]

[img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711562-900853344.png[/img]
[i]带有可配置按钮和放置位置的原生模态对话框。[/i][/center]

[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711733-1600560216.png[/img][/center]
[center][size=5][b]原生输入绑定[/b][/size][/center]

客户端模组可以定义具名操作,而无需硬编码按键。ERNativeUI 通过 Elden Ring 的输入流程进行监听,在正确的原生设置界面中显示分配,并将重新映射的更改报告回客户端。

[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711613-1854610592.png[/img]
[i]客户端定义的操作集成到按钮设置中。[/i]

[img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711651-997659594.png[/img]
[i]同一系统支持原生键盘和鼠标分配。[/i][/center]

[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711693-1080782593.png[/img][/center]
[center][size=5][b]面向玩家:安装一次共享宿主[/b][/size][/center]

[b]要求[/b]
[list]
[]Windows x64 版 Elden Ring[/]
[]Steam 发行的 Elden Ring[/]
[]Mod Engine 2 或其他兼容的 DLL 加载器[/]
[]禁用 Easy Anti-Cheat 的离线游玩[/]
[]明确支持所安装 Elden Ring 可执行文件的 ERNativeUI 发布版[/]
[/list]
[b]1. 从本页面文件标签页下载当前文件。[/b]

[b]2. 将其解压到你的 Mod Engine 2 配置中的以下目录:[/b]
[code]mod\ERNativeUI[/code]
[b]3. 在现有的 external_dlls 列表中,将宿主添加到普通 ERNativeUI 客户端模组之前:[/b]
[code][modengine]
external_dlls = [
    "mod\\ERNativeUI\\ERNativeUI.dll",
    "mod\\SomeClientMod\\SomeClientMod.dll"
][/code]
[b]4. 通过 Mod Engine 2 启动 Elden Ring。[/b]

只能加载一份 ERNativeUI.dll。ERNativeUI 附带的示例 DLL 是可选的演示,并非普通客户端模组的依赖项。

该软件包还包含可选的 GFX 文件,用于扩展页面容量以及匹配的 TextInput/ColorPicker 呈现。编辑器具有可用的原生回退方案,但已经满页的页面(如镜头选项)需要扩展的 GFX 容量才能显示提供者内容。替换相同 GFX 路径的其他模组可能会与这些可选文件冲突。

[url=https://github.com/Flammrock/ERNativeUI/blob/main/docs/getting-started/player-installation.md][b]阅读完整的玩家安装指南[/b][/url]

[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711733-1600560216.png[/img][/center]
[center][size=5][b]面向模组作者:构建原生界面,而不是另一个覆盖层[/b][/size][/center]

完整的 GitHub Windows 软件包包含宿主、公共头文件、CMake 包、可构建示例、工具和文档。

[list]
[][b]C 项目:[/b]包含 erui.h 以使用严格兼容 C11 的 ABI。[/]
[][b]C++ 项目:[/b]包含 ERNativeUI.hpp 以使用仅头文件的 C++17 封装。复制头文件时请将 erui.h 放在其旁边,因为该封装会在内部包含它。[/]
[][b]无需导入库:[/b]客户端模组在运行时从宿主协商版本化 API 表。[/]
[][b]玩家只需一个依赖项:[/b]将 ERNativeUI 声明为前置要求,而不是捆绑私有或重命名的宿主副本。[/]
[/list]
[center][url=https://github.com/Flammrock/ERNativeUI][size=4][b]在 GITHUB 上打开 ERNATIVEUI[/b][/size][/url]
[url=https://github.com/Flammrock/ERNativeUI/blob/main/docs/getting-started/first-mod.md]构建“HELLO, TARNISHED!”[/url] | [url=https://github.com/Flammrock/ERNativeUI/blob/main/docs/README.md]阅读文档[/url] | [url=https://github.com/Flammrock/ERNativeUI/tree/main/examples]浏览示例[/url][/center]

[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711733-1600560216.png[/img][/center]
[center][size=5][b]兼容性和支持[/b][/size][/center]

[list]
[]每次游戏更新后,请使用明确声明支持你所安装 Elden Ring 可执行文件的发布版。[/]
[]Mod Engine 2 是主要支持的加载器。[/]
[]Solid Uncapper 2.3 共存已在 GitHub 上记录的精确 Elden Ring 2.7.0.0 矩阵和范围内得到验证;在任一模组或游戏更新后,请勿推断兼容性。[/]
[]Seamless Co-op 2.0.1 已使用 Elden Ring 2.7.0.0 参考可执行文件进行实机测试;对于该确切组合未观察到不兼容。[/]
[]在完成单独的实机兼容性矩阵之前,Shadow of the Erdtree 仍未验证。[/]
[]默认禁用日志记录,在排查问题时可于 ERNativeUI.ini 中启用。[/]
[/list]
[url=https://github.com/Flammrock/ERNativeUI/blob/main/docs/COMPATIBILITY.md]查看当前兼容性矩阵[/url]
[url=https://github.com/Flammrock/ERNativeUI/issues]在 GITHUB 上报告错误[/url]

[center][img]https://staticdelivery.nexusmods.com/mods/4333/images/10767/10767-1788711733-1600560216.png[/img][/center]
[center][size=5][b]开源[/b][/size][/center]

ERNativeUI 是我的首个 Elden Ring 模组,基于 MIT 许可证发布。欢迎贡献、分支、兼容性改进、文档以及在尊重所包含许可证和版权声明的前提下经过仔细验证的原生界面研究。

ERNativeUI 在 AI 协助下开发,包括宣传媒体和文档方面的协助。其实现在整个开发过程中已在游戏内反复验证。

[center][url=https://github.com/Flammrock/ERNativeUI][b]源代码和 SDK[/b][/url] | [url=https://github.com/Flammrock/ERNativeUI/releases/latest][b]GITHUB 发布版[/b][/url] | [url=https://www.nexusmods.com/eldenring/mods/10767?tab=files][b]NEXUS 文件[/b][/url][/center]