混沌之城2(重塑版) - 主线

混沌之城2(重塑版) - 主线

在自由漫游模式中自然发生的新事件,例如Boss、盟友和敌人的生成。完全可自定义以迎合各种口味,将你的自由漫游变成你想要的任何形式!

游戏玩法

这是什么:

混乱之城 2 是一个模组,让你可以精确配置游戏有多混乱。想要无休止的敌人刷新?没问题。想要持续不断的派系战争?也可以。想要在楼顶上偶遇迈尔斯莫名其妙地把克莱文揍得屁滚尿流?当然也行。想要更接近原版、事件更稀少的体验?也完全满足你。

使用这个模组后,自由漫游将永远不再一样,而且它能变得多好,完全由你决定! 因为实际上所有内容都是可自定义的。

我最初的想法只是创建一个混乱的城市,但我意识到,如果这个机制能恰当地融入游戏,将会非常棒。所以,我决定将模组的重心转向最大程度的自定义和更接近原版的预设。这样,人们就可以随心所欲地调整事件和机器人生成的频率与数量。这意味着,如果你想要绝对的混乱,你可以让城市里挤满超过 500 个机器人互相厮杀;或者,你也可以设置成在你好几个小时的游戏时间里,只有很低的几率在你荡蛛丝时,毒液突然出现在一座楼顶上把你抓走。一切由你决定。

注意: 尽管这个模组包含了自定义角色,但我的主要重点不是机器人本身,而仅仅是创建一个可以让它们生成出来的系统。因此,不要期望会有频繁的、只专注于修复特定角色 Bug 的更新。

功能:

  • 各类游戏派系的动态自然生成(共生体、克莱文、邪教徒、暴徒和沙人)
  • 自定义 Boss 的自然生成(我不会生成游戏中的标准 Boss,而是经过调整、并非无敌的版本)
  • 盟友(哈利、幽灵蜘蛛和迈尔斯)在自由漫游中的自然生成
  • 随心所欲配置预设的选项
  • 添加新预设以引入更多自然生成内容的选项
  • 添加入新角色并在自由漫游中生成它们的可能性,且无需替换任何内容
  • 强大的防崩溃系统
  • 完全配置哪些预设可以生成、生成间隔和暂停时间——全部可自定义
  • 随时强制生成预设的选项(按需生成 Boss、100 个暴徒、200 个共生体)
  • 暂停和恢复生成的选项
  • 可重新绑定的快捷键以提升体验
  • 一个对基础游戏几乎零修改的模组,确保与其他模组和原版游戏稳定性最佳兼容
  • 为每个预设精确修改最小和最大生成距离的选项
  • 为每个预设精确修改最小和最大生成时间的选项
  • 设置预设以循环触发的选项,并且这个循环可以完全自定义!
  • 直接在菜单中编辑事件几率的选项
  • 通过菜单设置定时器来暂停生成系统的选项
  • 使用游戏内 HUD 的通知系统,在预设激活时通知你
  • 以及更多!

如何使用每种模式:

手动模式

用途: 你选择一个特定的预设,并在想要的时候激活它。

步骤:

  1. 打开菜单 → CHAOS CITY 2 - MAIN
  2. MOD MODE 下,选择 Manual
  3. CATEGORY 下,选择一个类别(例如,Villains, Thugs, Symbiotes)
  4. PRESET 下,从该类别中选择一个预设
  5. 按下 START 来开启生成器
  6. 按下 ACTIVATE SELECTED PRESET 来激活你选择的预设
  7. 机器人会开始在你周围生成
  • 切换预设: 选择一个不同的预设,然后再次按下 ACTIVATE SELECTED PRESET。上一个预设的机器人会留在世界中。
  • 停止: 按下 STOP

自动轮换(推荐在游玩时使用,以获得类似原版机制的体验)

用途: 模组会按时间间隔自动切换预设,为你创造游戏玩法的多样性,无需你动手。

