当前位置:游戏娱乐馆 >

单机图文攻略

> 星露谷物语 运势系统源代码测试解析 运势怎么计算

星露谷物语 运势系统源代码测试解析 运势怎么计算

星露谷物语 运势系统源代码测试解析 运势怎么计算

4月末入手stardew valley,玩了一个档。基本上能玩的元素都玩到了,觉得这个游戏的许多地方都很有趣,重要的是这个游戏是xna的,因此想看一下。在网上也没有什么比较好的关于运势系统的分析攻略,所以就选择了这个来分析。

星露谷物语 运势系统源代码测试解析 运势怎么计算

首先打开游戏中的人物状态这里,发现有5个人物的属性等级,farming,mining,foraging,fishing,combat这5个技能类型,在这里我发现其实同等级的技能类型不止有5个,而是6个。

星露谷物语 运势系统源代码测试解析 运势怎么计算 第2张

第六个是Luck,也就是幸运等级,只不过这个不会显示在玩家可见的状态栏里。

这就解释了吃某一些料理的时候会增加人物的运气等级,其实增加的就是这个属性。

通过代码发现,这个运气等级其实和我们每天早起看电视的那个运气并不是同个东西。

在代码中显示:运气等级在代码中的名称叫做:LuckLevel,而每日的运气名称叫做:dailyLuck,许多取决于运气的几率事件都是将这两个运气值同时进行计算的。

星露谷物语 运势系统源代码测试解析 运势怎么计算 第3张

这段代码显示的就是每天在电视上看到的内容,会根据每日随机的运势值来进行显示

那每日运势这个东西是如何计算的呢?

星露谷物语 运势系统源代码测试解析 运势怎么计算 第4张

是这一句话进行随机的

意思大概是,会首先在0.0-1.0之间进行随机一个数字,如果这个数字小于0.8,同时玩家是有“魅力”的,这样的话那运气是固定为0.1,也就是“非常开心”,但这个还不是最幸运的情况,最幸运需要到0.12。如果这个数字大于0.8,或者玩家不是“有魅力的”,那么就会对玩家再进行一次随机,相当于是在-0.1-0.1之间随机。这个概率就比较平均了。


在游戏中,我们一般会遇到几种运势:

1.精灵非常开心(大于0.07)

2.精灵很开心(0.02-0.07)

3.命运掌握在自己手中(-0.02-0.02)

4.精灵不太开心(-0.02--0.07)

5.捣蛋(小于-0.07)

但是,在代码中发现还有三种不同的运势,我是没有遇到过,不知道有没有人玩到过这三种运势:

spirits are joyous! Someone gave them a nice offering today, and they are very pleased.意思大概是今天精灵极开心,会带给你特别好的一天。(0.12)

is rare. The spirits feel absolutely neutral today.意思说这很罕见。今天的精灵绝对中立。(0.00)

spirits are furious. Apparently someone tried to give them a worthless offering... Hmm. It's unwise to play jokes on the spirits!意思是精灵很愤怒。显然有人试图给他们糟糕的东西,给精灵开这个玩笑很不明智!(-0.12)

不过,在代码中分析,按照正常的随机算法,是不会出现0.12或者-0.12的,不知道这是不是作者没完成的设定,或者我还没有发现。而0.00这个值是可以出现的,和它自己说的一样,这个确实比较罕见(0.5%几率)。

还有就是最上面说的玩家是有“魅力”的,这个时候,有90%的几率是好运(80+20*50%)。那什么是有魅力的呢,这个我还没有仔细的分析过,貌似只有作者Debug的时候才用到,或者与创建人物时写的那个”喜爱的东西“有关。


那这个运势都会影响什么东西:

1.动物出产的产品

2.矿洞死亡后物品掉落

3.夏天的闪电

4.作物收获

5.蟹笼

6.送礼

7.敲碎石头后掉落物品

下面逐一进行介绍。

1.运势对动物出产的产品的影响

星露谷物语 运势系统源代码测试解析 运势怎么计算 第5张

每个动物在购买/出生后会有一个开心值,代码中叫happiness。初始值是0xff(255)。也就是你每天摸动物之后,动物头上会出现一个心,就是代表这个动物的开心情况以及表示动物增加了开心值(表示一团乱麻的时候也会加开心值),开心值和点击动物出现的信息里面的心(好感度)是不一样的两个东西。

