博学者 - 自动化模组制作

博学者 - 自动化模组制作

制作BG3模组可能会很困难/令人沮丧。这个程序简化了它。

资源

公告:

很可能是最终更新:我已上传了补丁 8 中所有游戏内 PAK 文件的数据表,以便您更轻松地在工具包中引用实体。如果您对模组制作有任何疑问,请通过我的 YouTube/Patreon 联系我,我会考虑制作教程!

2.6.0:现在您可以在新的职业创建器中导入自定义专长所需的文件(之后需要手动编辑)。此外,还提供了一个小工具,用于自动本地化您的本地化文件,节省您的时间。

2.5.0:新增了一个小工具,允许你为游戏内现有法术编写文件,之后可进行修改并发布。

2.4.0:在创建职业模组前新增了一个复选框,用于将你添加到职业模组中的任何自定义武器/护甲放入教程宝箱。

2.3.0 版本:现已推出用于创建自定义被动效果的组件工具!同时附上源代码供您参考(可获取源码,但非开源)。在将本软件改编用于您的项目前,请务必阅读模组中的权限说明页。本软件许可证大致与《博德之门 3 模组多功能工具》的授权条款保持一致。

2.2.0:我新增了一个用于创建自定义武器和护甲的小工具,你可以将它们添加到你的职业模组中。由于自定义装备功能的复杂性,我们重新启用了《博德之门 3》模组多功能工具来构建你的模组。

2.1.0 版本:职业/子职业自定义图标现已加入 Polymath!如需显示您的图标,必须安装 ImprovedUI 和 ImprovedUI-Assets。

2.0.0:博学者 2 正式上线!博学者 2 新增小工具,可自动生成自定义法术/技能及自定义行动资源点数,这些内容随后可载入您的自定义职业/子职业模组中。

介绍

学习如何制作模组很困难。我的工具 Polymath 通过自动化创建《博德之门 3》模组简化了这一过程,使生成可直接加载到 BG3 模组管理器中的 PAK 文件变得更加容易。虽然我已重新启用此处的评论区供大家讨论该程序,但请将建议/错误报告等留在 YouTube 视频的评论区(Nexus 不提供通知功能,这样更方便我跟踪改进内容)。

支持我

这个程序花费了大量时间开发(包括配套的使用视频教程)。请通过 Patreon 或 Ko-Fi 支持我,或订阅我的 YouTube 频道!想参与 Polymath 的开发方向吗?Patreon 订阅者对下一项新增功能拥有 5 倍投票权。

Patreon Ko-Fi YouTube 频道

教程/使用方法

每个视频指南展示了程序在每个步骤中的运作方式。

要让图标显示,您需要安装 ImprovedUI 和 ImprovedUI-Assets。 在 Polymath 生成您的模组后,您必须使用《博德之门 3》模组制作多功能工具打包模组,如本视频所示(使用时间轴跳转到 7:24 的“打包+测试您的模组”部分)。

要运行此程序,您需要通过 Microsoft Store 安装 Python(虽然您可以从开发者网站安装,但部分用户在使用该版本运行程序时可能会遇到问题,可能是由于语法差异,例如 python 与 python3 的语法区别),并且需要安装 pandaspyperclipopenpyxl 包,这些包可以在安装 Python 后通过命令行运行以下代码来安装。所有这些包都是开源的,欢迎随时查看它们!

pip install pandas
pip install pyperclip
pip install openpyxl

解压文件并运行 Polymath.bat 文件。想看看 bat 文件的作用吗?右键点击它并用文本编辑器打开。观看我 YouTube 频道上的视频,了解如何使用该工具及其工作原理。

对程序有建议或发现需要改进/解决的问题?在 YouTube 视频下留言(Nexus 不提供通知功能)!如果你制作并公开发布模组,请注明使用了我的工具并指向这个 Nexus 链接。根据 Larian 的模组政策,你制作的任何模组都不能用于盈利。

截至 2.2 版本,我们重新启用了 Modder's Multitool 工具。制作模组后,您需要使用 BG3 Modder's Multitool 进行打包。目前,该程序会将自定义进度文件复制到 Public/模组名称/Progressions 路径下,文件名为 Progressions_EveryLevel.lsx。这个文件能大幅简化您为每个等级定制内容的工作量,您可以通过这个视频学习操作方法:为每个等级添加奖励的视频指南。若不编辑该文件,BG3 MM 工具将拒绝打包您的模组。若想立即测试模组效果而不编辑每个等级,您可以安全删除该文件(注意不要删除 Progressions.lsx)以确保功能正常。当您准备就绪时,req_files 文件夹中会提供对应的匹配文件。

