骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[版主推荐] 战团中战场人数调大后,发生定时卡顿的代码优化(全MOD通用)[更新TXT修改方法]]

  [复制链接]

87

主题

1447

回帖

2415

积分

子爵[版主]

游小明
枢机主教

Rank: 7Rank: 7Rank: 7

UID
74938
第纳尔
12118
精华
3
互助
129
荣誉
101
贡献
167
魅力
554
注册时间
2008-4-28

维京征服正版勋章

鲜花(1259) 鸡蛋(0)
发表于 2022-3-2 16:54:42 | 显示全部楼层 |阅读模式
本帖最后由 aliang227 于 2022-6-15 17:57 编辑
# 更新TXT修改方式,有同样问题想自行修改的汽油可以参考下。详见48楼。
# 手头上有源码,但对MS代码不是很精通的汽油,也可以参看8楼,有相对简单点的修改方法。


当玩家通过修改battle_size参数,或用战场人数调节工具修改战场人数上限,把战场人数改到2、300人的时候,野战时会有一个比较规律性的顿卡,配置高的会定时掉帧,配置低的会定时顿一下。
开始我以为是自己代码的问题,后来发现战团原版也会有这个问题。经过多次观察和排查之后,基本锁定了是在lead_charge这个mt里的这个触发器:

  1.       (3, 0, 0, [ (call_script, "script_apply_effect_of_other_people_on_courage_scores"),], [ ]), #calculating and applying effect of people on others courage scores
复制代码

引用的script代码如下:
(点击展开 / 收起)

我们在做MOD的时候,对于原版的代码一般都尽量不会动他的框架,更多的是改改判定和数值,因为默认原版的代码要比自己写的好一些。但是这个署名 #ozan 的代码确实不敢恭维。
我们先看看他这个script到底想干嘛:
1,以一个agent为中心,判断周围agent和他的关系。第一个雷点:这个是两个agent循环嵌套,相信有过一定MOD开发经验的作者都会尽量避免这种搞法,因为条件限制不足的话必卡。150战场就是150*150=25500次循环,300人战场就是90000次循环。

2,判断是否在一个队伍,如果是的话就根据周围agent自身的血量,来计算其勇气值(courage_score)。第二个雷点:这个值相同时间内是定的,即使要算,单列出来算只需要循环agent数量次,但是他放在第二个循环内,每次就计算了agent数量个平方次,也就是只需要算300次的东西他给算了90000次。

3,按照中心agent和周围agent的是否逃跑状态,来分为四种情况
  1)中心agent在逃跑,周围agent没逃跑:增加中心agent相应勇气值。也就是让逃跑的人再回头继续打架。
  2)中心agent没逃跑,周围agent没逃跑:什么事情也没发生。这是大多数情况,也就是每3秒都在干这个没意义的运算,然后啥事没有。搁这儿挖矿呢……
  3)中心agent没逃跑,周围agent在逃跑:减少两倍中心agent的相应勇气值。也就是没逃跑的被逃跑的人动摇了。
  4)中心agent在逃跑,周围agent在逃跑:减少中心agent相应勇气值。但是他这块写错了,几个局部变量的混用估计把自己弄糊涂了,这个情况实际是不会生效的,全算在情况3里头了。

4,根据两者的距离来计算倍率,越近影响越大。而远了的呢? 照算不误,只是不加进来。

归纳一下他的想法,agent逃跑时会影响周围一定范围内的人,周围的人如果没跑,那人减勇气,自己加勇气;周围的人如果在跑,两边都减勇气。
因此优化的途径也是把他代码和思路的雷点避开掉:
1,有逃跑的人才开算,而且只循环逃跑的人,没跑的我管他干嘛;
2,把一些不必要放在二次循环的内容单拿出来算,用的时候直接调就行,减少运算量;
3,修正两个人都在跑时的勇气计算

因此我照此思路修改后的代码如下:

1,mt里把原来那个触发器注释掉,修改为以下内容。也就是直到有人跑的时候才开始计算,并把跑的人数和agent_no预先保存下来,以减少循环和计算。
说明一下, slot_item_temp_slot 这个临时slot需要自己预先定义一下,因为ms里没有数组,我就用item随便定义了一个临时slot当数组。当然,如果你用troop/agent之类的都无所谓,看个人习惯了。

