4 快節奏的多人遊戲 第四部分 延遲補償

2021-09-14 02:01:14 字數 1053 閱讀 1007

能力有限,如有錯誤,請諒解,並歡迎指正!

玩家在現在看到自己

玩家看到的其他實體在過去

這種情況通常很好,但對於非常時間和空間敏感的事件來說這是很成問題的; 例如,射擊頭部的敵人!

所以你用你的狙擊步槍完美地瞄準了目標的頭部。你舉槍就射 - 這是乙個你不能錯過的鏡頭。

但你錯過了。

為什麼會這樣?

由於之前解釋過的客戶端 - 伺服器架構,你在瞄準的是在敵人100ms前的頭部- 而不是在你射擊時!

在某種程度上,它就像在宇宙中玩耍,光速真的非常慢; 你瞄準敵人過去的位置,但是當你扣動扳機時他已經消失了。

幸運的是,有乙個相對簡單的解決方案,大多數時候這對大多數玩家來說也是令人愉快的(下面討論了乙個例外)。

以下是它的工作原理:

伺服器很高興,因為他是伺服器。他總是很開心。

你很高興,因為你的目標是你的敵人的頭部,射擊,並得到乙個漂亮的的爆頭!

敵人可能是唯一乙個不完全幸福的人。如果他在被擊中時站著不動,這是他的錯,對吧?如果他在動…哇,你是乙個非常棒的狙擊手。

但是,如果他處於空位,背後是一堵牆,然後在他認為自己安全的情況下,在幾分之一秒後被槍殺了怎麼辦?

嗯,這可能發生。這是你做出的權衡。因為你過去向他射擊,他在掩護後可能仍會被射殺幾毫秒。

這有點不公平,但對於每個參與者來說,這是最合適的解決方案。錯過一次不容錯過的射門會更糟糕!

這結束了我的快節奏多人遊戲系列。這種事情顯然很難做到正確,但是對於正在發生的事情有明確的概念性理解,這並不是非常困難。

儘管這些技術很聰明,但我不能對它們說任何功勞; 這些文章只是我從其他**學到的一些概念的簡單易懂的指南,包括文章和源**,以及一些實驗。

關於這個主題的最相關的文章是what every programmer needs to know about game networking和latency compensating methods in client/server in-game protocol design and optimization.

4, shell 第四部分

root node1 cat a.sh bin bash read p please input a b expr a b root node1 sh a.sh please input a bexpr 非整數引數 root node1 root node1 cat a.sh bin bash re...

第四部分 方法3

對employee.calculatepay方法的呼叫是問題的原因。我們需要的是晚繫結。晚繫結 latebinging 意味著編譯器到執行時才選擇要執行的方法。為了迫使編譯器呼叫向上型別轉換得到的物件的方法的正確版本。我們使用了兩個關鍵字 virtual 和override.必須在基類方法中使用vi...

第四部分 方法5

linux繼承了unix作業系統結構清晰的特點。在linux下的檔案結構非常有條理。但是,上述的優點只有在對linux相當熟悉時,才能體會到。vmlinuz 我們已經知道,每乙個linux都有乙個核心 vmlinuz 我們在這個核心上新增上可以完成各種特定功能的模組,每個模組就體現在 linux中各...