步骤:

  1. 打开菜单 → CHAOS CITY 2 - MAIN
  2. MOD MODE 下,选择 Auto Rotation
  3. ROLL EVERY N SECONDS 下设置间隔(例如,60 = 每分钟切换一次)
  4. 设置 EVENT CHANCE (%) —— 这是定时器到时后实际发生切换的概率(100 = 总是切换)
  5. 按下 START
  6. 打开 ENABLE AUTO ROTATION —— 轮换将立即开始

提示:

  • Chaotic Mode ON → 所有预设权重相等;OFF → 权重更高的预设出现更频繁
  • PAUSE ROTATION → 冻结计时器,但不会停止当前机器人
  • 要从轮换中排除某个预设:在 SELECTED PRESET 下选中它,然后关闭 INCLUDE IN ROTATION

多预设循环

用途: 按顺序一个接一个地激活多个预设。来自每个预设的机器人会累积在世界中,让你能在同一时间拥有不同的派系活跃。

步骤:

  1. 打开菜单 → CHAOS CITY 2 - MAIN
  2. MOD MODE 下,选择 Multi Preset
  3. 配置 NUMBER OF SLOTS (1-10) —— 循环将使用的预设数量
  4. 为每个 SLOT 分配一个预设(SLOT 1, SLOT 2, 等等)
  5. 菜单会显示完整循环的预估持续时间
  6. 按下 START
  7. 打开 ENABLE MULTI PRESET CYCLE —— 循环开始

工作原理: 模组激活 SLOT 1,等待该预设的持续时间,然后激活 SLOT 2,依此类推。激活 SLOT 2 时,SLOT 1 的机器人仍然存活。

实际例子:

  • SLOT 1: Symbiote Invasion → 生成共生体
  • SLOT 2: Hunters Invasion → 生成猎人
  • 结果: 共生体和猎人出现在同一区域,互相战斗!

精心打造的防崩溃系统:

按需生成数十个完整绑定的角色正是那种如果不小心就会导致《蜘蛛侠 2》崩溃的事情——流式加载资产、覆盖生成配置、在引擎流式加载过程中更改限制,这些都是经典的 CTD(崩溃到桌面)触发器。混乱之城 2 专门设计来避免这些陷阱。以下是幕后实际发生的事情:

  • 专门的预设切换状态机: 切换预设不是一个单一的即时操作——它是一个小的状态机(IDLE -> STOPPING_SWITCH -> PRELOADING_SWITCH -> SETTLING_SWITCH -> 回到 IDLE),其作用是:
    1. 干净地停止当前正在运行的生成器。
    2. 将新预设需要的每个角色模型预加载到引擎的资产缓存中,一次一个,轮询直到每个模型都确实驻留。
    3. 等待一个短暂的稳定期,让引擎的流式加载/清理系统跟上。
    4. 只有在那之后,才应用新的生成配置覆盖并重新启动。
  • 重叠切换被直接拒绝: 如果你猛按“下一个预设”快捷键,或者轮换在切换过程中触发,额外的请求会被忽略,而不是排队导致状态损坏。
  • 预加载全部角色模型: 有些预设引用了 10-20+ 个不同的角色模型(说的就是你,克莱文猎杀和邪恶六人组)。如果引擎在应用配置覆盖的瞬间尝试同时流式加载所有这些模型,可能会静默地无法生成任何东西,或者直接崩溃。混乱之城 2 会在应用覆盖之前,将预设引用的每个角色预加载到引擎的模板缓存中——并且还可以一键预加载所有已加载预设中的全部内容,这样即使是最重的 Boss 战,一旦设置好,也能瞬间出现且无卡顿。
  • 直接、安全的内存写入,而非有风险的原生调用: 动态的 MAX ALIVE 覆盖不会调用游戏自身的“修改最大存活数”函数(该函数被发现有堆损坏问题)——而是在结构化异常处理(SEH)下,直接写入生成器覆盖结构中相关字段,并在需要时有一个安全回退机制,可以恢复预设自身的默认值。
  • 引擎调用的线程安全性: 自动轮换、快捷键和自动停止计时器都在它们自己的后台线程上运行,所以即使游戏暂停或菜单关闭,它们也能继续工作。但游戏引擎并不期望被随机线程“捅”一下。混乱之城 2 包含:
    • 一个局限于游戏主线程的 PeekMessage 钩子,确保资产驻留检查等引擎查询只在引擎期望的地方运行。
    • 一个实验性的“更安全的引擎调用”模式(默认关闭,可在 EXPERIMENTAL 部分切换),该模式将来自后台线程的开始/停止/切换请求排队,并通过一个 D3D12 Present 钩子在引擎自身的主线程上执行——这与屏幕按钮已经使用的安全路径相同。如果你遇到与自动轮换或快捷键相关的崩溃,可以尝试开启这个选项。
  • 切换冷却和忙碌检查: 每次应用预设覆盖后,有一个短暂的冷却时间,防止连续的切换重叠它们的资产加载工作。并且每个入口点(手动激活、快捷键、轮换)都会首先检查状态机,如果切换已经在进行中,就会退出。