(点击展开 / 收起)


2,修改之前的script_apply_effect_of_other_people_on_courage_scores,或者新加个script_apply_effect_of_other_people_on_courage_scores_new以调用。思路也是如上所述:

1,预先计算每个人的勇气值,保存在临时slot里(slot_agent_temp_slot,需要自己先定义下)

2,增加一个入参,只对逃跑的agent周围进行循环,减少循环次数;

3,利用1.168增加的可选范围agent循环,用(try_for_agents, ":agent_no",pos2,160*1000), 将循环范围限制到其判定的最大范围内。但是得记得先(set_fixed_point_multiplier,1000), 然后避开pos0;

4,因为只从逃跑的agent角度出发了,因此以他为中心,判定时就只有两种情况了:

  1)周围的agent没跑,那么他自己会扣除中心agent计算出来的勇气值;中心agent则会自己增加周围没跑的agent计算出来勇气值;
  2)周围的agent也在跑,那么只让中心agent扣除周围agent计算出来的勇气值;因为周围agent也在逃跑的话,他之后也会循环到,没必要两人都扣,这样就会重复扣2次了。

5,根据两者距离乘以系数,最后附加到相应勇气slot里。


(点击展开 / 收起)


至此,应该修复与优化完成了,再进游戏开大战场时,应该不会再有这种3秒一次的卡顿了。如果还有的话,那就是其他代码造成的了。
因为是战团原版代码的问题,因此全MOD应该都是通用的,各位作者可随意使用。
虽然现在战团也差不多快到寿命的尾巴了,但给作品留个疙瘩还是有点难受,可以的话还是尽量避免掉吧。
另外最近还发现另外一个各类MOD可优化的点:如果你的装备贴图dds尺寸不是2的次幂的话,每次看到时载入贴图时将会发生顿卡,可能是会自动拉伸一下的原因,同时发生这种现象的贴图越多,画面会越卡。解决方式就是排查下textures文件夹的所有文件,把所有不合规格的贴图调整为256、512、1024之类的尺寸就好了。似乎只限装备贴图,图片那种mesh载入图之类的好像影响不大。

最后,如果优化完毕后的代码有什么粗心所致的疏忽或逻辑问题,也希望能指正探讨,大家一起学习。


评分

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

查看全部评分

鲜花鸡蛋

我的长枪依在  在2022-7-19 08:14  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
凛鸦的帝鹰女仆  在2022-7-11 23:16  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
黑骑士彼得斯  在2022-7-3 17:53  送朵鲜花  并说:高手赞啊!顺便鄙视一波t社低能代码
我的长枪依在  在2022-6-19 17:01  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
yangfandna  在2022-6-3 14:15  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
MatrixLee  在2022-5-26 23:38  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
只是个过路的  在2022-3-3 16:38  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
幼稚园殺手  在2022-3-2 17:44  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

87

主题

1447

回帖

2415

积分

子爵[版主]

游小明
枢机主教

Rank: 7Rank: 7Rank: 7

UID
74938
第纳尔
12118
精华
3
互助
129
荣誉
101
贡献
167
魅力
554
注册时间
2008-4-28

维京征服正版勋章

鲜花(1259) 鸡蛋(0)
 楼主| 发表于 2022-6-15 17:48:42 | 显示全部楼层
本帖最后由 aliang227 于 2022-6-18 15:54 编辑

补充一下TXT简单的修改思路吧,因为原意还是想和各位MOD作者讨论,然后直接从源码角度修改。
但确实有很多MOD的玩家也有这样的需求,而且对MS并不了解,或者没有所玩MOD的代码,只需要直接的TXT修改方法。这里还是对比了下供大家参考吧

1,打开MOD文件夹下的“mission_templates.txt”文件,ctrl+f 先搜索 “mst_lead_charge”这句

2,再ctrl+f搜索 “3.000000 0.000000 0.000000  1 1 1”,应该可以搜到类似这句:

