骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买霸主CDKEY 购买战帆CDKEY
查看: 44489|回复: 62

[分享] 【修改】战利品算法改进

  [复制链接]

12

主题

41

回帖

141

积分

见习骑士

Rank: 3

UID
116736
第纳尔
755
精华
0
互助
17
荣誉
4
贡献
0
魅力
24
注册时间
2009-2-22
鲜花(36) 鸡蛋(0)
发表于 2013-11-10 17:10:02 | 显示全部楼层 |阅读模式
本帖最后由 jppjpp 于 2013-11-11 14:47 编辑

战利品撸(loot)法改进:

一、概要
所谓战利品,指的是战斗胜利后,玩家从每个参战敌人的物品栏撸东西,1人撸1次,撸完取最贵96个,特殊战利品不在此列。
战团1.153的战利品算法基本原理就是,每次战后派一个“中间人”把敌人撸一遍,撸满96个物品结束。
潘德3.611的战利品算法有所改进,每次战后派三个“中间人”把敌人撸一遍,撸满288个物品后取最贵96个物品结束。
上述算法都有个问题:不管是撸96个还是撸288个,如果撸满了,剩下的敌人就不撸了。
而玩家的心理期望值是,打完的敌人都能撸到一条裤衩不剩才好,然后拿96个最贵的,撸不撸的出东西看运气。

下面我们实战演练说明问题:
演习男主角:初级斗士。(他当男主角不是因为长得帅,而是这家伙包里只有一双破鞋,撸没撸到一目了然)。
(点击展开 / 收起)

第一次演习:(老算法)玩家 VS “马儿踢死恐惧军团”
(点击展开 / 收起)

第二次演习:(老算法)玩家 VS “马儿踢死恐惧军团”+1500男主角
(点击展开 / 收起)

第三次演习:(新算法)玩家 VS “马儿踢死恐惧军团”+1500男主角
(点击展开 / 收起)


(点击展开 / 收起)


需要说明的是,由于troop_loot_troop的特性,老算法是能满足大多数情况下的要求的,所以玩家是否采用新算法取决于个人,感觉问题不大也没必要非得改。
另外,我们注重延展性和通用性,新算法别说几千人的战团规模,就是把整个地球人都拉上去干一架,新算法也能把他们撸到一条裤衩都不剩。



二、算法改进思路:
战利品算法有两个基本要求:1是全部撸完,2是挑最贵96件。
满足这两点,玩家就基本上没什么异议了。
按照这个思路,最机械的算法就是:撸满95件后,每撸1件进行比较,始终把最差的1件扔掉,一直到撸完。
这个最机械的撸法如下:
  1.         (troop_loot_troop, "trp_temp_troop", "被撸的人", "撸的参数"),
  2.         (troop_sort_inventory, "trp_temp_troop"),
  3.         (troop_ensure_inventory_space, "trp_temp_troop", 1),
复制代码
上面只是代码循环里面的核心部分,实际上还要把扔掉的东西暂存最后加回去,但这个最机械算法是个坑爹算法,所以没必要完善了,大概就是这个意思。
这个最机械算法其实是可以满足要求的,而且看上去很简洁,短短几个代码就搞定了,但他的效率实在是太坑爹了,坑爹就坑爹在“troop_sort_inventory”这个操作上。
粗略估算,1条“troop_sort_inventory”操作在2个物品的情况下相当于6条“assign”操作,95个物品时相当于4500×6=27000条“assign”操作,
再把“troop_sort_inventory”加入到人数循环里,5000个敌人相当于执行135000000条“assign”操作。
实际上我用这个最机械算法撸5000个敌人,大概花了5秒钟才撸出来。
虽然5秒不是很长,人少的时候玩家也感觉不到,但坑爹毕竟是坑爹,修改党毕竟也要讲节操。
所以这个最机械算法应该被抛弃。

三、新算法隆重登场:
为大家看得容易,贴的是PY代码
(点击展开 / 收起)

新算法的基本思路就是,为中间人的物品栏建立指针关系,在撸到有保存价值的物品时加入物品栏并修正指针,然后把最小值物品暂存,开始下次撸。
保证全部撸完,留96件最佳物品,因为你永远不知道下一件会撸出什么,
用指针可以避免大量的重复计算。


四、新算法TXT修改(适用所有采用原版算法的MOD)
还是修改scripts.txt,用记事本打开,找到下面:
(点击展开 / 收起)

中间红色的代码,改成下面:
(点击展开 / 收起)




