星露谷物语 从游戏代码层面探讨星级钓鱼点解析
星露谷物语 从游戏代码层面探讨星级钓鱼点解析
从游戏代码层面探讨星级钓鱼点问题
。◕‿◕。
今天看贴吧有不少人在争论流传的必出星级钓鱼点是否确实是因为地点才出星级鱼的问题。
所以晚上翻了下代码, 先上结论, 等下有空的话再更新推论截图和计算公式。
结论: 一般情况下, 出不出星级鱼和地点无关, 而是与浮标位置离最近非水格子的距离有关(当然还有其他因素影响)。
但是星级钓鱼点也有一定的道理, 因为在那些地点挥杆一般就是会把浮标挥到较好的位置。
不想看代码的可以直接拉到最下面看公式和 Tips.
首先在游戏代码里找到与鱼评星级直接有关的决定性语句, 就是上图选中的那行
fishQuality 不难看出就是鱼的质量等级, 当 fishSize < 0.33 就是无星, 在 0.33~0.66 内就是银星, 高于 0.66 就是金星。
注意这里的 fishSize 跟 this.fishSize 是不同的, 是传进来的参数。
那么继续 trace 看看在哪里生成了这个 BobberBar 对象。
在这个函数最后一行可以看到 new 了个 BobberBar 对象, 而传进去的 fishSize 的值跟上面划线的部分有关, 中间算法先略过不提。
追到最上面可以看到 clearWaterDistance 这个变量是由 distanceToLand 这个方法的返回值决定的, 于是查看这个方法。
这个方法里面涉及到的是对于浮标附近区域的 tile 的 property 进行判定。
一开始检查的范围是以浮标为中心 3x3 的矩形, 然后是 5x5 …… 一直到 11x11.
如果检查的区域内有属于不是水的(并且在地图内的) tile 的话, 即跳出。
返回的值:
3x3 对应 0
5x5 对应 1
...
11*11 对应 4
13*13 对应 5
至此, 一般情况下决定鱼的等级的所有参数均已得知, 可以直接写出式子。
但我还是尝试找了下是否有由地点来影响评级的片段, 最后没有找到, 只发现由地点影响的鱼是那些限制某区域钓的鱼王, 比如说:
================================================================
最后附上鱼类评级式子和尺寸的大小式子:
鱼类评级式子:设 X = max(0, min(1.0, (浮标离岸距离 / 5.0 * [(1 + (min(10, 钓鱼等级) / 2) ~ 6)内取随机数 / 5.0] * (1.0 + (-10 ~ 10)
内取随机数 / 100))));
浮标离岸距离: 3x3内有非水=0, 5x5内有非水=1 ... 13x13内有非水=5. 这里的单位是 tile, 不一定是游戏里的格子, 默认情况下应该是 64 像素
大。
X 为 [0 - 0.33) 无星, [0.33, 0.66) 银星, 0.66 以上金星。
例子: 浮标 11x11 内均是水(以浮标为中心,半宽为 5), 即浮标离岸距离=4. 且钓鱼等级=10 的且随机数均取中间值的情况下
X = max(0, min(1.0, (4 / 5.0 * 6.0 / 5.0) * (1.0 + 0 / 100))) = 0.96. 大于 0.66 所以是金星。
尺寸大小式子:(该种鱼最小尺寸 + (最大尺寸 - 最小尺寸) * X )向上取整。
所以是否是星级鱼由 钓鱼技能等级 浮标位置 随机值 来共同决定。
在过程中发现的一些其他东西:
1. 部分鱼对钓鱼等级有需求
2. waterDepth 一般情况下就是 clearWaterDistance/distanceToLand
3. waterDepth 影响鱼咬钩的效率(撒下浮标到有鱼上钩的时间)
4. clearWaterDistance 影响宝藏种类。
点此进入PKVS《星 露谷 物语》游戏论坛专区