3.000000 0.000000 0.000000  1 1 1 936748722493063474  0

因为每个MOD的script顺序不一,红色标记的这个数也可能不一样,所以还得自己确认清楚,现在这个数是原版native的。

3,然后有这样两种简单修改办法,任选其一:

a)  直接简单粗暴屏蔽这句,也就是逃跑的人不会影响周围人的士气,以及逃跑的人不会再反过头来战斗。估计实际影响也没那么大?


可将之前那句替换为(注意红色标记处需对应你MOD里所搜到的相应数字):

3.000000 0.000000 100000000.000000  1 1 1 936748722493063474  0

也就是把触发器中的 3,0,0改为 3,0,ti_once,只会触发一次


b) 有人逃跑的时候才触发,平时不触发。这种相对折衷一点,有人跑的时候战场人数应该也不多了,应该不会卡的那么明显

可将之前那句替换为(注意红色标记处需对应你MOD里所搜到的相应数字):
3.000000 0.000000 0.000000  10 2133 2 1224979098644774912 0 12 1 1224979098644774913 31 2 1224979098644774912 0 1704 1 1224979098644774913 1702 1 1224979098644774913 2147485347 1 1224979098644774913 545 3 1224979098644774913 15 1 2133 2 1224979098644774912 1 3 0 31 2 1224979098644774912 1  1 1 1 936748722493063474

当然根本解决方法还是源码修改了再编译更好些。乱舞水浒MOD已经改过了,其他一些国内MOD如果你搜不到上面那句的话,可能也是已经改过了,不用再做修改了。

上述修改未经测试,各位可以自行尝试之后再做反馈,多谢。



评分

参与人数 1魅力 +8 收起 理由
15653910782 + 8 原创内容,值得鼓励!

查看全部评分

鲜花鸡蛋

唐骑  在2023-9-10 23:48  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
英勇的苹果  在2023-5-19 21:44  送朵鲜花  并说:非常有用,膜拜大佬!
autumn901  在2023-5-9 16:44  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
autumn901  在2023-5-9 16:44  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
f75438947  在2022-11-26 17:35  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
15653910782  在2022-9-22 10:46  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
oplang  在2022-8-16 14:28  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
只是个过路的  在2022-8-15 11:49  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
我的长枪依在  在2022-7-17 08:10  送朵鲜花  并说:改1257黑暗年代mod有效.之前开298现在可以开398
撩刀凯歌  在2022-6-18 08:14  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

24

主题

3560

回帖

1095

积分

骑士

Rank: 4Rank: 4

UID
2781503
第纳尔
9816
精华
0
互助
4
荣誉
0
贡献
0
魅力
59
注册时间
2016-11-27

骑砍中文站APP会员勋章骑士美德之英勇勋章[杰出会员活跃勋章]霸主正版勋章元老骑士勋章战团正版勋章

鲜花(96) 鸡蛋(1)
发表于 2022-3-2 19:19:25 来自手机 | 显示全部楼层
顶一个,大佬,有没有TXT的修改方法

87

主题

1447

回帖

2415

积分

子爵[版主]

游小明
枢机主教

Rank: 7Rank: 7Rank: 7

UID
74938
第纳尔
12118
精华
3
互助
129
荣誉
101
贡献
167
魅力
554
注册时间
2008-4-28

维京征服正版勋章

鲜花(1259) 鸡蛋(0)
 楼主| 发表于 2022-3-2 22:53:36 | 显示全部楼层
15653910782 发表于 2022-3-2 19:19
顶一个,大佬,有没有TXT的修改方法

TXT修改比较困难,不过可以退而求其次只把触发器的前置条件加上,也就是有人逃跑的时候才做后续计算,那时候战场人数也不多了,卡顿应该可以缓解不少。

44

主题

392

回帖

291

积分

见习骑士

Rank: 3

UID
1941209
第纳尔
2845
精华
0
互助
26
荣誉
3
贡献
0
魅力
38
注册时间
2014-5-5

战团正版勋章维京征服正版勋章

鲜花(129) 鸡蛋(0)
发表于 2022-3-11 19:26:30 来自手机 | 显示全部楼层
楼主辛苦,很赞!

