• 招生咨詢熱線:4008-569-579 
  • 手機(jī)版
    用手機(jī)掃描二維碼直達(dá)商品手機(jī)版
招生咨詢熱線
4008-569-579
機(jī)構(gòu)主頁 > 培訓(xùn)資料 > Unity培訓(xùn)機(jī)構(gòu)講解游戲開發(fā)中的幀同步是如何實現(xiàn)的
機(jī)構(gòu)主頁 > 培訓(xùn)資料>Unity培訓(xùn)機(jī)構(gòu)講解游戲開發(fā)中的幀同步是如何實現(xiàn)的

Unity培訓(xùn)機(jī)構(gòu)講解游戲開發(fā)中的幀同步是如何實現(xiàn)的

來源:廣州達(dá)內(nèi)教育        時間:2023-05-30        熱度:30℃        返回列表

    對于開發(fā)游戲的人來說,達(dá)內(nèi)科技的小編相信場景里面的每一幀都是要很精確的,只有這樣才可以給客戶帶來很好的體驗感,在游戲行業(yè)中體驗感是十分的重要的。今天達(dá)內(nèi)科技的小編就來和大家一起說在游戲開發(fā)中幀同步是如何實現(xiàn)的?要怎么樣去實習(xí)這些功能的呢?下面就聽unity培訓(xùn)機(jī)構(gòu)達(dá)內(nèi)科技給大家講講。

  幀同步實現(xiàn)流程


  設(shè)定游戲的邏輯幀率和關(guān)鍵幀率,在這我們假定游戲1s執(zhí)行20個邏輯幀,每5幀是一個關(guān)鍵幀。


  服務(wù)器1s向客戶端廣播所有的關(guān)鍵幀,在這,服務(wù)器每1s向客戶端廣播4次關(guān)鍵幀,每次廣播內(nèi)容為上一個關(guān)鍵幀到這一個關(guān)鍵幀之間玩家的所有操作。


  客戶端收到服務(wù)器廣播的關(guān)鍵幀后,開始執(zhí)行所有的幀操作,例如A在第7幀要執(zhí)行移動命令。如果這段時間沒有任何操作,意味著這段時間玩家沒有操作。游戲每一幀都要執(zhí)行正常的游戲邏輯,該回血的回血,該攻擊的攻擊,跟關(guān)鍵幀是否攜帶操作信息沒有關(guān)系,只要收到關(guān)鍵幀,則一直執(zhí)行到當(dāng)前收到的關(guān)鍵幀為止。


  客戶端的每次操作不會立即生效,而是上傳給服務(wù)器,客戶端執(zhí)行操作的時間以收到服務(wù)器發(fā)送的為準(zhǔn),服務(wù)器保證的是所有客戶端都以同一幀執(zhí)行該操作。


  幀同步原理


  相同的輸入 + 相同的時機(jī) = 相同的顯示


  客戶端接受的輸入是相同的,執(zhí)行的邏輯幀也是一樣的,那么每次得到的結(jié)果肯定也是同步一致的。為了讓運行結(jié)果不與硬件運行速度快慢相關(guān)聯(lián),則不能用現(xiàn)實歷經(jīng)的時間(Time.deltaTime)作為差值閥值進(jìn)行計算,而是使用固定的時間片段來作為閥值,這樣無論兩幀之間的真實時間間隔是多少,游戲邏輯執(zhí)行的次數(shù)是恒定的,舉例:


  我們預(yù)設(shè)每個邏輯幀的時間跨度是1秒鐘,那么當(dāng)物理時間經(jīng)過10秒后,邏輯便會運行10次,經(jīng)過100秒便會運行100次,無論在運行速度快的機(jī)器上還是慢的機(jī)器上均是如此,不會因為兩幀之間的跨度間隔而有所改變。


  而渲染幀(一般為30到60幀),則是根據(jù)邏輯幀(10到20幀)去插值,從而得到一個“平滑”的展示,渲染幀只是邏輯幀的無限逼近插值,不過人眼一般無法分辨這種滯后性,因此可以把這兩者理解為同步的.


  如果硬件的運行速度趕不上邏輯幀的運行速度,則有可能出現(xiàn)邏輯執(zhí)行多次后,渲染才執(zhí)行一次的狀況,如果遇到這種情況畫面就會出現(xiàn)卡頓和丟幀的情況.


  如果說你也想要學(xué)習(xí)關(guān)于unity這個方面的知識的話,那么達(dá)內(nèi)科技?xì)g迎大家來我們公司的unity培訓(xùn)班進(jìn)行實地考察,也可以點擊我們文章下面的獲取試聽資格按鈕來獲取我們的unity課程免費試聽資格,在試聽中可以更加深入的了解我們達(dá)內(nèi)科技。

電話咨詢

電話咨詢

咨詢電話:
4008-569-579
回到頂部

回到頂部