骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 1424|回复: 10

[经验与教程] [狂人的知识]大地图降压

[复制链接]

32

主题

72

回帖

181

积分

见习骑士

Rank: 3

UID
3199602
第纳尔
1041
精华
0
互助
30
荣誉
0
贡献
1
魅力
203
注册时间
2020-9-4
鲜花(54) 鸡蛋(0)
发表于 2023-2-3 17:28:07 | 显示全部楼层 |阅读模式
本帖最后由 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分为了三部分处理,每小时只处理其中的三分之一。之所以不直接改触发时间,是因为那仅仅是把一个小时卡一次延长到几个小时卡一次而已,该卡还是卡,不如将其分摊到每个小时。
代码如下

(点击展开 / 收起)

    这套方法可以给try_for_agents、try_for_parties、try_for_prop_instances等任何臭又长循环降压,只要把其中两个4改成想要的数字就能修改其拆分的份数。尤其是script_process_kingdom_parties_ai这个脚本,最好还是给它降一下压。这个脚本完全屏蔽了都不会影响领主最基础的追击、战斗、逃跑ai,而受其控制的复杂决策,比如什么烧村攻城吃席巡逻等,并不需要每小时刷新。我这里是给它拆分成了四份,即使有400领主,每小时也只要做100人的决策,比战团原本的还要少一点,大地图流畅度一下子就上去了。
    不过正如最开头所说的,这种处理方法有可能导致未知的问题,如果该循环被用来计时计数,拆分之后可能会使结果不准,所以使用之前最好研判一下代码内容,使用之后也要做好记录,便于出现问题后即时修正。

点评

很好!  发表于 2023-2-4 09:08

评分

参与人数 2第纳尔 +20 互助 +1 魅力 +22 收起 理由
Aomine Daiki + 10 + 20 您的帖子很有价值!
幼稚园殺手 + 10 + 1 + 2 您的帖子很有价值!

查看全部评分

鲜花鸡蛋

aliang227  在2023-2-7 15:29  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
815208129  在2023-2-4 09:09  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
815208129  在2023-2-4 09:08  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

16

主题

585

回帖

325

积分

见习骑士

Rank: 3

UID
3102512
第纳尔
2380
精华
0
互助
29
荣誉
0
贡献
0
魅力
63
注册时间
2019-9-6

骑砍中文站APP会员勋章战团正版勋章霸主正版勋章

鲜花(51) 鸡蛋(0)
发表于 2023-2-4 09:03:20 来自手机 | 显示全部楼层
喜欢~,下次有这样的好内容,记得分享哦来自: Android客户端

16

主题

585

回帖

325

积分

见习骑士

Rank: 3

UID
3102512
第纳尔
2380
精华
0
互助
29
荣誉
0
贡献
0
魅力
63
注册时间
2019-9-6

骑砍中文站APP会员勋章战团正版勋章霸主正版勋章

鲜花(51) 鸡蛋(0)
发表于 2023-2-6 19:17:08 | 显示全部楼层
刚刚看了一下这三个,十分难顶,不适感很强烈
崩!撤!卖!溜!

5

主题

101

回帖

72

积分

扈从

暴风骑士团(SK)
战团ID:SK_Zyz

Rank: 2Rank: 2

UID
209971
第纳尔
377
精华
0
互助
4
荣誉
2
贡献
5
魅力
0
注册时间
2010-3-6

骑士美德之诚信勋章原版正版勋章战团正版勋章拿破仑正版勋章战团正版勋章元老骑士勋章霸主正版勋章

鲜花(7) 鸡蛋(0)
发表于 2023-5-8 20:31:34 | 显示全部楼层
请问这个代码是直接复制粘贴到simple_trigger里吗
“我们已经设定了一个目标,并将为之努力奋斗,直到永恒!”

29

主题

688

回帖

550

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1738
精华
0
互助
67
荣誉
0
贡献
0
魅力
4
注册时间
2022-2-3
鲜花(55) 鸡蛋(0)
发表于 2023-5-8 23:35:25 来自手机 | 显示全部楼层
地球上只有一国 发表于 2023-5-8 20:31
请问这个代码是直接复制粘贴到simple_trigger里吗

你到底有没有看完我写的东西?我觉得写的已经很明白了,这个帖子介绍的是针对simple trigger里三个脚本的改良方法,修改部分在脚本里,你问我这东西能不能复制粘贴进simple trigger?
我看你在很多帖子下问能不能复制粘贴了,这样把自己一知半解的代码囫囵吞枣地塞进自己的mod,恐怕不会有好结果的。来自: Android客户端

鲜花鸡蛋

地球上只有一国  在2023-5-9 09:46  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

5

主题

101

回帖

72

积分

扈从

暴风骑士团(SK)
战团ID:SK_Zyz

Rank: 2Rank: 2

UID
209971
第纳尔
377
精华
0
互助
4
荣誉
2
贡献
5
魅力
0
注册时间
2010-3-6

骑士美德之诚信勋章原版正版勋章战团正版勋章拿破仑正版勋章战团正版勋章元老骑士勋章霸主正版勋章

鲜花(7) 鸡蛋(0)
发表于 2023-5-9 09:50:32 | 显示全部楼层
本帖最后由 地球上只有一国 于 2023-5-9 10:02 编辑
112233lyh 发表于 2023-5-8 23:35
你到底有没有看完我写的东西?我觉得写的已经很明白了,这个帖子介绍的是针对simple trigger里三个脚本的 ...

我是小白 不会写代码。。

如果你愿意深入浅出的指导我 我很愿意包红包
“我们已经设定了一个目标,并将为之努力奋斗,直到永恒!”

29

主题

688

回帖