23

主题

331

回帖

266

积分

见习骑士

Rank: 3

UID
3189500
第纳尔
2549
精华
0
互助
24
荣誉
4
贡献
10
魅力
235
注册时间
2020-6-13
鲜花(66) 鸡蛋(0)
发表于 2022-3-13 00:12:43 来自手机 | 显示全部楼层
大佬威武!来自: Android客户端

0

主题

7

回帖

2

积分

平民

Rank: 1

UID
2820195
第纳尔
107
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-3-29
鲜花(0) 鸡蛋(0)
发表于 2022-3-13 21:22:41 来自手机 | 显示全部楼层
楼主大大,我玩的时候会很规律的卡顿,我感觉就是这个问题,可不可以请教一下我自己怎么修改呢,5900x结果玩潘德只能开240人。

0

主题

7

回帖

2

积分

平民

Rank: 1

UID
2820195
第纳尔
107
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-3-29
鲜花(0) 鸡蛋(0)
发表于 2022-3-13 22:15:30 来自手机 | 显示全部楼层
mikulalala 发表于 2022-3-13 21:22
楼主大大,我玩的时候会很规律的卡顿,我感觉就是这个问题,可不可以请教一下我自己怎么修改呢,5900x结果 ...

我不会制作mod。。不知道怎么修改mod的代码。

87

主题

1447

回帖

2415

积分

子爵[版主]

游小明
枢机主教

Rank: 7Rank: 7Rank: 7

UID
74938
第纳尔
12118
精华
3
互助
129
荣誉
101
贡献
167
魅力
554
注册时间
2008-4-28

维京征服正版勋章

鲜花(1259) 鸡蛋(0)
 楼主| 发表于 2022-3-13 22:29:02 | 显示全部楼层
mikulalala 发表于 2022-3-13 21:22
楼主大大,我玩的时候会很规律的卡顿,我感觉就是这个问题,可不可以请教一下我自己怎么修改呢,5900x结果 ...

具体表现形式就是每3秒会顿卡一次,自己改的话可以简化一下,只是把这个触发器
  1. (3, 0, 0, [ (call_script, "script_apply_effect_of_other_people_on_courage_scores"),], [ ]),
复制代码


替换为
  1.       (3, 0, 0, [
  2.       (assign,":rout_num",0),
  3.       (try_for_agents, ":agent"),
  4.           (eq,":rout_num",0),
  5.           (agent_is_human, ":agent"),
  6.           (agent_is_alive, ":agent"),
  7.           (neg|agent_is_routed,":agent"), #这句估计都可以不要?
  8.           (agent_slot_eq, ":agent", slot_agent_is_running_away,1),
  9.           (assign,":rout_num",1),
  10.       (try_end),
  11.       (eq,":rout_num",1),
  12.       ], [(call_script, "script_apply_effect_of_other_people_on_courage_scores"),]),
复制代码


可能都能缓解不少。  按说拿原版的ms编译后再比对下TXT应该就行了,但我机器码看的实在眼花,看有没有擅长做TXT修改的尝试下吧。

0

主题

7

回帖

2

积分

平民

Rank: 1

UID
2820195
第纳尔
107
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-3-29
鲜花(0) 鸡蛋(0)
发表于 2022-3-14 17:35:59 来自手机 | 显示全部楼层
aliang227 发表于 2022-3-13 22:29
具体表现形式就是每3秒会顿卡一次,自己改的话可以简化一下,只是把这个触发器



感谢回复,我应该在哪里找到并修改这些代码?我只有一点点C#的基础,昨天翻找mod文件也没有发现有类似这种代码的文件。

55

主题

2710

回帖

1755

积分

子爵[版主]

吟游诗人

Rank: 7Rank: 7Rank: 7

UID
3054380
第纳尔
23989
精华
2
互助
57
荣誉
44
贡献
916
魅力
1418
注册时间
2019-1-18

骑砍中文站APP会员勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章霸主正版勋章剧本设计大奖赛骑友真人秀Ⅷ勋章骑友真人秀Ⅶ勋章骑友真人秀Ⅸ勋章

