憤怒的小鳥是確定性的嗎?
在嘗試在更複雜的關卡(有很多可破壞實體的關卡)上獲得 3 星時,我注意到即使在同一關卡玩了 50 多次之後,總是做同樣的事情,我從未見過相同的最終結果。事情總是不同的。
相同的輸入是否總是導致相同的輸出,還是其中存在隨機因素?
該算法是確定性的,但有爭議的是,發射一隻鳥的總體結果實際上是不確定的,因為它依賴於(非常敏感的)使用者輸入。
為了測試算法和使用者輸入對其的影響,我使用了以下過程:
- 載入Google瀏覽器版本的憤怒的小鳥
- 負載等級 1-1
- 將滑鼠拉回特定的 XY 座標。(這已經超過了這隻鳥的“完全平局”。)
- 釋放小鳥,等待遊戲達到穩定狀態。
為了測量我的 XY 座標,我打開了一個背景 Chrome 視窗,並將其導航到此頁面。我對齊了兩個視窗,這樣我就可以看到滑鼠的 X 和 Y 位置,同時在我釋放小鳥時仍然能夠導致某些事情發生。我將滑鼠游標對準這兩個數字周圍方框的左下角,然後鬆開。然後我記下了滑鼠游標的位置(因為僅當滑鼠未釋放且游標位於該視窗上方時才會更新顯示),然後記下 Angry Birds 中的結果分數。如果您在精確定位滑鼠時遇到問題,您可以嘗試作業系統提供的輔助功能選項,例如Windows 上的滑鼠鍵。
只要我的游標位於與之前迭代完全相同的位置,我就得到了相同的分數。
在提出一個允許我測量游標到像素的位置的增強測試裝置之前,我使用遊戲背景圖像中的參考點執行了這個實驗大約 10 次。我通過發射第一隻鳥得到分數,分數在 8,000 到 11,000 之間。使用增強的測試策略,如果我偏離了一個像素,我可以預期得分差異在 150 到 500 分之間。
我會注意到游標**超出了遊戲區域的邊緣,在瀏覽器視窗之外,遠遠超出了鳥可以向後拉的最大距離,**即使移動一個像素,我仍然注意到差異。
此外,我為一個極端情況拍攝了螢幕截圖,即我的游標位於與遊戲視窗不同的顯示器上,並執行了幾次迭代,我將游標保持在同一位置,或者稍微移動它。根據我的計算(基於測量與螢幕截圖的距離),遊戲能夠在大約 1,284 像素寬度的距離上基於一個像素的高度差(544 對 545 像素)創建不同的結果(得分 32960 對 31520)。這算得上是 0.03 度的角度差。
我想說的是,出於任何實際目的,您可以期望在同一級別上反复採用相同的一般策略,並期望得到截然不同的結果。控制項的靈敏度水平非常高,以至於沒有實用的方法讓它兩次做同樣的事情。如果您在觸摸屏上玩遊戲,那麼將相同的動作複製到單個像素將非常困難,這一事實加劇了這種情況。