iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
自我挑戰組

遊戲中的冰山一角-網路連線系列 第 13

Day13-遊戲連線基礎(12)-Rollback part 4

  • 分享至 

  • xImage
  •  

今天筆者要更進一步的介紹rollback技術,上一篇有說到雖然rollback並不會過度依賴網路連線品質,但是該傳給對方的訊息還是必須要盡快抵達,不然本地端還是無法去模擬遊戲的過程,那麼該如何讓這項技術更好呢?

在rollback下遊戲是持續進行與模擬不同於delay-based要等待對手指令抵達才能進行,但是不等到對手的資訊到達又該如何去持續模擬與進行呢?預測這個看似不靠譜的方法卻能幫忙完善不足的部份,雖然不盡完美但也有九成以上的正確性能保證遊戲執行正確。

假設在一個網路品質不好的環境下連線,我在本地的第一幀輸入了向右走而對手也接收到了這個資訊,直到第三幀突然網路出了狀況,我的資訊傳不到對手的遊戲裡但是遊戲必須持續進行下去不能暫停或是延遲,於是就用預測的方法預測我在這些遺失指令的幀依然是輸入向右走,於是在對手的畫面上就會顯示我持續的向右走直到我的訊息傳到對手的遊戲,當訊息抵達後會先去檢查剛剛模擬出來的正確性,如果在那些遺失的幀裡面我確實是持續輸入向右走那遊戲就不會執行rollback,遊戲可以就這樣繼續執行下去,反之如果發現不同例如我突然輸入了跳躍,那就會執行rollback讓當下的狀態替換成rollback之後的結果。
https://ithelp.ithome.com.tw/upload/images/20220913/20151289PVHTDIrPsG.png

為什麼預測能夠成為如此可靠的方法呢?這最主要是建立在因為是格鬥遊戲的關係,若將此方法套用在其他遊戲類型例如第一人稱射擊遊戲是基本不可能的,因為不可預期的事情是超乎想像的多,總不能讓一個玩家持續的開火都不停然後又回溯他其實沒有在開火,在格鬥遊戲中在短時間內的輸入都會連貫並不會有過多的變換,因此預測就變成合理的方法。

在觀察一個頂尖的格鬥遊戲玩家控制角色移動方向大概是每秒5次,假設遊戲是60FPS也就是在60FPS裡面會有5次的指令輸入,那除了實際的5次輸入外剩餘的55FPS都是能夠去預測的,因為改變輸入的頻率並不大,再者格鬥遊戲裡的某些行為都是可以被預測的,例如我將對手擊倒後要持續給予壓力,我勢必會持續輸入攻擊的按鈕而對手肯定是要做防禦,因此防禦是可以被預測的,或是跳躍中基本上能輸入的指令不多甚至只有一個按鍵是可以按的,這樣預測下來基本上都會是對的,只需要去注意那些會發生的少數,因此預測才成為格鬥遊戲rollback netcode中一個值得信任的策略。


上一篇
Day12-遊戲連線基礎(11)-Rollback part 3
下一篇
Day14-遊戲連線基礎(13)-Rollback part 5
系列文
遊戲中的冰山一角-網路連線30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
not
iT邦新手 4 級 ‧ 2023-05-06 10:17:24

看了某個遊戲 Idol Showdown 提到 rollback netcode 找到這系列文章,預測指令這個概念真的有趣!

我要留言

立即登入留言