550

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1738
精华
0
互助
67
荣誉
0
贡献
0
魅力
4
注册时间
2022-2-3
鲜花(55) 鸡蛋(0)
发表于 2023-5-9 11:15:23 来自手机 | 显示全部楼层
地球上只有一国 发表于 2023-5-9 09:50
我是小白 不会写代码。。

如果你愿意深入浅出的指导我 我很愿意包红包

你说说看现在自己是个什么程度。你是有ms了吧?ms里各个文件你都知道各自是什么东西吗?来自: Android客户端

5

主题

101

回帖

72

积分

扈从

暴风骑士团(SK)
战团ID:SK_Zyz

Rank: 2Rank: 2

UID
209971
第纳尔
377
精华
0
互助
4
荣誉
2
贡献
5
魅力
0
注册时间
2010-3-6

骑士美德之诚信勋章原版正版勋章战团正版勋章拿破仑正版勋章战团正版勋章元老骑士勋章霸主正版勋章

鲜花(7) 鸡蛋(0)
发表于 2023-5-9 11:32:07 | 显示全部楼层
112233lyh 发表于 2023-5-9 11:15
你说说看现在自己是个什么程度。你是有ms了吧?ms里各个文件你都知道各自是什么东西吗?

刚下载 知道大概理念 编译和反编译  知道部分文件是什么  Notepad也下了
“我们已经设定了一个目标,并将为之努力奋斗,直到永恒!”

32

主题

72

回帖

181

积分

见习骑士

Rank: 3

UID
3199602
第纳尔
1041
精华
0
互助
30
荣誉
0
贡献
1
魅力
203
注册时间
2020-9-4
鲜花(54) 鸡蛋(0)
 楼主| 发表于 2023-5-9 13:44:22 | 显示全部楼层
地球上只有一国 发表于 2023-5-9 11:32
刚下载 知道大概理念 编译和反编译  知道部分文件是什么  Notepad也下了

首先有四种文件,header开头的主要是些内容的定义,比如“非平衡”“倒地即死”等等标签(叫flag),其中最重要的header_operation,这个里面都是mod必须要使用的操作符。
module开头的文件是mod的核心,也是一般来说写mod加东西该加到的地方。
ID开头的文件不重要,编译的时候会自动根据module中的元素生成,就是一个序号的注册。
process文件是对module文件的处理方式,这个比较复杂,短时间内你应该不会涉及修改它的内容。

然后module中
animations是动作,包括攻击、防御、走路、站岗等等骨骼动画的各种参数设置。
constants是个注册性质的文件,比如我把troop的第155号slot注册成slot_troop_leading_auxiliary,写功能时需要用它时就直接写slot_troop_leading_auxiliary就行了,不至于写个155然后记不清里面填的什么内容,目前你不用去管它。
dialogs是游戏内的所有对话,factions是阵营。
game_menus是目录,你点进入游戏的然后“冒险者,欢迎你来到卡拉迪亚”等等,从那里开始的都是目录。
items是物品,map_icons是大地图上各种据点的图标。
meshes是网格模型。不属于item、scene_prop等但又必须用在游戏中的模型,就注册在这里。实例的话,进城镇那个目录旁边的铅笔画就是个mesh。
mission_templates里写了各种进入场景后的各种操作。比如城镇里市民往哪里走路、战场上放技能、敌人什么时候刷兵、竞技场能不能穿自己的装备等等。战斗ai也是写在这里面。
music是音乐。
particle_systems是粒子系统,就是火把火焰剑水花那些东西。
parties是部队,领主的部队基本都是开场后生成的,这里定义的主要是些不会动的据点,但都是部队。这个魔球玩多了自然就懂。
party_templates是部队模板。
presentations是界面,目录其实就是一种已经帮你写好了格式的界面,界面里什么东西都可以你自己挑,甚至可以上图和放动画。战场上你按退格键打开的指挥面板就是个界面。
quests是任务,不过这个文件比较简单,里面只有任务的名字。
scene_props是场景模型,就是什么房子城墙树木石头等等。人死了之后尸体也是scene_props。
scenes是场景,所有游戏中能进到的场景都必须在这里填写相关参数和性质。
scripts是脚本,这个性质比较特殊,它并不对应游戏中某个具体的东西,而可以看作一个“工具”的集合。在script里写的东西只要不被用在别的地方,就不会对游戏有任何影响,而只要写好了,一个script可以在任何一个文件中使用。如果你有很多重复的代码,可以把重复代码写成一个脚本打包起来,这样下次要用时就只要调用这个脚本了。我还挺喜欢层层封装。
simple_triggers和triggers都是大地图上的触发器,后者魔球玩多了应该知道,前者相当于不写触发条件的一般triggers。
skills是技能,不过基本也就写了个名字,而且不建议新增。它里面有十多个为启用的,把那些启用了基本就能满足需求了。
skins是字面上是皮肤,其实是种族。男女游戏里算不同种族,战团还自带了不死者,不过没用上。
sounds是音效。
strings是字符串,想在游戏里写字就用这个。
tableau_materials是立绘,要举例的话,就是角色面板左上角站着的那个人,以及消息里领主半身像这些东西。
troops是兵种。
基本就是这样了。

32

主题

72

回帖

181

积分

见习骑士

Rank: 3

UID
3199602
第纳尔
1041
精华
0
互助
30
荣誉
0
贡献
1
魅力
203
注册时间
2020-9-4
鲜花(54) 鸡蛋(0)
 楼主| 发表于 2023-5-9 13:45:17 | 显示全部楼层
地球上只有一国 发表于 2023-5-9 11:32
刚下载 知道大概理念 编译和反编译  知道部分文件是什么  Notepad也下了

你有没有那个叫《骑马与砍杀MOD系统教材》的PDF?你要的话我发一个给你也可以。
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-4-16 20:15 , Processed in 0.121156 second(s), 26 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表