星露穀物語 從遊戲代碼層面探討星級釣魚點解析
星露穀物語 從遊戲代碼層面探討星級釣魚點解析
從遊戲代碼層面探討星級釣魚點問題
。◕‿◕。
今天看貼吧有不少人在爭論流傳的必出星級釣魚點是否確實是因為地點才出星級魚的問題。
所以晚上翻了下代碼, 先上結論, 等下有空的話再更新推論截圖和計算公式。
結論: 一般情況下, 出不出星級魚和地點無關, 而是與浮標位置離最近非水格子的距離有關(當然還有其他因素影響)。
但是星級釣魚點也有一定的道理, 因為在那些地點揮杆一般就是會把浮標揮到較好的位置。
不想看代碼的可以直接拉到最下面看公式和 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 影響寶藏種類。
點此進入3DM《星 露谷 物語》遊戲論壇專區