更好的昆特牌

更好的昆特牌

《巫师3》中更智能的昆特牌对手。NPC会搜索自己的出牌和你的应对并规划其回合,不作弊。三种难度等级,NPC牌组可随你牌组的强度调整,且NPC会像你一样更换起手牌。没有卡牌被修改;关闭 = 原版游戏。

[Better Gwent]

为《巫师3》提供更聪明的昆特牌对手。同样的牌,同样的规则:NPC 只是打得更好了。 源代码和完整文档见 GitHub。

不是魔法,也不是奇迹。 AI 仍然会犯错。Better Gwent 通过数学、搜索和大量测试来改进 NPC 的决策方式。

适用于游戏补丁 5.01,已在 Steam 上测试(GOG 5.01 为同一补丁,但未测试)。Beta:我在自己的对局中测试过;如有任何异常请报告。

我是如何制作的

我研究了游戏内昆特牌的运作方式,并用 Python 重建了它的规则,做成一个模拟器。这个模拟器成了我的实验室:超过 120 万场模拟对局,让我的 AI 与游戏自带的 AI 在同一牌组、同样的运气下对战。A/B 测试、自动调参,以及一个找出 410 个高代价决策的“失误猎手”。只有经过测量确实能获胜的改动才会进入模组。工作原理:如何测试、研究与已放弃的想法。

结果:面对像玩家一样构筑的牌组,由 Better Gwent 操控的 NPC 在每种难度和牌组模式下,胜率都比原生 AI 高出约 25%。图表。

本质上仍是原版

一切都保持原版:同样的牌、同样的能力和技能、同样的规则。模组不添加任何牌,也不改动任何牌。它带来的是游戏本就有但从未使用的内容(基础游戏的 bug、卡牌美术):

  • 未使用的美术:《巫师3》随游戏附带、但原版卡牌列表从未显示的替换图片。现在同一张牌的副本会在对局和牌组构建器中显示不同的图片。
  • 昆特牌难度:游戏为昆特牌保留了一个 AI 难度设置,但从未被使用;它被规划过但未完成。Better Gwent 的难度等级和 NPC 牌组选项填补了这一空白。
  • 额外卡牌规则:NPC 牌组本应只在你的牌组足够强时才获得额外卡牌,但一个反向的判断让它们在几乎每场对局中都获得了全部额外卡牌。开启模组后,按原本意图的规则生效。
  • 复活窗口标题:游戏中有这句话,拼写正确,但窗口请求的是一个拼写错误的名字,所以打开时没有显示。现在它会显示。

额外卡牌规则,原版对比 Better Gwent:针对你牌组的每种强度,NPC 获得多少额外卡牌(详情)。

https://i.imgur.com/BBXlMS0.png

功能

  • 更聪明的对手:NPC 会搜索自己的出牌和你可能的回应,规划回合,为后续回合保留资源,并减少特殊牌的浪费。如果它遇到错误或超时,该步由原生 AI 出牌,因此对局不会卡住。
  • 难度:简单、普通和困难(默认),独立于游戏难度。
  • NPC 牌组:原版 / 自适应 / 强力。原版:NPC 自己的牌组,并修复了游戏的额外卡牌规则;使用这些牌组时,AI 也会更早打出它的间谍牌。自适应(默认):NPC 的牌组会被重建以跟随你的牌组强度(简单 85%,普通 100%,困难 110%)。强力:其阵营允许的最强牌组。
  • NPC 最多交换两张起始牌(普通和困难),与你一样。
  • AI 替你出牌(可选):观看 AI 操控你这一方。
  • 赌注:常见金钱赌注的上限更高(25 到 150),以及一个可选设置,让你下注更多时 NPC 更强。
  • 关闭 = 原版游戏,包括赌注。
  • 菜单支持 18 种语言:选项 > 模组 > Better Gwent。设置在打开对局时读取。

每项功能和选项的详情:功能;NPC 牌组如何构筑:NPC 牌组。

该选哪些设置

https://i.imgur.com/RU9n8On.png

公平竞技

AI 不作弊。它从不读取你的手牌、你的牌组或任何人牌组的顺序。它只根据人类玩家能看到的信息出牌:牌面、双方的弃牌堆、你持有多少张牌、已打出的牌,以及它自己的手牌和牌组。一项自动化测试会替换你的隐藏牌,并检查它的决策是否改变。详情。