QQ
鲜花(506) 鸡蛋(2)
发表于 2022-3-14 20:24:31 | 显示全部楼层
mikulalala 发表于 2022-3-14 17:35
感谢回复,我应该在哪里找到并修改这些代码?我只有一点点C#的基础,昨天翻找mod文件也没有发现有类似这 ...

Module_system里,一般Mod都不开源,所以找不到这些源码文件,但是你可以修改战团的,只需要下载战团的源码就行了
珍惜 奉献 不负韶华

16

主题

586

回帖

326

积分

见习骑士

Rank: 3

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

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

鲜花(51) 鸡蛋(0)
发表于 2022-3-14 20:29:19 | 显示全部楼层
15653910782 发表于 2022-3-2 19:19
顶一个,大佬,有没有TXT的修改方法

emmm,是要改哪个mod呢
崩!撤!卖!溜!

16

主题

586

回帖

326

积分

见习骑士

Rank: 3

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

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

鲜花(51) 鸡蛋(0)
发表于 2022-3-14 20:38:34 | 显示全部楼层
15653910782 发表于 2022-3-2 19:19
顶一个,大佬,有没有TXT的修改方法

如果只是战团native的话可以自己修改就行了,如果是某个mod的话,因为不同mod的参数id可能会不一样所以得告知一下目标。
崩!撤!卖!溜!

0

主题

7

回帖

2

积分

平民

Rank: 1

UID
2820195
第纳尔
107
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-3-29
鲜花(0) 鸡蛋(0)
发表于 2022-3-14 20:49:04 来自手机 | 显示全部楼层
幼稚园殺手 发表于 2022-3-14 20:24
Module_system里,一般Mod都不开源,所以找不到这些源码文件,但是你可以修改战团的,只需要下载战团的源 ...

请问有教程吗,下载了源码,修改好了具体又是怎么应用到游戏里的?

0

主题

7

回帖

2

积分

平民

Rank: 1

UID
2820195
第纳尔
107
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-3-29
鲜花(0) 鸡蛋(0)
发表于 2022-3-14 21:14:29 来自手机 | 显示全部楼层
huagao 发表于 2022-3-14 20:38
如果只是战团native的话可以自己修改就行了,如果是某个mod的话,因为不同mod的参数id可能会不一样所以得 ...

我想改潘德

0

主题

7

回帖

2

积分

平民

Rank: 1

UID
2820195
第纳尔
107
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-3-29
鲜花(0) 鸡蛋(0)
发表于 2022-3-14 21:48:01 | 显示全部楼层
刚才我在维京mod里开了一把400人的自定义战斗就没有这种卡顿、

55

主题

2710

回帖

1755

积分

子爵[版主]

吟游诗人

Rank: 7Rank: 7Rank: 7

UID
3054380
第纳尔
23989
精华
2
互助
57
荣誉
44
贡献
916
魅力
1418
注册时间
2019-1-18

骑砍中文站APP会员勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章霸主正版勋章剧本设计大奖赛骑友真人秀Ⅷ勋章骑友真人秀Ⅶ勋章骑友真人秀Ⅸ勋章

QQ
鲜花(506) 鸡蛋(2)
发表于 2022-3-15 07:22:14 | 显示全部楼层

首先你不要三连,其次这些MOD都是闭源的,所以源代码你是找不到的,你只能找战团的ms,战团的MS在制作区置顶有
珍惜 奉献 不负韶华

16

主题

57

回帖

22

积分

随仆

Rank: 1

UID
2999399
第纳尔
623
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2018-5-3
鲜花(1) 鸡蛋(3)
发表于 2022-3-15 20:13:23 | 显示全部楼层
TXT能改么?

51

主题

287

回帖

101

积分

见习骑士

Rank: 3

UID
2880114
第纳尔
1576
精华
0
互助
0
荣誉
0
贡献
0
魅力
3
注册时间
2017-9-30
QQ
鲜花(12) 鸡蛋(0)
发表于 2022-3-20 09:46:30 | 显示全部楼层
本帖最后由 djman 于 2022-3-20 10:02 编辑

