骑马与砍杀吧 关注:765,737贴子:15,364,913

AI效应3.3.x超巨量更新

只看楼主收藏回复

ai效应3.3版本大更新已经在今天下午发布,因为内容过多以至于创意工坊自带的日志功能不能容纳,在dc上搬过来后交由deepseek翻译处理


IP属地:江苏来自Android客户端1楼2025-12-30 19:09回复
    ```diff
    ================================================================================
    AI影响力 — 更新日志 v3.3.0
    ================================================================================
    新增内容:
    ------
    * **新增对话中的定居点提及解析,以正确创建经济效果**:现在,当根据玩家对话创建动态事件时,系统会自动检测对话中提及的定居点(例如"Sargot"),并为AI提供其精确的字符串ID(例如"town_S1"),以正确创建经济效果。AI现在能够知晓对话中提及的所有定居点的精确标识符,并可以对其施加带有正确目标ID的经济效果(繁荣度、食物、安全、忠诚度、收入)。该解析功能通过文本规范化支持所有语言,并适用于城镇、城堡和村庄。
    * **为超过200个NPC新增全面的存档系统优化**:实施了NPC关系缓存、文件路径缓存、为批量事件(俘虏、释放)添加了存档批处理功能,将SaveQueueManager的信号量池从10增加至50,并添加了对RecentEvents列表的自动修剪和清理。俘虏事件的处理性能提升了20-50倍:俘虏1个领主现在可在<0.1秒内完成(原为2-5秒),处理一场有5名俘虏的战斗可在<0.5秒内完成(原为10-25秒)。
    * **新增用于内存和性能管理的MCM设置**:
    * **最近事件保留时长**:可设置为7-90天(默认为30天),用于控制NPC记忆中旧事件的自动清理。
    * **单个NPC最大最近事件数**:可限制为10-200条(默认为50条)。当超过限制时,最旧的事件将被自动移除。
    * 每个NPC在内存中最多可存储`MaxRecentEvents`条事件,但为优化性能,发送给AI提示的仅为最近10天内发生的、数量不超过`Math.Min(MaxRecentEvents, 50)`条的最新事件。
    ```


    IP属地:江苏3楼2025-12-30 19:13
    收起回复
      2026-03-07 04:59:01
      广告
      不感兴趣
      开通SVIP免广告
      ```diff
      * **新增针对重要游戏事件的缓存自动失效机制**:
      * 当英雄结婚时:夫妻双方及其亲属的缓存将被清空。
      * 当家族变更所属王国时:该家族所有成员的缓存将被清空。
      * 此机制确保了缓存的NPC关系数据始终保持最新状态。
      * **新增面向WorldInfoManager.OnDailyTick的性能分析系统**:现在每次每日刷新时,都会将详细的性能信息写入mod_log.txt文件,其中显示每个方法(如更新战争状态、清理旧事件、处理浪漫关系衰退、更新所有NPC的最后可见朋友信息、清理已死亡NPC数据等)的执行时间,从而能够精确定位性能瓶颈。
      * **新增NPC的RecentEvents俘虏事件追踪系统**:现在,当一位领主被俘虏或被释放时,相关事件不仅会添加到当事人(俘虏)的RecentEvents中,也会添加到其朋友、亲属以及家族/阵营成员的RecentEvents中。这些事件包含所有提及的角色、家族和地点的完整信息与字符串ID,使得AI能够知晓亲近之人的遭遇并在对话中提及。该系统处理所有类型的释放:逃脱、主动释放、赎回以及战后释放。
      ```


      IP属地:江苏4楼2025-12-30 19:14
      回复
        ```diff
        * **新增双向信使通信系统**:现在玩家可以回复NPC的来信,并主动发送信件。
        * 收到NPC消息时,消息窗口会显示一个"发送回复"按钮,并提示信使费用(根据与NPC的距离计算)。
        * 新增MCM设置选项:"信使单位距离费用"(10-50第纳尔,默认15)和"信使单位距离递送时间"(0.5-5.0小时,默认1.0),用于管理成本和递送时间。
        * 信件会根据距离延迟送达。NPC会收到玩家的信件,并可以选择回复或忽略。
        * 当玩家在信中明确提出请求时,NPC回复时可执行一组有限的技术性行动(如前往定居点、在定居点附近等待、跟随玩家)。
        * 所有信件在对话历史中会标记为"玩家通过信使发送"或"作为回复通过信使发送"。
        * 系统会自动解析信件中提及的定居点,并为NPC提供其精确的字符串ID,以确保行动正确执行。
        * **在MCM设置的"调试与修复"部分新增"强制关闭对话"按钮**:
        * 该按钮用于强制关闭与NPC卡住的对话,并重置所有阻塞标志(如战斗响应、决策、投降状态、婚姻响应、待死亡、待定居点战斗、待AI响应等)。
        * 当对话因崩溃等原因卡住且无法自动关闭时,可用此按钮解除游戏阻塞。
        * 该按钮会通过对话管理器强制结束对话,并清除NPC的所有相关状态,使玩家可以再次与该NPC正常交互。
        ```


        IP属地:江苏5楼2025-12-30 19:15
        回复
          ```diff
          * **新增所有外交关系类型的原因说明至AI提示**:现在会在AI提示中显示结盟、贸易协定、纳贡及赔款等外交关系的原因,为AI角色提供更完整的上下文理解。
          * **新增防护性补丁,防止创建后代时游戏崩溃**:修复了在游戏进行约250天后可能发生的崩溃问题。该问题源于后代出生时,其父母英雄的`EquipmentRoster`可能为空,导致游戏原生代码抛出`NullReferenceException`。此补丁会拦截该情况,检查`EquipmentRoster`是否存在,并使用备用方案(英雄的平民装备或空装备),从而防止游戏崩溃。
          * **新增保护系统,防止非战斗人员部队被游戏原生系统自动解散**:
          * **问题**:先前,当AI行动为一个非战斗人员英雄(无任何战斗技能≥100)创建一个真实的家族部队时,游戏原生的`TeleportationCampaignBehavior`可能会通过每日的`DailyTickParty`检查,自动用家族内的另一名指挥官替换该部队领袖。这会导致非战斗人员被移出部队,随后该部队被`DisbandPartyCampaignBehavior`解散。
          * **解决方案**:新增`NonCombatantPartyProtector`——一个特殊的`CampaignBehavior`,用于注册由AI行动(如`WaitNearSettlement`、`PatrolSettlement`、`GoToSettlement`、`FollowPlayer`、`CreateParty`)创建的部队,并在行动激活期间保护它们,防止自动领袖替换和解散。
          * **玩家提示**:当创建以非战斗人员为领袖的部队时,玩家会收到黄色警告,提示任务完成后游戏原生系统可能会解散该部队。
          * **自动处理**:所有行动现在都会在`OnUpdate`中追踪领袖替换,如果游戏原生系统仍然替换了领袖,行动将自动停止并发出橙色通知。行动完成后,保护将被移除,允许游戏原生系统正常运行(玩家已收到警告)。
          ```


          IP属地:江苏6楼2025-12-30 19:16
          回复
            ```diff
            修复内容:
            ------
            * **修复了`income_multiplier`经济效果的实现问题**:此前,定居点收入倍数虽在经济效果系统中存储,但从未实际应用于定居点收入计算。现已创建针对`DefaultClanFinanceModel.AddSettlementIncome`的Harmony补丁,以将`income_multiplier`应用于每个家族定居点的收入。
            * **叠加方式**:倍数相对于基础收入进行加法叠加。每个效果将其百分比变化加到基础收入上(例如,效果1.2 = +20%,效果1.1 = +10%,效果0.8 = -20%)。
            * **计算示例**:基础收入为100,效果为+20%和+10%时,总收入将为130,而非132,从而防止利润/亏损计算失真。
            * **效果失效**:当效果到期时,相应的百分比会从总收入中正确扣除。
            * **新增方法**:在`EconomicEffectsManager`中添加了`GetSettlementIncomeMultiplier()`方法,用于获取聚合后的定居点收入倍数。
            * **修复了执行关键AI行动出错时导致的对话卡死问题**:
            * **问题**:先前,在执行攻击、释放、投降、接受投降或结婚等行动时若发生错误,对话可能卡住且无法自动关闭。
            * **解决方案**:现在,针对这些行动的所有catch代码块在出错时都会强制关闭对话框,并清除相应标志,从而防止界面冻结。
            * **额外修复**:修正了`InitiateCombatLogic`:现在**始终**在开始战斗前关闭对话框,即使`EnableModification = false`时也是如此。
            ```


            IP属地:江苏7楼2025-12-30 19:16
            回复
              ```diff
              修复内容:
              ------
              * **修复了AI决定(释放)时在水域触发战斗窗口开启的问题**:先前,当玩家位于水域且AI决定不交战并释放玩家时,即使陆地上一切正常,战斗窗口仍会自动弹出。现在,系统能正确检测对话期间玩家是否位于任务中的水域,并妥善处理玩家遭遇事件:设置玩家保护、对NPC部队应用24小时的"禁止攻击"标志,并结束遭遇,从而防止战斗窗口错误开启。
              * **修复了执行释放命令后,AI仍攻击玩家跟随部队的问题**:先前,当AI决定释放玩家时,仅玩家的主部队获得12小时保护,但跟随玩家的其他部队并未受保护,导致和平分手后这些部队立即遭到攻击。现在,使用释放命令时,玩家的主部队及所有跟随部队均会获得保护:为它们全部设置24小时的"禁止攻击"标志,防止和平分手后遭到攻击。
              * **修复了NPC对宣战的情绪状态逻辑**:先前,世界上任何宣战行为都会导致NPC情绪变为"紧张",即使该战争未影响其阵营或家族。现在,情绪变化仅在该战争直接影响NPC所属阵营(王国)或家族时才会触发,使反应更加真实和符合逻辑。
              ```


              IP属地:江苏8楼2025-12-30 19:17
              回复
                ```diff
                修复内容:
                ------
                * **修复了AI同时决定释放并停止跟随玩家时缺少提示的问题**:先前,当AI同时决定释放玩家(决定:“释放”)并停止跟随(技术性动作:“停止跟随”)时,不会显示任何关于AI已停止跟随的提示。现在,系统会在停止跟随时检查决定是否为“释放”,并显示提示通知玩家跟随已停止。
                * **修复了定居点占领事件中NPC角色判定逻辑**:先前,作为军队领袖或参与者攻占了敌方定居点的NPC,可能会收到错误的消息,例如显示“你失去了控制”而非“你攻占了”或“你协助攻占了”。现在,系统通过检查围城事件、占领者所属军队及阵营,能够正确判定NPC在占领事件中的参与角色,从而区分军队领袖(“你率领军队攻占了……”)、围城参与者(“你协助攻占了……参与了此次围城”)以及防御方(“你的阵营失去了……”或“你失去了对……的控制”)。
                * **修复并改进了NPC上下文保存系统**:
                * **初始化**:现在,王国领袖的上下文会在游戏开始时创建并每日检查,确保所有领袖都拥有其上下文。
                * **保存**:玩家附近NPC的上下文现在能被正确标记为已初始化并保存。
                * **数据合并逻辑**:改进了保存时的数据合并逻辑。现在,JSON文件中的所有用户编辑内容均会被保留,不会被自动覆盖。
                * **具体字段**:`已知秘密`、`已知信息`、`AI生成性格`、`AI生成背景故事`、`AI生成言语特征`、`对话历史`、`近期事件`等字段均受此保护。
                * **工作方式**:`已知秘密`和`已知信息`现在的工作方式与AI生成内容类似——只要文件存在就总是从文件中加载,允许用户自由编辑这些数据而无需设置特殊标志。
                ```


                IP属地:江苏9楼2025-12-30 19:18
                回复
                  2026-03-07 04:53:01
                  广告
                  不感兴趣
                  开通SVIP免广告
                  ```diff
                  修复内容:
                  ------
                  * **修复了MCM设置中“清除当前存档数据”按钮的外交数据清理功能**:
                  * **之前问题**:内存中有6个外交子系统未得到清理,磁盘上有4个文件未被删除。
                  * **修复内容**:现在所有子系统均在内存中被清除,磁盘上全部9个外交相关文件均被删除。
                  * **新增方法**:添加了`ClearDialogueAnalysisEvents()`方法,用于清除所有NPC在内存及JSON文件中的对话分析外交事件。
                  * **逻辑说明**:对话分析事件属于外交系统(可触发外交行动),因此它们与常规NPC事件分开,被正确地与外交数据一同清理。
                  * **修复了AI试图攻击己方定居点的问题**:
                  * **之前问题**:AI可能对属于自己或其阵营的定居点下达`围攻定居点`或`劫掠村庄`的行动指令,导致无限自我宣战和错误。
                  * **修复内容**:现在在代码层面添加了定居点所有权检查。在执行行动前,系统会检查该定居点是否属于英雄的家族、其所在王国,或其附属城堡/城镇。
                  * **处理方式**:如果定居点属于该英雄,行动将被阻止并记录错误,从而防止攻击己方领地的企图。
                  ```


                  IP属地:江苏10楼2025-12-30 19:19
                  回复
                    ```diff
                    修复内容:
                    ------
                    * **修复了加载游戏后,“世界事件”窗口中事件与统治者声明显示顺序错乱的问题**:
                    * **之前问题**:事件仅在各来源内按创建时间排序,合并时会导致整体顺序错误。同时,声明的`Timestamp`字段在转换为游戏内天数时可能不准确。
                    * **修复内容**:重构了`LoadRealData()`方法。现在,所有来源的事件在添加到用户界面前会先合并;创建了`CollectEventEntries()`方法来收集所有条目,并使用统一的游戏内天数时间戳;所有条目现在按创建时间统一排序。
                    * **技术细节**:在`DiplomaticStatementsStorage`中,已修复声明时间的存储方式:现在直接使用游戏内天数,而不再通过`Timestamp`字段转换。事件的顺序现在无论在游戏内创建还是加载存档后都保持稳定且正确。移除了251行重复代码。
                    * **修复了NPC角色扮演死亡系统**:
                    * **之前问题**:玩家可以通过角色扮演杀死任何NPC,即使该NPC正带领军队在大地图上,这不合逻辑。
                    * **新增死亡条件检查**:NPC**仅**在以下情况可通过角色扮演杀死:
                    1. 处于任务或战斗中。
                    2. 是玩家的俘虏,或在城镇/城堡的监狱中。
                    3. 在玩家的队伍中。
                    4. 在没有部队的定居点内。
                    5. 在地图上单独行动。
                    * **限制条件**:NPC在以下情况**不可**被杀死:
                    1. 在大地图上带领部队。
                    2. 是地图上其他部队的俘虏。
                    * **提示字段控制**:只有当NPC在当前情境下可被杀死时,AI提示中才会显示`character_death`字段;如果条件不满足,该字段将完全隐藏,防止AI尝试杀死无法触及的NPC。
                    * **双重保护**:在提示层面进行字段隐藏,并在AI响应处理层面进行执行阻止。
                    ```


                    IP属地:江苏11楼2025-12-30 19:20
                    回复
                      ```diff
                      修复内容:
                      ------
                      * **修复了NPC主动行动概率计算中缺失的浪漫关系加成问题**:先前,浪漫关系加成未应用于NPC主动行动概率的计算,因为计算时使用的上下文数据来自可能不同步的内存缓存。现在,在计算概率前会通过`GetOrCreateNPCContext()`刷新上下文,确保使用来自文件的最新`RomanceLevel`数据。此外,增加了在应用加成前检查`RomanceLevel`值的调试日志,以便追踪系统运行的正确性。
                      * **修复了AI设定积极状态时,语气相关的关系值增长错误**:先前,`ApplyRelationChangeWithDelay`方法使用`ChangeRelationAction.ApplyRelationChangeBetweenHeroes`,而该方法会通过`GetHeroesForEffectiveRelation`将英雄替换为其家族领袖,导致关系变化作用于整个家族而非特定NPC。现在,该方法通过`SetPersonalRelation`直接设置关系,绕过了`GetHeroesForEffectiveRelation`,确保了关系变化仅作用于当前交谈的特定NPC,而非其整个家族。
                      ```


                      IP属地:江苏12楼2025-12-30 19:21
                      回复
                        ```diff
                        修复内容:
                        ------
                        * **修复了在不退出游戏的情况下创建新存档时,数据在战役间错误传递的关键问题**:
                        * **之前问题**:创建新存档时,先前战役的事件以及所有外交系统的数据会残留在内存中,并出现在新战役的AI提示里。
                        * **问题根源**:`OnSessionLaunched` 在重复调用时跳过了初始化(`_isInitialized` 标志保持为 true),且单例系统在内存中保留了旧数据。
                        * **修复内容**:
                        1. `OnSessionLaunched` 现在包含通过 `UniqueGameId` 进行的战役变更检查。
                        2. 检测到新战役时,自动调用 `ResetAllSystems()`。
                        3. `ResetAllSystems()` 会重置所有单例系统并清除其内存中的数据。
                        * **新增功能**:为所有外交系统添加了 `Reset()` 方法,用于清空其内部集合并将 `_instance` 置空。
                        * **已有功能**:`DynamicEventsManager.Reset()` 方法已存在,现确保在战役变更时调用。
                        * **结果**:所有系统在创建新存档时能正确重新初始化,旧战役数据不再出现在新战役中。
                        * **日志改进**:增强了 `DynamicEventsStorage` 中的日志记录,以按战役ID追踪事件加载。
                        ```


                        IP属地:江苏13楼2025-12-30 19:22
                        回复
                          ```diff
                          改进内容:
                          ---------
                          * **改进了AI俘虏的任务状态显示**:现在,对于玩家队伍中的俘虏,“你的当前任务”部分会显示完整信息,说明其因身为俘虏而无任务,并附带玩家队伍名称和当前位置信息。
                          * **改进了提示中的AI言语特征系统**:从“言语特征”部分移除了重复的言语特征信息,现在它们仅在回复字段的指令中显示,以便更清晰地控制AI。
                          * **优化了`UpdateWarStatus`方法以修复性能问题**:先前,该方法为每个NPC单独调用,且每次都会遍历游戏中的所有王国和家族,每次调用约耗时75毫秒。现在,战争状态改为每日计算一次并缓存,然后分配给所有NPC的上下文,将执行时间从约2200毫秒减少到约5毫秒。
                          ```


                          IP属地:江苏14楼2025-12-30 19:22
                          回复
                            ```diff
                            ================================================================================
                            AI影响力 — 更新日志 v3.3.1
                            ================================================================================
                            修复内容:
                            ------
                            * **修复了游戏重启后贸易协议丢失的严重问题**。
                            * **修复了AI生成角色数据的保存问题**:先前,如果文件中对应字段为空,即使AI生成了新值,在交互后这些字段也不会被保存。现已修复保存逻辑:如果文件中字段为空,但当前上下文有生成值,则将其保存。如果文件中有非空值(包括用户手动编辑的内容),则保留原值。这使用户可以在JSON文件中手动编辑这些字段,且更改将被保留。
                            * **修复了检测到谎言时信任度不下降的问题**:先前,在检测到谎言后,`LiePenaltySum`会增加,但`TrustLevel`没有立即重新计算,导致信任度未下降。现在,在检测到谎言后会立即调用`UpdateTrustLevel()`,以根据新的惩罚重新计算信任度。同时修复了在基础模式下(`UseAdvancedTrust = false`)计算信任度时未考虑`LiePenaltySum`的问题。
                            ```
                            @everyone @here <@&1430478966585688095>
                            **是时候进行一些小修补了.....**


                            IP属地:江苏15楼2025-12-30 19:23
                            回复
                              2026-03-07 04:47:01
                              广告
                              不感兴趣
                              开通SVIP免广告
                              3.3大地图似乎很容易卡个几秒


                              IP属地:福建来自Android客户端16楼2025-12-30 21:42
                              收起回复