~~~~~~~~~~~~~~~~~~~议论~~~~~~~~~~~~~~
(点击展开 / 收起)


end.

评分

参与人数 5第纳尔 +10 互助 +1 魅力 +4 收起 理由
丶旅荇 + 1 牛逼的要死
angeltian + 1 请不要挖坟[已过时效性的帖子]。(版规4-3)
为什逼我要昵称 + 1 原创内容,值得鼓励!
wym1989 + 1 又一位代码帝现身了
vvtonycc + 10 + 1 一些研究经费,有空时再实测详评。

查看全部评分

鲜花鸡蛋

Dyte  在2018-9-6 22:15  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
blackerlt  在2014-1-5 19:54  送朵鲜花  并说:这样的好帖我居然才看见
左手晨曦  在2013-11-26 21:39  送朵鲜花  并说:反正看着代码我是晕了,求小白鼠
星海晦暝  在2013-11-11 19:52  送朵鲜花  并说:求小白鼠
zjb19900706  在2013-11-11 19:06  送朵鲜花  并说:技术帝,膜拜
280701275  在2013-11-11 10:06  送朵鲜花  并说:嘿嘿,以后打叛变骑士更舒服了,打精灵妈妈再也不用担心我损兵折将了
妖精的眼泪  在2013-11-10 19:16  送朵鲜花  并说:楼主有心了~~~

34

主题

223

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
93480
第纳尔
469
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2008-9-25
鲜花(0) 鸡蛋(0)
发表于 2022-2-26 22:24:26 | 显示全部楼层
395不适用了。。。

34

主题

223

回帖

77

积分

扈从

Rank: 2Rank: 2

UID
93480
第纳尔
469
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2008-9-25
鲜花(0) 鸡蛋(0)
发表于 2022-2-26 19:05:04 | 显示全部楼层
合理,very nice

10

主题

111

回帖

41

积分

扈从

Rank: 2Rank: 2

UID
1663780
第纳尔
273
精华
0
互助
1
荣誉
0
贡献
0
魅力
1
注册时间
2013-11-11
鲜花(6) 鸡蛋(0)
发表于 2022-2-20 01:15:26 | 显示全部楼层
這就是遊戲基礎設定的問題了,我可不敢碰,雖然很想要好的戰利品掉落,但是這樣修改好像會出問題
有時會玩,有時放置,對於騎馬的世界多麼憧憬

0

主题

21

回帖

11

积分

随仆

Rank: 1

UID
3326740
第纳尔
42
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2022-2-13
鲜花(0) 鸡蛋(0)
发表于 2022-2-14 12:21:55 | 显示全部楼层
不明觉厉

2

主题

62

回帖

19

积分

随仆

Rank: 1

UID
2727480
第纳尔
546
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2016-2-28
QQ
鲜花(0) 鸡蛋(0)
发表于 2021-12-23 18:20:25 | 显示全部楼层
强啊技术大神!666666666666

2

主题

20

回帖

7

积分

平民

Rank: 1

UID
1757597
第纳尔
763
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2014-1-4
鲜花(0) 鸡蛋(0)
发表于 2021-12-5 23:48:13 | 显示全部楼层
NB,代码帝牛逼!

0

主题

10

回帖

3

积分

平民

Rank: 1

UID
3177694
第纳尔
42
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2020-4-27
鲜花(0) 鸡蛋(0)
发表于 2021-11-19 22:59:03 来自手机 | 显示全部楼层
太优秀了,不但把东西弄出来了,而且还把心得也分享出来了

1

主题

9

回帖

3

积分

平民

Rank: 1

UID
2251187
第纳尔
28
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2014-10-20
鲜花(0) 鸡蛋(0)
发表于 2021-11-13 14:28:25 | 显示全部楼层
斫饨 发表于 2018-9-8 10:05
我之前改到12th就有用的,刷起义军前两行全是铠甲,
改成176开头的那段呐

同样12TH,我改完,打过仗就不给战利品了,跳红字,直接没战利品,一个都没

0

主题

9

回帖

3

积分

平民

Rank: 1

UID
2880908
第纳尔
72
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-10-2
鲜花(0) 鸡蛋(0)
发表于 2021-6-26 12:19:18 | 显示全部楼层
我用16th试了一下跳红字啊,但是能得到战利品,这算是有用还是没用啊大大

3

主题

166

回帖

56

积分

扈从

Rank: 2Rank: 2

UID
596515
第纳尔
965
精华
0
互助
1
荣誉
0
贡献
0
魅力
15
注册时间
2011-12-20

元老骑士勋章