战团还有很多可以优化的地方,上次看到一个提高加载速度的帖子

0

主题

7

回帖

2

积分

平民

Rank: 1

UID
3081639
第纳尔
1
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-16
鲜花(0) 鸡蛋(0)
发表于 2022-3-22 16:31:52 | 显示全部楼层
这个可以直接批量编译到潘德里面吗?我用的modsystem1171

0

主题

7

回帖

2

积分

平民

Rank: 1

UID
3081639
第纳尔
1
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2019-6-16
鲜花(0) 鸡蛋(0)
发表于 2022-3-22 18:04:11 | 显示全部楼层
试了一下,发现native400人以上可以流畅运行,但是潘德还是一样3秒卡一次。。(用的旧档,因为潘德没有自定义战斗)

60

主题

447

回帖

357

积分

见习骑士

Rank: 3

UID
2741644
第纳尔
5698
精华
0
互助
37
荣誉
2
贡献
15
魅力
393
注册时间
2016-4-23

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

鲜花(157) 鸡蛋(0)
发表于 2022-3-28 18:26:26 | 显示全部楼层
原script旨意是:
# 跑的降未跑的2士气 反之,不跑的加跑的1士气  (平衡士气)
# 跑的降跑的1士气       

在第一个try_for_agent 加个限制条件"跑的" 筛选就行,不需要用数组记录一遍逃跑的,再提出来循环,一样要套循环;
逃跑的对不逃跑的影响只有两种,除了玩家(这种情况不存在),英雄4士气普通2士气,
你新组的script跑的对跑的消极影响情况那里并没有乘以-1,后面又用的val_add
         (try_begin),#agent is not running
            (neq,":agent_is_running_away_or_not",1),
            (assign,":centered_agent_courage_score_add",":agent_delta_courage_score_pos"),
            (store_mul,":agent_courage_score_add",":centered_agent_delta_courage_score",-2),
          (else_try),#agent is running   
            (assign,":centered_agent_courage_score_add",":agent_delta_courage_score_neg"),
            (assign,":agent_courage_score_add",0),
          (try_end),
         ……
          #set center agent score
          (val_add,":centered_agent_courage_score",":centered_agent_courage_score_add"),

★★★【三国群英赋】★★★

87

主题

1447

回帖

2415

积分

子爵[版主]

游小明
枢机主教

Rank: 7Rank: 7Rank: 7

UID
74938
第纳尔
12118
精华
3
互助
129
荣誉
101
贡献
167
魅力
554
注册时间
2008-4-28

维京征服正版勋章

鲜花(1259) 鸡蛋(0)
 楼主| 发表于 2022-3-28 20:52:30 | 显示全部楼层
野蛮人y 发表于 2022-3-28 18:26
原script旨意是:
# 跑的降未跑的2士气 反之,不跑的加跑的1士气  (平衡士气)
# 跑的降跑的1士气       

第一个问题,不知道你是指的原来的script还是我新加的,如果是指原来的话,只把第一个循环限制为逃跑的应该行不通,因为避开了这个情况:
3)中心agent没逃跑,周围agent在逃跑:减少两倍中心agent的相应勇气值。

如果指新加的话,既然是优化,当然还是得尽量彻底,首先mt里的循环既然发现了,就可以直接提出来作为较为可控的循环范围。try_for_agents这个循环效率很低,即使加个“跑的”,仍免不了判断是否为human,是否活着,再判断逃跑与否的slot,就算放在第一句,循环也会把全部agent过一遍。我这里也只是提供一种思路,很多附带战场ai控制的MOD可能就是这类循环写的过多造成的人多就会卡顿的现象。


第二个问题,确实是我疏忽了,在赋值的时候

(assign,":agent_delta_courage_score_pos",":agent_delta_courage_score"),

(assign,":agent_delta_courage_score_neg",":agent_delta_courage_score"),
写成这样应该更合适,可读性更好一些
(store_mul,":agent_delta_courage_score_pos",":agent_delta_courage_score",1),

(store_mul,":agent_delta_courage_score_neg",":agent_delta_courage_score",-1),

