- 好友
- 4
- 在线时间
- 0 小时
- 最后登录
- 2025-1-25
见习骑士

- UID
- 3199602
- 第纳尔
- 1162
- 精华
- 0
- 互助
- 36
- 荣誉
- 0
- 贡献
- 1
- 魅力
- 227
- 注册时间
- 2020-9-4
 鲜花( 60)  鸡蛋( 0)
|
本帖最后由 Aomine Daiki 于 2023-2-8 15:51 编辑
(该方法有一定可能造成不可测的后果,请谨慎考虑是否采用)
前段时间我把大地图填充了一下,领主加到了快400人,城镇村加起来也有五六百,结果在大地图移动就变得奇卡无比,几乎游戏内每个小时都要卡一下,但是暂停后转动视角什么的都很流畅,明显这个问题某触发器导致的。
经分析罪魁祸首是simple_trigger中标有 # Process alarms - perhaps break this down into several groups, with a modula的触发器(在我这里是35号),这个触发器的内容是
# Process alarms - perhaps break this down into several groups, with a modula
(1, #this now calls 1/3 of all centers each time, thus hopefully lightening the CPU load
[
(call_script, "script_process_alarms"),
(call_script, "script_allow_vassals_to_join_indoor_battle"),
(call_script, "script_process_kingdom_parties_ai"),
]),
其中运用的三个脚本都是每小时就要触发一次,第一个是城镇村的警报,疑似是玩家路过敌对城镇时会弹出“你被XXX发现了!”的那个;第二个是让领主加入所跟随的元帅的战斗;第三个更是重量级,影响的是领主的战略决策AI。这三玩意每个都设计party距离的判断,除了第二个用得比较少外,其他个个都有独门绝技,代码量和循环长度更是技惊四座,双层嵌套try_for_parties更是会给moder意外惊喜口牙。具体有多恐怖,看下面配图就知道了。

值得一提的是,这三个脚本中第一个脚本本身就是降压过的。夫妻档也知道这么写会卡死,所以用求余的办法将center分为了三部分处理,每小时只处理其中的三分之一。之所以不直接改触发时间,是因为那仅仅是把一个小时卡一次延长到几个小时卡一次而已,该卡还是卡,不如将其分摊到每个小时。
代码如下
(assign, ":current_modula", "$g_kingdom_ai_modula"),
(val_add, "$g_kingdom_ai_modula", 1),
(try_begin),
(eq, "$g_kingdom_ai_modula", 4),
(assign, "$g_kingdom_ai_modula", 0),
(try_end),
(try_for_range, ":troop_no", active_npcs_begin, active_npcs_end),
(store_mod, ":troop_modula", ":troop_no", 4),
(eq, ":troop_modula", ":current_modula"),
……
……
(try_end),
|
这套方法可以给try_for_agents、try_for_parties、try_for_prop_instances等任何臭又长循环降压,只要把其中两个4改成想要的数字就能修改其拆分的份数。尤其是script_process_kingdom_parties_ai这个脚本,最好还是给它降一下压。这个脚本完全屏蔽了都不会影响领主最基础的追击、战斗、逃跑ai,而受其控制的复杂决策,比如什么烧村攻城吃席巡逻等,并不需要每小时刷新。我这里是给它拆分成了四份,即使有400领主,每小时也只要做100人的决策,比战团原本的还要少一点,大地图流畅度一下子就上去了。
不过正如最开头所说的,这种处理方法有可能导致未知的问题,如果该循环被用来计时计数,拆分之后可能会使结果不准,所以使用之前最好研判一下代码内容,使用之后也要做好记录,便于出现问题后即时修正。
|
评分
-
查看全部评分
鲜花鸡蛋我只玩MID 在2024-7-22 00:41 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 aliang227 在2023-2-7 15:29 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 815208129 在2023-2-4 09:09 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 815208129 在2023-2-4 09:08 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下
|