iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
自我挑戰組

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

Day12-遊戲連線基礎(11)-Rollback part 3

  • 分享至 

  • xImage
  •  

雖然有了delay-based netcode來實現格鬥遊戲的連線功能,但他的缺點卻又是格鬥遊戲的致命傷,為了解決這個問題而想出的新netcode就是rollback netcode,他大大的降低了對於網路的強依賴,讓連線對戰更接近於本地遊玩,我知道這樣讀者可能會看的一頭霧水,沒關係就讓我們來好好的理解這項技術背後的原理。

在delay-based netcode的架構下,只要未接收到對方的資訊遊戲就會強制停止直到訊息到達,反之rollback架構下遊戲會不斷的執行,不會去強制等待對方的資訊,再者他不會有主動延遲,在本地輸入的指令會立刻執行就跟本地對戰一樣,而對手輸入的指令雖然是在幾幀後到達但rollback會將這個指令依照對手輸入的幀做計算後承現在畫面上。

舉個例子在本地從第一幀就輸入跳躍,在畫面上就會直接進入跳躍的動畫,而對手的輸入假設也是在第一幀就輸入跳躍,經過網路的傳輸之後在本地的第四幀才接收到指令,本地端就會去模擬對方輸入的時間到本地接收到的時間遊戲跑到了哪個狀態並在瞬間改變畫面上呈現的畫面,因此rollback最主要的弊端就是會看到對方的動畫有瞬間執行的畫面,就拿剛舉的例子來說,本地會看到對手直接從跳躍動畫的第四幀開始執行,前面的三幀就會直接跳過。
https://ithelp.ithome.com.tw/upload/images/20220912/20151289R1fsMKBU3P.png

在這個架構下實現了玩家彼此的畫面在同時間下不一定相同,會因為網路連線品質而改變畫面上此時此刻呈現的東西,但是過程與結果卻是永遠都一樣的。

如果遇到連線品質不佳的狀況下,本地玩家也不必擔心任何問題因為自己的輸入都會直接執行,不會有自己的輸入也許因為網路問題遺失而導致所謂的吃指令問題,而且指令都會是在本地重新模擬一次讓遊戲更靠近本地。


上一篇
Day11-遊戲連線基礎(10)-Rollback part 2
下一篇
Day13-遊戲連線基礎(12)-Rollback part 4
系列文
遊戲中的冰山一角-網路連線30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言