鲜花(5) 鸡蛋(0)
发表于 2020-4-16 10:35:48 | 显示全部楼层
如果楼主还在就好了,潘德3.95暂时用不了,楼主大救星,求更新。
http://bbs.mountblade.com.cn/static/image/smiley/dlm/a01.gif恶魔酱,你又调皮了,说好的不要一枪爆头呢?
http://bbs.mountblade.com.cn/static/image/smiley/dlm/a04.gif我没有用枪爆头(心照不宣)
http://bbs.mountblade.com.cn/static/image/smiley/dlm/a16.gif要是可以俘虏,你的菊花岂会完整!
http://bbs.mountblade.com.cn/static/image/smiley/dlm/a37.gif其实,其实不用俘虏,我们也可以.....

3

主题

22

回帖

8

积分

平民

Rank: 1

UID
1929007
第纳尔
130
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2014-4-28
鲜花(0) 鸡蛋(0)
发表于 2019-12-8 00:16:04 | 显示全部楼层
事实证明 3.94跳红字清背包…qvq 求更新 qvq

2

主题

8

回帖

3

积分

平民

Rank: 1

UID
2881316
第纳尔
233
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-10-4
鲜花(0) 鸡蛋(0)
发表于 2018-12-28 21:59:52 | 显示全部楼层
3.93不能用啊,最关键的是会清空你的背包(我的远古诺多甲)

12

主题

84

回帖

29

积分

扈从

Rank: 2Rank: 2

UID
1548892
第纳尔
416
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2013-9-16
鲜花(0) 鸡蛋(0)
发表于 2018-9-9 17:26:04 | 显示全部楼层
经测试3.92不能用

38

主题

216

回帖

76

积分

扈从

Rank: 2Rank: 2

UID
2994653
第纳尔
1382
精华
0
互助
0
荣誉
0
贡献
0
魅力
1
注册时间
2018-4-10

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

鲜花(7) 鸡蛋(0)
发表于 2018-9-8 14:34:30 | 显示全部楼层
楼主牛逼啊

282

主题

2942

回帖

1057

积分

骑士

Rank: 4Rank: 4

UID
1610219
第纳尔
8083
精华
0
互助
18
荣誉
0
贡献
0
魅力
62
注册时间
2013-10-18

霸主正版勋章

鲜花(90) 鸡蛋(0)
发表于 2018-9-8 10:05:43 | 显示全部楼层
问心不问路 发表于 2018-9-8 07:24
15女剑刷完会出9到10个战利品,但是加上100民兵以后用这个代码出的全都是民兵的装备,所以我感觉应该是没 ...

我之前改到12th就有用的,刷起义军前两行全是铠甲,
改成176开头的那段呐

0

主题

3

回帖

1

积分

平民

Rank: 1

UID
1876595
第纳尔
19
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2014-4-1
鲜花(0) 鸡蛋(0)
发表于 2018-9-8 07:24:13 | 显示全部楼层
斫饨 发表于 2018-9-6 23:18
原版直接按lz的复制就行了啊

15女剑刷完会出9到10个战利品,但是加上100民兵以后用这个代码出的全都是民兵的装备,所以我感觉应该是没用

282

主题

2942

回帖

1057

积分

骑士

Rank: 4Rank: 4

UID
1610219
第纳尔
8083
精华
0
互助
18
荣誉
0
贡献
0
魅力
62
注册时间
2013-10-18

霸主正版勋章

鲜花(90) 鸡蛋(0)
发表于 2018-9-6 23:18:50 | 显示全部楼层
问心不问路 发表于 2018-9-6 21:51
战团1.168原版,可以改成这种模式吗?不懂编程,能不能直接给一个改TXT的方法或者直接给个TXT

原版直接按lz的复制就行了啊

0

主题

3

回帖

1

积分

平民

Rank: 1

UID
1876595
第纳尔
19
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2014-4-1
鲜花(0) 鸡蛋(0)
发表于 2018-9-6 21:51:39 | 显示全部楼层
rubik 发表于 2013-11-10 20:23
潘德的预言没有与时俱进啊,扒的是我3年前的坟:
http://bbs.mountblade.com.cn/forum.php?mod=viewthread ...

战团1.168原版,可以改成这种模式吗?不懂编程,能不能直接给一个改TXT的方法或者直接给个TXT

36

主题

90

回帖

38

积分

扈从

Rank: 2Rank: 2

UID
1640196
第纳尔
831
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2013-10-31
鲜花(0) 鸡蛋(0)
发表于 2013-12-5 21:39:03 | 显示全部楼层
能把那个960格子的战利品算法移植过来么?这样就方便多了啊