命名的时候加了个"_neg" 就以为负过了,惭愧,感谢提出,已经重新修改过了。



87

主题

1447

回帖

2415

积分

子爵[版主]

游小明
枢机主教

Rank: 7Rank: 7Rank: 7

UID
74938
第纳尔
12118
精华
3
互助
129
荣誉
101
贡献
167
魅力
554
注册时间
2008-4-28

维京征服正版勋章

鲜花(1259) 鸡蛋(0)
 楼主| 发表于 2022-3-28 20:59:03 | 显示全部楼层
君悦大大牛逼 发表于 2022-3-22 18:04
试了一下,发现native400人以上可以流畅运行,但是潘德还是一样3秒卡一次。。(用的旧档,因为潘德没有自定 ...

native的ms应该不能编译到未开源的mod里头吧

而且自定义战斗测试应该和游戏战场是没关系的,因为用的不是一个mt,没有士气之类的设定,所以本身应该就不会发生这种顿卡

鲜花鸡蛋

君悦大大牛逼  在2022-3-30 12:04  送朵鲜花  并说:谢谢大佬

20

主题

32

回帖

26

积分

随仆

Rank: 1

UID
3206557
第纳尔
230
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2020-11-9
鲜花(0) 鸡蛋(0)
发表于 2022-3-29 09:41:56 | 显示全部楼层
大佬请问一下,这些是放在哪些文件里面的,我有源代码文件

1

主题

14

回帖

10

积分

随仆

Rank: 1

UID
3332715
第纳尔
56
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2022-3-2
鲜花(0) 鸡蛋(0)
发表于 2022-4-1 16:16:53 来自手机 | 显示全部楼层
原来是这个原因啊,感谢大佬,可惜汉匈决战没有源代码

1

主题

14

回帖

10

积分

随仆

Rank: 1

UID
3332715
第纳尔
56
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2022-3-2
鲜花(0) 鸡蛋(0)
发表于 2022-4-1 16:17:12 来自手机 | 显示全部楼层
大佬们,攻城的时候怎么不进入城镇和府衙场景,一次性打完

0

主题

17

回帖

60

积分

扈从

Rank: 2Rank: 2

UID
1921666
第纳尔
1821
精华
0
互助
5
荣誉
3
贡献
0
魅力
8
注册时间
2014-4-25

汉匈决战正版勋章战团正版勋章

鲜花(49) 鸡蛋(0)
发表于 2022-4-14 17:58:28 | 显示全部楼层
本帖最后由 貫一 于 2022-4-14 18:03 编辑

示例
slot_item_temp_slot     = 236 #
slot_agent_temp_slot     = 237 #
#236,237,是我自己用的数值,可以用其它数值。前提是这数值是module_constants.py里不重复的,没被使用过的数值,理论上数值越小越好,前提是不重复。

我一个外行人不太懂,但是感觉是楼主在写解决战场卡顿的代码,不是对于大地图卡顿。

鲜花鸡蛋

mxwell  在2022-11-18 12:28  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
ggfgfgf  在2022-8-20 10:57  送朵鲜花  并说:感谢补充!
将能 而君不御者 胜

15

主题

46

回帖

18

积分

随仆

Rank: 1

UID
1189089
第纳尔
360
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2013-2-4
鲜花(1) 鸡蛋(0)
发表于 2022-4-16 15:06:21 来自手机 | 显示全部楼层
看来txt修改貌似比较麻烦呐

16

主题

57

回帖

22

积分

随仆

Rank: 1

UID
2999399
第纳尔
623
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2018-5-3
鲜花(1) 鸡蛋(3)
发表于 2022-4-22 23:56:17 | 显示全部楼层
蹲一蹲 看哪位大神会用TXT修改这个

0

主题

3

回帖

6

积分

平民

Rank: 1

UID
3353733
第纳尔
35
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2022-4-27
鲜花(0) 鸡蛋(0)
发表于 2022-4-28 03:04:17 来自手机 | 显示全部楼层
凉大,为什么人一多就容易闪退
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-4-19 09:00 , Processed in 0.186693 second(s), 52 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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