煙雨料峭提示您:看後求收藏(第八百三十一章 卡頓與延遲,遊戲開發巨頭,煙雨料峭,630看書),接著再看更方便。

請關閉瀏覽器的閱讀/暢讀/小說模式並且關閉廣告遮蔽過濾功能,避免出現內容無法顯示或者段落錯亂。

和客戶端遊戲世界的不同,或者說我們通常所說的客戶端延遲,都可以總結為:客戶端延遲=(1/2*延遲)+內插幀延遲。”

“這其實是一個很複雜的機制,我原本想要三言兩語的將其說明白,但是我發現這根本沒有辦法做到,索性我就詳細的說一下什麼叫做卡頓補償或者更加確切的一個說法,就是卡頓補償這個機制到底是怎麼執行的?”

“現在我描述一個這樣的玩家在遊戲裡面的遊戲場景,來透過這個場景簡單的說一下什麼叫做卡頓補償。”

“這個場景是這樣的。”

“玩家a看到玩家b向一個拐角行進,玩家a開了1槍,客戶端把開槍這個動作傳送給服務端。服務端接收到xms後的資料,x為玩家y(延遲)的一半。服務端這時檢視過去發生過的(在記憶載入中),查詢到當玩家a開槍的時候玩家b的位置。在基礎的例子中,服務端會返回(xms+玩家a的內插幀延遲)到玩家a看到玩家b的時間點,但是其他的數值因素或許由遊戲程式設計師想要卡頓補償如何施行來決定。”

“服務端決定玩家a開的槍是否命中。開槍想要被算做命中,需要它必須打在玩家模型的命中框中。在這個例子裡,服務端認為玩家a命中玩家b。儘管如此。玩家b的螢幕可能已經看到自己在牆後了,但是在玩家b看到自己在牆後的時間和服務端認為玩家b被命中的時間的差異等於:1/2玩家a的延遲+1/2玩家b的延遲+距離上一次快照的時間。”

“在下一次快照中,服務端更新玩家a、b的客戶端上的資料。玩家a看到命中瞄準的位置x,玩家b看到自己的生命值減少或者死亡。”

“看完這一個過程之後,是不是就對於什麼叫做卡頓或者說是延遲有了一個完全不同的清晰的定義了呢?”

傑斯特寫完這些之後。想要將帖子發出去,但是他突然的想起了一個玩家經常爭執的問題,正好可以利用這個機會解釋一下,於是他便在這個帖子的下面緊接著寫道:“我突然的想起了一個fps遊戲玩家之間經常的進行爭吵的經典問題,那就是我跟另外一個玩家同時開火,並且同樣命中。為什麼我死了對方卻沒事呢?”

“因為這是不同的遊戲存在著不同的設定的原因,在一些遊戲中,比如《反恐精英》,如果先開的一槍到達服務端的時候殺死了目標,那麼任何接下來的所有到達服務端的命中目標的開火將被服務端忽略。這種情況下。就不可能存在同時擊殺,因為2玩家在1快照中向對方開槍並都死亡。”

“但是,在另外的一些遊戲當中,比如說有一些人已經試玩過的《軍團要塞》,共同擊殺是可行的。這裡有一個叫做權重的東西在影響著遊戲的程序。”

“如果你用《反恐精英》的模型,玩家在良好的延遲下會有明顯的優勢,並且在一些時候可能會出現‘oh,我在死前打了他一槍。但是他並沒有死!’的情況。你甚至會在你死前聽到你發出的槍聲,但仍沒有造成任何傷害。”

“如果你用目前的《軍團要塞》模型,反應時間的微小差別並不會意味很多。舉例,如果服務端快照連拍率是64,如果玩家a比玩家b快了15ms開槍,但是他們都是在15.6ms的快照中完成這個動作,那麼他們就會同歸於盡,整個過程其實就是這麼的簡單。”

“如果卡頓補償過量。會顯示結果為我在他之後開槍但是還是打死了他。”

“如果卡頓補償不足,會顯示結果為我需要再移動準星一點才能打中他。”

“只是看這個的話任何人都會覺得這很簡單<script type="text/javascript">reads();</script>。但是拆開來看的話,那就會非常的複雜。而我剛才說的不過只是一點皮毛而已,實際上,我並不是專業的網路工程師,對於這個,我知道的也僅僅是一點皮毛罷了。”

“可能很多人會問,我對於你說的這些毫無興趣,我想要知道,我如果卡頓了應該怎麼辦,我可以有什麼辦法來解決自己卡頓的問題呢?”

傑斯特寫到這裡的時候把這個帖子發了出去,然後又另開一貼。

他決定在新的帖子裡面詳細的說一下這個問題。

“如果你想要明顯的改善你的延遲,那麼首先,你要確定,你所感受到的卡頓並不是因為遊戲提供商帶來的,可能一些比如伺服器的負載等等的問題,讓你覺得遊戲不流暢,但是這事跟你無關的,如果你確定了別人都很流暢,但是我就不流暢之後,那麼我下面

本章未完,點選下一頁繼續閱讀。

歷史小說相關閱讀More+

從贅婿到女帝寵臣

俊俏少年

超級神獸養殖大師

沒落的遊吟詩人

九魂之印

青山失魂

死亡旅途

錦玄

約戰裡的鹹魚修仙

寒天陽