153

主题

855

回帖

337

积分

见习骑士

Rank: 3

UID
113008
第纳尔
4641
精华
0
互助
5
荣誉
1
贡献
0
魅力
4
注册时间
2009-2-3

原版正版勋章战团正版勋章维京征服正版勋章汉匈决战正版勋章元老骑士勋章霸主正版勋章

QQ
鲜花(3) 鸡蛋(0)
发表于 2013-12-5 19:17:21 | 显示全部楼层
本帖最后由 as329854395 于 2013-12-5 19:24 编辑

这个问题根本就不需要解决~
没节操的试想一下
如果你现实中的战斗也基本不可能是一次解决的吧
而双方第一次交火后互有伤亡 这时候一方选择后撤另寻时机再战
而如果该作战目标成功达成而没有被对方尾随趁机掩杀的情况下
那么下一次的交战地点基本上就不可能是第一次交战的位置了
这个时候要么敌军已经腾出手来收拾战利品不过这种可能性并不高
收拾战利品的一般是后勤的问题吧?毕竟还没有完全击溃敌军啊?
作战部队应该会尽可能的快速更换损坏的装备之后抓紧时间休整如果可能的话重后勤那里补充一些兵员以待再战
而那些被缴获的战利品会被后勤部队弄走~

(另外弱弱的吐槽一下,游戏毕竟是游戏啊~。而限于技术和其他因素的限制骑砍的整体战争感觉还是无法全面体现出来啊~。其中除了地图上的所有部队基本都是可以在在无后勤的情况下远距离近乎无限时间无目的性的游荡作战简直就是到了无力吐槽这一点之外。还有就是战争四要素中 天时 地利 人和 战略战术 中也仅仅只能勉强体现出 人和 这一点而已一些基本的队形操控估计也远远无法达到战术的标准。不过战略战术这种东西估计是现在的骑砍无法很好体现出来的元素,毕竟受限于更高级别的AI等级才行。但是作为一个战争为主题的游戏无法体现 天时和地利 的话就会在无意中丢失很多战争游戏的乐趣了~,无法体现天气对战场形势、战斗形势的影响,无法体现各个要塞城堡位于关键部位的战略重要性~!要知道一夫当关万夫莫开可不是开玩笑的如果哟好的地形要用几百人打败几千人并非不可能~!而骑砍中基本上根本没有体现出 地利 这个重要的理念就算这个城堡建在一个隘口上玩家部队也可以藐视它直接穿过去甚至不用支付关税?!也这个要塞或者城堡建在这里到底有什么意义?!)

现在的骑砍能吸引众多骑友的地方并不在其他而就是一点~!
战斗模式~!骑砍的战斗模式绝对是空前的史诗之作和当年的CS绝对是同一级别的创作
当然我最后还想说前面的吐槽并不是说我就不喜欢这个游戏
相反骑砍可以说是我玩的最久的一个单机游戏了,在我看来骑砍绝对是个堪称经典的史诗之作~!
但现在的他还需要很多改进
而我不是很明白为什么这么好的一个游戏会得不到推广?得不到给力团队的修改和改进而是要靠我们这些非职业的散人玩家去努力?难道真的是因为名字太挫?!

46

主题

1449

回帖

474

积分

骑士

Rank: 4Rank: 4

UID
300994
第纳尔
2021
精华
0
互助
5
荣誉
0
贡献
0
魅力
10
注册时间
2010-8-22

霸主正版勋章

鲜花(16) 鸡蛋(10)
发表于 2013-12-5 18:58:56 | 显示全部楼层
as329854395 发表于 2013-12-5 18:55
看完后有一种说不出的赶脚

V大提出的游戏性的问题是值得思考的

最大的问题就是,一般你不会一次打完千人战,至少要撤出一次战场,尤其 弓兵没箭了的时候。
这时候第一次的就不计算了——这个问题似乎一直没解决,至少我个人感觉如此。

46

主题

1449

回帖

474

积分

骑士

Rank: 4Rank: 4

UID
300994
第纳尔
2021
精华
0
互助
5
荣誉
0
贡献
0
魅力
10
注册时间
2010-8-22

霸主正版勋章

鲜花(16) 鸡蛋(10)
发表于 2013-12-5 18:57:28 | 显示全部楼层
as329854395 发表于 2013-12-5 18:55
看完后有一种说不出的赶脚

V大提出的游戏性的问题是值得思考的

实际上玩的时候效果并没有那么明显的。

