世界构建器

世界构建器

《红色沙漠》游戏内世界编辑器:浏览全部48,000多个预制件并附带预览,实时生成它们,四处走动并用快捷键放置,旋转、缩放,将建筑保存为项目。不修改游戏文件。包含一个C API,以便其他模组可以生成和移动物体。

World Builder – 游戏内预制件编辑器与模组 SDK

将游戏中 48,000+ 个预制件放置到世界任意位置,实时操作,无需离开游戏。

World Builder 是《红色沙漠》的游戏内编辑器。通过快捷键打开它,浏览游戏自带的每一个预制件(墙壁、废墟、家具、道具、机关、自然环境),将它们生成在你的角色旁边,在它们周围走动,用快捷键移动和旋转它们,并将结果保存为项目,在下次启动时再次加载。它还暴露了一个小型 C API,以便其他模组可以通过它生成和移动物体。

不会修改任何游戏文件。不会向游戏自身的存档数据写入任何内容。模组放置的所有内容都保存在其自己的项目文件中。

功能

  • 预制件浏览器,带有分类树、全文搜索、标签过滤(StaticMesh、Gimmick、Breakable……)和收藏夹
  • 每个预制件的预览图像和真实尺寸,在你的机器上从你自己的游戏文件渲染(不提取任何内容,不重新分发任何内容)
  • 放置模式:物体会出现在你的角色面前并停留在那里。在它周围走动并用小键盘调整它:远离/靠近、左/右、上/下、绕其中心旋转、缩放。Enter 放下,Backspace 取消
  • 场景标签页:所有已放置物体的列表,显示距离,实时编辑位置/旋转/缩放,复制,删除
  • 项目:保存和加载整个建筑,游戏启动时可选自动加载
  • 两种输入模式:编辑模式将鼠标和键盘交给菜单,同时世界继续运行;游玩模式将所有输入交还给游戏,但窗口保持可见。Home 切换,Insert 隐藏
  • 模组 SDK:cdk_spawn、cdk_move、cdk_remove、cdk_player_pos 及类似函数,可从任何其他 ASI 模组调用
  • 容忍更新:游戏函数在启动时通过签名定位。游戏补丁后,模组要么正常工作,要么干净地禁用自身并告诉你原因,绝不会崩溃到半挂钩状态

要求

  • 《红色沙漠》(Steam),已在版本 1.0.0.2850 和 1.0.0.2944 上测试
  • 安装为 bin64\winmm.dll 的 Ultimate ASI Loader(DMM 和 Vortex 用户通常已经安装了它)

安装

  1. 如果尚未安装 Ultimate ASI Loader,请安装它:下载 Ultimate-ASI-Loader_x64.zip,将其中包含的 dinput8.dll 复制到 <game>\bin64\,并将其重命名为 winmm.dll。
  2. 将本压缩包中的 cdmodkit.asi 和 cdmodkit 文件夹复制到 <game>\bin64\
  3. 通过 Steam 启动游戏。游戏旁边会打开一个小控制台窗口显示日志,你可以忽略它。

首次启动时,模组会在后台为所有预制件渲染预览图像(低优先级,约 20 分钟)。你选择的预制件始终会立即渲染。

操作

  • Insert:显示/隐藏编辑器
  • Home:在编辑模式(菜单接收输入)和游玩模式(游戏接收输入)之间切换
  • F9:将玩家位置写入日志
  • 放置:小键盘 8 / 2:将物体移离你/靠近你
  • 小键盘 4 / 6:向左/向右移动它
  • 小键盘 9 / 3:向上/向下移动它
  • 小键盘 7 / 1:绕其中心旋转它
  • 小键盘 + / -:缩放
  • 小键盘 0:将物体取回到你面前
  • Shift:快速移动
  • Enter / Backspace:放下物体/取消

已知限制

  • 放置的物体是视觉性的,带有碰撞。不附加机关行为(可破坏、可收集、可交互)。
  • 物体仅在当前运行会话中存在。重启后请加载项目(或使用自动加载)。

致模组作者

sdk\cdmodkit_api.h 记录了导出的函数。使用 GetModuleHandleA("cdmodkit.asi") 获取模块,并使用 GetProcAddress 解析函数。所有内容都会为你排队到游戏线程。

问题、请求、问题反馈

在 Discord 上联系我:daebak91s。欢迎在那里提问、提出功能请求和报告错误,这里的评论也可以。

当出现问题时,所有内容都会记录在 bin64\cdmodkit\cdmodkit.log 中。请发布最后 30 行,尤其是包含 "fault"、"imgui assert" 或 "RESOLVE FAILED" 的行。

支持

如果 World Builder 对你有用,你想表示感谢,可以请我喝杯咖啡:ko-fi.com/daebak91。从不期待,永远感激。

鸣谢与感谢

  • dofo7777 进行了大量测试、提供想法和视频。许多放置和输入改进都源于这些反馈。
  • Shin234 的 Master Looter,本模组的虚拟光标输入层改编自它,并且感谢他指明了进入这个引擎的道路。
  • 整个《红色沙漠》模组社区:pycrimson 和 CDMW 项目在归档和网格格式研究方面的贡献,以及所有公开分享发现的人。

第三方代码:MinHook (BSD-2)、Dear ImGui (MIT)、stb_image / stb_image_write (公共领域)、输入层改编自 Master Looter 和 Trinity (MIT)。不包含任何游戏资源。