它是如何工作的,为什么如此稳定?(至少比预期的要稳定)

这个模组仅仅是激活了原版游戏中在共生体占领城市并开始自然生成那段游戏中已经存在的系统。我所做的(简而言之)是在游戏的任何部分重新启用这个系统,并替换掉使用的生成配置。意思是,我没有创建过于复杂的自定义生成系统,也没有手动定义机器人精确的生成位置;而是让游戏自带的引擎单独完成所有繁重的工作——我只是给了它一点“推动”,来开启这个系统!

对于模组制作者:如何创建自己的预设?

基本上,你需要三样东西:

  1. 一个 ProximitySpawnerConfig 类型的配置(参考引擎文档了解如何操作,或者在 Modding Tool 中搜索 "proxspawn" 来寻找示例),该配置实例化你想要的角色。
  2. 将你创建的配置添加为新资产(从一个包含新文件的阶段导入)。
  3. (只有在你试图添加自定义角色时才需要,否则忽略)同时将新的角色和资产添加到游戏中。
  4. 你需要创建一个 TXT 文件来配置你的预设(以我的模组的 presets.txt 为基础,非常简单明了),指向新的资产。

这样就完成了!将 txt 文件放入游戏目录下的 presets 文件夹后,启动游戏,你的预设就会作为一个全新的预设出现在你选择的类别下的菜单中!(你也可以创建新的类别)

如何安装:

  1. 通过 Overstrike 安装 "Chaos City 2 - Main"(包含菜单和模组逻辑)。
  2. 同样通过 Overstrike 安装 "Chaos City 2 - Presets"(包含预设和自定义角色的配置文件)。
  3. 游戏根目录(你的游戏可执行文件所在目录)下创建一个名为 presets 的文件夹,并将 presets.txt 文件粘贴进去。
  4. 现在启动游戏即可(加载时间可能会稍长一些)。

已知问题 / 提示:

  • 游戏仍然可能会崩溃,但这通常是由于硬件限制或引擎本身无法渲染数百个漫游的角色造成的。 正如我所提到的,我利用了游戏内置的系统,所以对此我无能为力。
  • 有些机器人偶尔会生成出来就有 Bug;这需要更复杂的调查来调试,比如负片先生和共生体重型兵。不过,值得让它们保持激活状态,因为时不时地它们就是正常工作的
  • 有时候机器人会生成在建筑物内部或无法到达的地方。这是因为游戏的生成系统使用了失眠组自己在地图上定义的“生成点”,而其中一些点就在不合理的位置。对此我也无能为力。
  • 帧生成似乎会在屏幕上有太多角色时导致问题,从而引发崩溃。我建议降低它的设置或直接关闭它。

结语:

一开始一切可能看起来有点令人困惑,但我会经常更新描述,使其尽可能简单。希望你们喜欢——这个模组投入了大量的工作,并花费了数不清的小时进行测试。