开心值<30 : look sad

30<开心值<200 : look fine

开心值>200 :looks really happy today!

根据观察发现好感度的取值是0-1000,对应0-5心。

根据算法,目前来看,是否产出物品完全与开心值有关,当动物的开心值高于150时产出概率是100%,当小于150时,值越小产出几率越小(75开心值产出率为50%)。

而运势仅仅是在动物有产出的情况下,决定了产出特殊物品的概率(鸭毛、兔脚)。

产出特殊产品的算法的大概意思是:

鸭子:

当动物开心值大于200时

((开心值+好感度)/5000 + 今日的运势)+(玩家幸运等级*0.01)

当动物开心值小于200时

((好感度-开心值)/5000 + 今日的运势)+(玩家幸运等级*0.01)

兔子:

当动物开心值大于200时

((开心值+好感度)/5000 + 今日的运势)+(玩家幸运等级*0.02)

当动物开心值小于200时

((好感度-开心值)/5000 + 今日的运势)+(玩家幸运等级*0.02)

根据实际情况估算一下:

某天,一只鸭子的好感为3心,开心值满,你的幸运等级默认为1的情况,这只兔子在不同的运势情况(取中间值)下产出情况为:

非常开心:26.6%

开心:22.6%

命运在自己手中:18.1%

不开心:13.6%

捣蛋:9.6%

兔子同理。可见运势对动物产出的影响还是很大的。


2.运势对矿洞死亡后物品掉落的影响

星露谷物语 运势系统源代码测试解析 运势怎么计算 第6张

相信大家都在矿洞里挂过,我也挂过两次,一次掉了武器(我 的黑曜石剑啊啊),还有一次掉了背包里的不少东西(包括我给penny送礼用的好几十个甜瓜)。

这个矿洞死亡掉落也是和运势有关的:

首先死亡掉落有限制:

1.工具不能掉

2.特定武器不能掉(编号为47,编号为4的武器,可能是初始武器,没仔细研究)

3.戒指不能掉

4.掉的物品都是可丢弃的,也就是可以把它丢垃圾桶的

这是四条限制,满足这四条限制后,就会对每个这样的物品进行一个算法:

(0.25-幸运等级*0.05)-今日的运势

满足条件的会掉落。

不同的运势的掉落率(默认幸运等级为1):

非常开心:11.5%

开心:15.5%

命运在自己手中:20%

不开心:24.5%

捣蛋:28.5%

不过估计一般也没人运气不好的时候下矿吧。


3.闪电出现几率的影响

星露谷物语 运势系统源代码测试解析 运势怎么计算 第7张

上面说的是对夏天闪电出现的影响,我也忘了是不是只有夏天才有闪电,总之,前提就是那种会打闪电的天气。在这种天气的情况下,闪电出现就可以产电池组,所以和鸡下不下蛋一个道理吧,都是和运势有关。

这个比较简单:

在这种天气下,你在户外,而且不在沙漠,不同运势在每个时间点产生闪电的几率为:

非常开心:31%

开心:27%

命运在自己手中:22.5%

不开心:18%

捣蛋:14%


4.作物收获

星露谷物语 运势系统源代码测试解析 运势怎么计算 第8张

这个比较有意思了,不知道有没有大神知道这个dwoop是什么声音,我认为这里作者就是闲着没事玩了一下,没什么实际的意义。

按代码分析,作物收获的时候应该有一个特效,就是周边会散落作物的”残骸“(吃东西的时候也有,不过不知道是不是同一种用法),基本上是产生就消失了,绝大多数玩家都不会在意的细节。而在收获作物的时候,有大概0.06%的几率会让这个”残骸“产生的数量翻倍。这个几率会受到运势的影响。不说了,作者自娱自乐。


5.运势对送礼好感度的影响

星露谷物语 运势系统源代码测试解析 运势怎么计算 第9张

运势本身其实对一份礼物给NPC所增加的好感度不会有影响。好感度系统仅有一处是和运势有关的。研究完之后,我发现作者心机婊。

条件是,当你已经结婚了之后,再给单身的人送礼,会有几率不被配偶发现,并且不会降低好感度(30)。这个几率是:

非常开心:79.5%