常见问题解答

Q. 我的图标没有显示。该怎么办? A. 在 Nexus 上安装 ImprovedUI 和 ImprovedUI Assets。

Q. Polymath 无法启动!当我运行 Polymath.batPolymath.py 时,命令行显示导入 pyarmor 时出错。或者 Polymath 打开后立即关闭。 A. 无论出于何种原因,使用 pyarmor 处理的文件仅兼容微软商店版本的 Python 3.12,而不支持 Python 官网发布的 Python 3.12 版本。只要您安装了微软商店的 Python 版本及上述三个软件包(无需安装 pyarmor),BAT 文件即可正常运行。若仍存在问题?请前往“添加或删除程序”,卸载所有名称含“Python”的程序,然后按上述说明重新安装 Python。先前安装的 Python 2 版本可能导致冲突,此操作可解决该问题。

Q. 我每一步都做对了,但我的模组在角色创建时没有显示。我该怎么办? A. 在重制模组前,先从 BG3 模组管理器中移除 PAK 文件,将其拖至 "Inactive" 栏,再拖回 "Active" 栏进行测试。若问题仍未解决,可尝试重新制作一次模组。虽然概率极低,但确实可能存在重复 UUID 或句柄的情况。

Q. 创建完职业后,我发现自己和杜尔格以及几个衣衫不整的人被困在某个诡异的阴影领域里。怎么才能进入游戏? A. 你需要下载 BG3 Mod 修复工具,可在此处获取。

Q. 有没有办法可以让我不用安装 Python 或使用命令行(在安装 Python 包时)? A. 是的,但这会在特别保守的杀毒软件扫描中产生误报(尽管 Nexus 根据其对修改软件合理预期误报数量的经验仍将其标记为安全)。我可以将 Python 文件构建成被 Bitdefender Total Security 和 Nexus 标记为安全的 EXE 文件(后者使用 VirusTotal 评估所有文件,该平台调用超过 60 种杀毒工具,67/68 的检测结果将该 EXE 文件标记为安全)。误报是由于使用了 pyinstaller,且后续未对软件进行数字签名(维持数字证书每年需花费 300 多美元)。这类误报足以让部分用户感到不安。如果有足够的需求,我可以再次提供 EXE 文件。但我也有所顾虑,因为处理用户对此类误报的担忧需要花费时间。

Q. 我编辑了我的参赛自定义表格,但它没有更新。我该怎么办? A. Polymath 使用 TXT 文件而非 Excel 文件导入您的自定义条目,因为前者速度更快。要将更新从 Excel 文件传输到 TXT 文件,请双击 UpdateCustomDataFiles.bat

Q. 我修改了模组文件中的某些内容。该怎么办? A. 如果您在本地化 XML 文件中修改了游戏内名称/描述,则需要使用 LSLib 重新生成本地化文件。若您编辑了该文件或模组中的任何其他内容,还需通过 ShinyHobo 的《博德之门 3》模组多功能工具重新制作 PAK 文件。您可以在此处参照我的教程视频(在对应时间节点)进行操作。若您编辑了自定义条目的 Excel 数据表,请双击运行 UpdateCustomDataFiles.bat 文件。

Q: 我修改了源代码,现在它无法运行了?该怎么办? A:我只支持 Polymath,因为这是我提供的版本(我已经对其性能进行了相当广泛的测试)。程序中有大约 1500 行代码,包括跨函数共享的全局变量(以及跨 Python 文件调用的函数)。鉴于这种复杂性(以及为什么这个项目花了 4 个月和许多小时才达到今天的水平),我很难告诉你是什么出了问题。

未来计划(暂缓实施)

  • 使子类变为可选,或仅在更高等级时才可选择,如同原版职业那样。
  • 增加选项,允许选择要包含的对话标签。
  • 允许添加常规行动资源点,而不仅仅是自定义资源点
  • 将工具内部名称更改为游戏本地化文件中的名称,以提高可读性(因此需查询从表格中提取的句柄对应的本地化文件)。
  • 启用为自定义法术、装备和行动资源点导入自定义图标的功能
  • 启用创建自定义物品功能,可添加到子类中(将在后续 2.X 版本中推出)。
  • 启用创建自定义种族功能(暂定于 3.0 版本发布)。
  • 启用添加多个子类的功能。
  • 制作性能可接受的程序 EXE 版本
  • 提供一个视觉化界面,向玩家展示创建新职业/子职业时默认获得的被动技能/增益效果等内容,以便更轻松地为你的模组选择合适的职业/子职业。或许可以设置一个确认创建模组的页面,同时显示你选择添加到该职业/子职业中的法术/被动技能/装备。
  • 添加将染料应用于自定义武器/装备的选项
  • 为你的职业/子职业模组制作一个 GUI 界面,用于在每级发放奖励(创建一个辅助部件,用于操作已构建的模组)
  • 让从其他模组导入自定义法术等内容到 Polymath 变得更简便,同时仍尊重他人的版权。