可在游戏流程中途安全安装

  • 不替换任何游戏文件:模组位于自己的文件夹(mods/modBetterGwent)加一个菜单文件,以及 filelists 中的一行。
  • 不触碰任何存档。模组不添加物品、任务或卡牌,也不编辑任何卡牌;NPC 牌组每场对局都在内存中重建。
  • 可随时移除:存档保持有效,赌注赢得的金钱仍归你所有。
  • 在我自己的对局中,安装模组后游戏从未崩溃。

它不应导致冲突或问题。如果你想格外谨慎,先备份存档再试用。安装指南。

已知问题

  • NPC 思考时帧率会略微下降。AI 运行在与绘制游戏相同的线程上,所以我只给它每帧的一小段时间:在我的测试中(困难,75 Hz 屏幕),NPC 思考时游戏保持约 63 fps,对局其余时间保持 75 fps。代价是等待时间更长:困难下每步约 2 秒,最多约 4 秒。时间片只改变 NPC 思考的时长,从不改变它出哪一步。简单和普通思考更少。
  • 你牌组中的 Olaf 在极少数情况下,当他的效果在他离场后触发时,可能会让原版游戏的昆特牌牌面抛出错误。这是原版游戏的问题;模组构筑的 NPC 牌组从不使用 Olaf。
  • AI 仍然会犯错。

所有已知限制:已知限制。

安装

  1. 关闭游戏,将 BetterGwent-0.9.1-beta.zip 解压到游戏文件夹(包含 bin 和 content 的那个)。
  2. 如果 bin/config/r4game/user_config_matrix/pc/dx11filelist.txt 和 dx12filelist.txt 存在,在两者中都添加一行 modGwentAI.xml;。
  3. 启动游戏;首次启动时会编译脚本。在 选项 > 模组 > Better Gwent 中将模组切换为开启。

卸载时,删除 mods/modBetterGwent、bin/config/r4game/user_config_matrix/pc/modGwentAI.xml 及其在 filelists 中的行。

兼容性

  • 只有一个模组能替换昆特牌牌面(gwint_game.redswf)或昆特牌牌组构建器(deck_builder.redswf,用于卡牌美术);其他替换这两个文件之一的模组会与本模组冲突。
  • 修改昆特牌管理器、昆特牌菜单或赌注对话框的脚本模组可能需要脚本合并。
  • Gwent Players Map 和 Witcher Upgrade Gear Map 可与其一起使用。
  • 不支持修改卡牌的模组(能力、技能、新卡牌):AI 和 NPC 牌组仅使用原版卡牌构建和测试。

我研究并发现的内容

如果你想深入了解,一切都在 GitHub 上有文档记录:

  • 研究:AI 背后的论文和技术,以及我尝试过和放弃的内容。
  • 研究游戏:在阅读游戏文件时我发现了被删减的内容。两张北方领域卡牌,Ballista Officer 和 Witch Hunters,拥有完整的美术,但没有强度、技能或文字。还有游戏从未显示的物品栏图标、仅以名称存在的卡牌技能,以及基础游戏的一些 bug。
  • 测试:每项改动如何被测量,附图表。
  • NPC 牌组:自适应和强力牌组如何构筑。

路线图

对于首个版本,我只想要一个更好的 AI 和对昆特牌的一些改进,而不触碰任何游戏文件,这样任何人都能安装、试用并移除它。接下来,作为各自保持独立下载的可选模块:

  • 失落卡牌:将被删减的卡牌和未使用的图标作为新卡牌带入游戏,由我为它们的阵营设计技能,而不触碰游戏的文件或存档。
  • 卡牌平衡:对很少值得占一个卡位的卡牌做小幅、经过测试的改动,默认关闭且完全可逆。

完整计划:路线图。

开源:欢迎帮助

这是一个大型项目,并且是开源的(我自己的代码采用 MIT 许可证;游戏资产仍归 CD PROJEKT RED 所有)。模拟器、测试和研究全部公开。如果你想在分析、想法、bug 报告或代码方面提供帮助:提交 issue、发送 pull request、克隆并实验,或者直接给我发消息。 github.com/mateusands/witcher3-better-gwent

AI 披露

本模组是在 AI 助手作为工具的协助下制作的:代码、模拟、测试和文档都在我的指导下由 AI 编写。每项改动都在模拟器中测量过,并由我在游戏内测试。这是一个业余项目。

致谢

  • JPEXS Free Flash Decompiler 用于将 AI 构建进昆特牌牌面。
  • WolvenKit 和 W3Edit 团队记录了游戏的文件格式。
  • 《巫师3》、昆特牌及其资产归 CD PROJEKT RED 所有。非官方同人作品,未经 CD PROJEKT RED 批准或认可。