开心:75.5%

命运在自己手中:71%

不开心:66.5%

捣蛋:62.5%

下面是运势对于挖矿系统的影响。这里我发现运势会影响三个方面:

1.特殊矿石的爆出数量

2.经验的获得(影响挖矿等级)

3.暴击率

首先来说特殊矿石的爆出数量:

星露谷物语 运势系统源代码测试解析 运势怎么计算 第10张

代码比较复杂不多过解释,直接说结果(默认无技能,就是那个5级10级学一次的,会有影响):

受到影响的矿石种类:

1.铁(380)

2.石头(390)

3.铜(378)

4.金(384)

5.铱(386)

当挖矿等级与幸运等级都为1级时,

挖普通石头矿,有50%几率出1个石头,50.5%几率出两个,0.501%几率出三个,0.005%的几率出四个(我概率学的不好,差不多就是这样。。算晕了),这个几率会因为挖矿等级与幸运等级的提升而增加,貌似增加的还不小(从万分之0.5到千分之0.5,。这样)

挖其他的矿,33%几率1个,33%几率两个,33%几率三个,出四个,五个是可以发生的事件,等级高,学了技能出四个并不特别意外,要是技能等级低的情况下出了5个那你基本和彩票中奖一样了。

矿石出产数量不因为类型不同而相异

星露谷物语 运势系统源代码测试解析 运势怎么计算 第11张

2.经验的增加

默认挖矿等级,幸运等级为1.每挖一块石头有几率加5点经验

这个几率为:

非常开心:5.24%

开心:5.14%

命运在自己手中:5.03%

不开心:4.92%

捣蛋:4.82%

这里可以发现,其实挖矿等级,幸运等级越高,增加经验的几率就越大,最大为5.55%

影响不大

星露谷物语 运势系统源代码测试解析 运势怎么计算 第12张

3.暴击率。

这个也是和每日运势不相关的

假设暴击率为20%,那么幸运等级1-10的情况的暴击率为:20.5%-25%。也就是说,暴击几率的值并不完全取决于装备上显示的值,这个基础暴击率越高增幅越大,假设暴击率为50%的时候,

真实暴击率为:

51.25%-62.5%,还取决于幸运值,

所以,走暴击流的别忘了同时要增加幸运等级!


补充几点后来的发现:

1.砍树的时候,今日运势好,会额外掉1快木头(5%),运势等级高也会掉(4%-40%)

2.挖农场里的石头,计算方式同上

3.矿洞中出现特殊宝石(五彩碎片,钻石,精炼石英等)的几率会受运势影响,这个有空再说。稍微透漏一下,在今日运气值满,采矿,幸运等级都为1的情况下,五彩碎片的出现几率为0.565%。平均200层一个,这个东西出现的最高概率为0.7%。

4.赌博,这个游戏出现赌博的地方也就是地下赌场了(没赌过,具体情况不知道),运气好赌的好(废话)。代码发现,赌博是有机会中爆炸大奖的,这个大奖在最佳运势的情况下(每日运势满,运气等级满),中奖的几率是惊人的0.00929%。有兴趣可以试一试,by the way 第二大奖几率为0.0929%约等于千分之一,坑爹。

5.矿洞中出现矿石的几率。这个不想算了,自然是运势越好刷的越多,上面说的那个是敲碎了矿石之后爆的数量,这个是每一层的整矿数量。

6.翻垃圾桶出东西的几率:分别为28.5%,24.5%,20%,15.5%,11.5%。翻垃圾桶被人看见了,那个人好感度-25

7.钓鱼出宝箱的几率,和翻垃圾桶翻出东西来的几率一样。至于说运势好,钓出垃圾的几率小,在代码中暂时还没有发现有这个设定。钓鱼这系统感觉有不少可研究之处,我还没有仔细的看过钓鱼系统的代码,以后看了会再分析。

运势系统的分析暂时就这些了!以后再遇到就补充。目前在分析星露谷物语这款游戏的全部代码,遇到有趣的东西(比如作者的彩蛋)就会发到贴吧里,以后可能还会写一些关于好感系统,钓鱼系统之类的源代码分析,希望大家多多支持!


  • 文章版权属于文章作者所有,转载请注明 https://yxylg.com/danjituwen/pyk49.html