许可证

  1. 与《博德之门 3》模组制作多功能工具类似,本软件为源码可见而非开源。软件及所有源代码归属本人 ImADoctorNotA(及我的真实姓名),版权所有 2024 年。Polymath 为非官方粉丝作品,未经拉瑞安工作室认可或批准。通过本人源代码生成的数据表中包含的拉瑞安游戏资产数据归属拉瑞安工作室游戏有限公司与海岸巫师有限责任公司。LSLib 由 Norbyte 所有,本软件依据其 MIT 许可证使用。有关软件分发与修改的许可条款详情,请参阅本模组权限章节。简而言之,未经本人明确许可,不得分发本软件或发布修改版本。

注意事项

  1. 本程序并非旨在取代用户的创造力。发布时,该程序仅能生成一个基础子职业模组(基于现有职业的现有子职业)。它将在角色创建时可用,但用户仍需投入努力才能使模组独具特色。我开发此程序(连同教程视频)的目标是为用户提供一个创造精彩内容的基础。
  2. 模组在某些时候可能会出现兼容性问题。模组制作与教学是一个持续迭代的过程。我和其他制作者都在不断学习新知识。游戏更新也可能改变模组运行的底层逻辑。当前可用的模组可能会在后期关卡或未来版本中失效。使用者需自行测试模组功能以确保可用性。我已尽可能预判并修复了常见错误(同时欢迎通过有效渠道提交改进建议)。由于 Nexus 平台不提供评论提醒功能,若发现任何问题请在我介绍本工具的 YouTube 视频评论区留言(详见上文相关章节)。
  3. 在安装新子职业模组并继续/开始主要游戏进程时要谨慎。我在冒险中途卸载子职业模组时遇到了游戏崩溃问题,即使这些模组当时并未使用。重新安装已移除的模组后问题得以解决,这些模组应在你的存档中列出(通过显示不再可用的 PAK 文件)。这很可能是因为创建的子职业模组是基于现有职业构建的,因为代码是通过编辑这些现有职业(将你的子职业添加为选项)来实现的。
  4. 制作模组对我来说始终是一项爱好。我在医疗和研究领域从事全职工作(基本上是两份全职),同时还是一位游戏玩家父亲。因此,我的时间非常有限。当我明确因时间限制无法继续改进这款软件时,我会将源代码公开供他人使用。在此之前,欢迎随时提出软件改进建议,我会尽力处理。

致谢

  • Norbyte:创建了 LSLib,该工具根据 MIT 许可证公开发布供自由使用。Polymath 中包含了 LSLib。没有他们的贡献,修改 Larian 游戏将无法实现。LSLib Github 可在此处访问。
  • ShinyHobo:创建了《博德之门 3》模组制作多功能工具。虽然本程序的开发并未使用该开发者的任何源代码或软件(尊重其 GitHub 页面上的版权声明及意愿,链接在此),但该工具在我学习制作《博德之门 3》模组时提供了极其宝贵的入门指导。他们的工作是本项目的重要灵感来源之一,若您愿意支持,可通过此处链接向其 Ko-Fi 捐款。虽然本程序理论上能自动化整个模组制作流程,但在处理本程序尚未涵盖的功能时(例如制作新法术/技能,相关教程视频可在我 YouTube 频道观看,即将在此处更新),您仍需要生成新的 UUID 和句柄。使用他们的工具可以极其便捷地获取这些 UUID 和句柄(且他们的程序会定期更新)。
  • OhhLoz:为自定义职业模组的职业图标(及其他图标)功能实现提供了支持。如果没有他们的帮助,Polymath 可能无法实现职业图标(及其他图标)的功能。在此下载他们的 Alternate Monk 职业模组。
  • Logan McCracken:发现了法术文件和动作资源点文件中出现的语法问题。
  • Saumil Arcana:发现 OpenPyxl 并非 Python 自动附带。点击这里查看他们的 YouTube 频道!
  • DJminor92:发现修复程序,解决部分电脑通过网站安装(应用商店安装)后程序无法运行的问题。
  • GamingBendu:为如何最佳展示该模组细节提供了有益建议。查看他们的 NexusMods 页面,新内容即将上线!
  • ufailowell:在填充选项时发现跳过 SharedDev 文件夹导致信息丢失(同时指出了通过设置施法能力来修复的方法)。