153

主题

855

回帖

337

积分

见习骑士

Rank: 3

UID
113008
第纳尔
4641
精华
0
互助
5
荣誉
1
贡献
0
魅力
4
注册时间
2009-2-3

原版正版勋章战团正版勋章维京征服正版勋章汉匈决战正版勋章元老骑士勋章霸主正版勋章

QQ
鲜花(3) 鸡蛋(0)
发表于 2013-12-5 18:55:25 | 显示全部楼层
看完后有一种说不出的赶脚

V大提出的游戏性的问题是值得思考的
其实是一个很浅显的问题好东西和坏东西总是相对的如果都是好东西的话你怎么能看到它的好?
同理如果都是好装备的话大家就不会觉得这些是好东西了
同时在这个游戏性的问题上在废话一下
潘德的特色就是难度对吧?困难而无法作弊的游戏特质是潘德可玩性的中心所在~!至少我是这么认为的
如果玩家可以轻易获得同级别的高级装备会大大减低潘德的游戏性那样就没意思没惊喜了吧?!

而就战利品问题本身来说R大说的那种领军者中使用的战利品系统才是目前最具效力的方法吧?
扩大战利品收集范围直接将960个战利品放你面前你想要什么要什么最后在配置自动卖出的系统简直就是瞬间将一场战斗中获得的战利品利益最大化啊!

36

主题

90

回帖

38

积分

扈从

Rank: 2Rank: 2

UID
1640196
第纳尔
831
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2013-10-31
鲜花(0) 鸡蛋(0)
发表于 2013-12-5 13:32:33 | 显示全部楼层
我错了,发现问题在哪里了。原来是最近下了npc特技补丁,然后那个补丁把那个文件覆盖了,战利品的算法有变回原版了= =

14

主题

496

回帖

163

积分

见习骑士

Rank: 3

UID
1350673
第纳尔
1209
精华
0
互助
0
荣誉
1
贡献
0
魅力
1
注册时间
2013-5-14
鲜花(50) 鸡蛋(0)
发表于 2013-12-5 12:42:58 | 显示全部楼层
xkdlfltpy 发表于 2013-12-5 11:57
我用了你的算法之后还是不行啊,刚才打了一个200+人的不对居然刷出了90把菜刀,这什么情况啊,还是我的代码 ...

90把菜刀!!!恕---幸好没急着做小白鼠
名称:花花党
特征:平时也就攻击力为5的渣渣。但不给鲜花是时,攻击力飙升到十万点。
信仰:花花痴,花花狂,不给花花耍流氓。

36

主题

90

回帖

38

积分

扈从

Rank: 2Rank: 2

UID
1640196
第纳尔
831
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2013-10-31
鲜花(0) 鸡蛋(0)
发表于 2013-12-5 11:57:54 | 显示全部楼层
我用了你的算法之后还是不行啊,刚才打了一个200+人的不对居然刷出了90把菜刀,这什么情况啊,还是我的代码复制到了错误的文件中啊,那个代码应该是复制带哪的文件的,给个路径看一下好么?

31

主题

362

回帖

128

积分

见习骑士

Rank: 3

UID
91591
第纳尔
968
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2008-9-12
鲜花(7) 鸡蛋(0)
发表于 2013-11-28 16:14:57 | 显示全部楼层
技术帝啊,话说潘德的txt修改真是多啊……

15

主题

910

回帖

758

积分

骑士

Rank: 4Rank: 4

UID
1313442
第纳尔
4102
精华
0
互助
52
荣誉
22
贡献
0
魅力
64
注册时间
2013-4-26
鲜花(287) 鸡蛋(0)
发表于 2013-11-26 21:46:50 | 显示全部楼层
xkdlfltpy 发表于 2013-11-26 21:41
是不是说楼主的算法一般来说比正常的算法会得到更少的战利品啊?

如果当战利品多于96件的话,是的。
当然我没有去证实,仅仅是从代码判断的

36

主题

90

回帖

38

积分

扈从

Rank: 2Rank: 2

UID
1640196
第纳尔
831
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2013-10-31
鲜花(0) 鸡蛋(0)
发表于 2013-11-26 21:41:21 | 显示全部楼层
greole 发表于 2013-11-26 21:37
另外代码好像有点问题..

第四十行,(troop_set_inventory_slot, "trp_temp_array_b", ":init_point_slot ...

是不是说楼主的算法一般来说比正常的算法会得到更少的战利品啊?
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2025-12-22 13:46 , Processed in 0.172043 second(s), 68 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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