最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【炒冷飯】對于電競游戲輸入延遲的測量分析與優(yōu)化

2023-08-07 14:57 作者:云居一號yunjuyihao  | 我要投稿

對于電競游戲輸入延遲的測量分析與優(yōu)化

內(nèi)容提要:

本文旨在指出windows平臺上使用DX8 DX9渲染接口的游戲的延遲的測試方法,大小特點和優(yōu)化方案。采用“慢動作鍵盤宏”法可將測量精度提升到4ms左右,并且通過對比實驗與公式計算,進一步推導(dǎo)出DX8 DX9電競游戲輸入延遲隨環(huán)境變量的變化特點。極大降低鍵盤延遲測試工具的成本,并提高精度和兼容性,發(fā)掘真正優(yōu)秀的鍵盤。本文旨在一改電競游戲的“玄學(xué)優(yōu)化”與“玄學(xué)手感”的研究方式,將對游戲體驗有影響的因素用數(shù)據(jù)的方式表現(xiàn)出來。

關(guān)鍵詞:電子競技 輸入延遲 游戲優(yōu)化 鍵盤 鍵盤延遲

筆者是一名Ballance(一種延時競技游戲)競速玩家,在使用不同的電腦和鍵盤時,水平的差距是極大的。一個“垂直同步”的開關(guān),幾乎決定了我是高手還是菜雞。帶著這樣的疑惑,我開始研究不同的電腦為什么會讓我有著天壤之別的水平。此時正值NVIDIA?Reflex技術(shù)發(fā)布,它第一次以硬件形式而非感覺形式,測量了從usb到顯示器的輸入延遲,并精確到了1ms級別。然而,一臺搭載NVIDIA?Reflex技術(shù)的顯示器高達數(shù)千元,筆者家境貧寒買不起,于是就依據(jù)其原理,設(shè)計了一套測量輸入延遲的方案。

Reflex的原理是,比較從usb信號輸入顯示器,到顯示器液晶分子變化的時間差,它囊括了除了外設(shè)以外所有部分的延遲(引用來源1)。根據(jù)這個原理,我們可以將游戲操作鍵與大寫鍵綁在一起,比較大寫燈和屏幕變化的時間差,也可以得出來相近的延遲數(shù)據(jù)。

準備材料:帶鍵盤宏功能的鍵盤、有原生240fps慢動作攝影的手機、把視頻從手機發(fā)到電腦的軟件、可以逐幀的電腦視頻播放器

操作方法:

1.編寫一個鍵盤宏,同時摁下caps鍵和某個鍵,存在caps鍵上

2.找到一個瞬間發(fā)生的切換效果,一邊連續(xù)摁caps鍵,一邊用手機拍攝屏幕和鍵盤燈,以稍大的間隔連點20次caps鍵。

3.把視頻發(fā)到電腦上逐幀看,從鍵盤燈亮的一幀開始(本幀不算)播放,直到屏幕開始出現(xiàn)變化的那一幀,經(jīng)過了n幀

4.20次結(jié)果取平均,單位比較特殊,叫“延遲單位”,由于視頻是240fps,所以其中一幀就是240分之1秒。N單位延遲=(N*4.17)ms

數(shù)據(jù)統(tǒng)計:至少包括系統(tǒng)版本,全屏狀態(tài),dwm狀態(tài),垂直同步狀態(tài),幀數(shù),顯示器刷新率等要素。

?


通過控制變量法可以得出以下結(jié)論:

對比1和2 :與是否使用mod無關(guān)

對比2和3 :win7上與全屏與否無關(guān)

對比6和7和8 :與用哪款軟件鎖幀無關(guān)(其實bandicam延遲會高出一幀,可忽略)

對比4和5和6 :FPS應(yīng)該在240以上

對比4和9:絕對不能開啟垂直同步

對比2和10 :win10的延遲遠高于win7

對比10和11和12 :延遲與兼容性選項無關(guān)

對比2和13:將DX8轉(zhuǎn)為DX9后,延遲將會降低為win7水平

查閱Microsoft官網(wǎng)文獻可知,win7可以選擇手動打開和關(guān)閉dwm(桌面窗口合成器),僅影響窗口化游戲,全屏無dwm。win10更為復(fù)雜,win10存在獨占全屏(無dwm),假全屏(有dwm),窗口化(有dwm)三種情況。查閱Microsoft官網(wǎng)文獻可知,“禁用全屏優(yōu)化”將會使游戲強制處于獨占全屏(引用來源2),但是,在ballance上,這個選項并未生效。并且,按道理說兼容模式會提高延遲,而實際情況并非如此。筆者推測是因為由于ballance年代較早,win10會強制為其開啟兼容模式,并強制取消獨占全屏。年代較早的游戲普遍采用Opengl1.1、DX7、DX8等渲染管線,而這些很可能是win10進行判斷“老游戲”的依據(jù)。

擴大實驗,選取其他DX8游戲進行延遲測量,如“東方永夜抄”“CS1.6”,“CS起源”,“東方花映?!保凹t色警戒2尤里的復(fù)仇”,并采用dxwnd中的wrapper工具相互轉(zhuǎn)化,得出以下結(jié)論。凡是DX8 DX7游戲,都會被強制開啟兼容模式,并強制取消獨占全屏。Opengl1.1游戲,在NVIDIA平臺非獨占全屏,在intel平臺獨占全屏。DX9、D9ex、DX10、DX11均可獨占全屏,dxvk1.0非獨占全屏且延遲高,dxvk2.0獨占全屏低延遲。

獨占全屏是否等于低延遲?窗口化是否等于高延遲?其實不一定,要具體分析。我們必須要搞明白,何為獨占全屏?dwm又是怎么增加延遲的?查閱外網(wǎng)文獻得知,一般來說,獨占全屏能夠覆蓋音量懸浮窗和輸入法,假全屏不能,但這種方法僅適用于DX而不適用于Opengl(引用來源3)。對于情況復(fù)雜多變的Opengl、vulkan等非微軟硬件接口,我們就不應(yīng)當糾結(jié)于獨占全屏,一切用延遲數(shù)據(jù)說話。Dwm本質(zhì)上是一層篩選與組合的“膜”,一般來說,游戲畫面先從Rasterizer交到GPU,顯卡畫好了以后發(fā)給DX?surface,再發(fā)到顯卡緩沖區(qū),然后顯示到屏幕上。但是dwm會從DX?surface拷貝到DWM自己的緩沖區(qū),然后等各個窗口畫面都提交之后,再統(tǒng)一發(fā)送到顯卡緩沖區(qū),畫到屏幕上,所以得名“桌面窗口合成器”。Dwm為了確保顯示出的內(nèi)容絲滑流暢,緩沖區(qū)會留2-4個“顯示器完整畫面”。游戲畫的速度再快,完整的畫面也無法搶占緩沖區(qū)內(nèi)存好的2-4個畫面,從而導(dǎo)致整體滯后,這就是它導(dǎo)致高延遲的原因。

罪惡的dwm,左邊高延遲,右邊低延遲,現(xiàn)在你知道為啥很多老游戲在win10高延遲了吧

游戲內(nèi)的垂直同步就是在緩沖區(qū)中強制存上2-4個“顯示器完整畫面”,而dwm是在游戲外再開辟一塊緩沖區(qū)存上2-4個“顯示器完整畫面”,所以兩者造成的額外延遲是直接相加,互不干擾。同理,在一個60hz顯示器上,無論游戲FPS有多高,即使一秒輸出了1000個畫面,能夠畫上的只有第32張,第64張,第96張……緩沖區(qū)的幀永遠是過時的,而新的卻還得等16.6ms才能進入,大部分幀被直接丟棄。

對抗dwm的方法只有三個:第一個是繞過dwm,直接輸出到屏幕,也就是所謂“獨占全屏”。第二個是干死dwm,win7可以直接關(guān),win8.1和win10早期版本可以通過stopdwm軟件來關(guān),win10晚期版本和win11不可關(guān)。第三個是改良dwm,d9ex、dx11、dx12都可以通過Flip?model來改良dwm的幀緩沖區(qū)。比方說,在60hz屏幕,游戲1000fps,緩沖區(qū)三幀的情況下,當?shù)谝粠划嫷狡聊簧蠒r,此時游戲已經(jīng)提交了更新的完整幀,此時通過算法篩選,丟棄掉本來的“第二幀”和“第三幀”,而是把這個最新的幀畫上。也就是說,只要fps高于顯示器刷新率,這樣做就一定能讓緩沖區(qū)的滯后幀廢棄,讓更新的幀進來,fps越高,最新幀搶占緩沖區(qū)內(nèi)滯后幀的概率越大。這樣,既保證了高fps意味低延遲,又可以在fps劇烈波動時依靠緩沖區(qū)內(nèi)滯后的幾幀使畫面絲滑連貫。(引用來源4)目前來說,絕大部分電競游戲沒有對此作出優(yōu)化,有一部分游戲使用硬件手段降低延遲(如配合Gsync?Freesync等)但效果并不好,僅僅能提升觀感。

但這都是理想情況,實際情況還要再復(fù)雜一些,比方說,很多游戲存在物理幀與渲染幀的錯誤耦合,導(dǎo)致當前渲染幀提交后才開始算下一個物理幀。我們通常采用低fps法來探究此類問題,當fps僅有20時,系統(tǒng)本身和硬件的延遲在巨大的幀間隔時間面前不值一提,也就是說,你在當前幀的操作,一定會在下一幀馬上反映出來。如果下一幀仍然沒有反應(yīng),只能說你在按下的時候,物理引擎并沒有立即開始處理,當你看到?jīng)]反應(yīng)的那個“下一幀”的時候,此時才開始處理你的操作,然后會在“下下幀”看到反映。我將其命名為“跳過幀”,跳過幀在低fps會極大拉高輸入延遲,而在高fps下不值一提(畢竟幀間隔很短了)。

此外,當一個游戲出現(xiàn)cpu滿載或gpu滿載的情況下,輸入延遲會有不同程度的提升,當cpu和gpu交替滿載時最為致命,而NVIDIA?Reflex技術(shù)對于高負載下的延遲有良好的解決方案,這里既不考慮也不贅述(引用來源1)。

所以,延遲通用定理為2+500/引擎刷新率+500/fps+500/屏幕刷新率+“DWM”*2000/刷新率+“垂直同步”*2000/刷新率+1000/fps*跳過幀(ms),這個公式是比較基礎(chǔ)和理想化的的,對于opengl、vulkan、flip?model、高負載游戲會有不同程度出入。另外,F(xiàn)reesync和Gsync在fps遠高于顯示器刷新率時,對延遲幾乎無影響。

想獲得全屏低延遲,只有DX9獨占全屏;想獲得窗口低延遲,只有DX11并使用independent flip模式(引用來源6)。在win11中,無邊框全屏dx11游戲也是低延遲。Dgvoodoo2和specialk是非常強大的工具。Dgvoodoo2可以將任何游戲的渲染方式變?yōu)閐x11,但并不會帶有flip model,而specialk能為任何dx11游戲打開flip model,并提供實時的延遲顯示和幀率控制。該延遲顯示的實質(zhì)是從請求渲染到顯卡提交畫面的時間差,并不包含兩幀的間隔時間(frametime),也不包含物理運算,屏幕刷新間隔等,理想情況可低于1ms。Specialk可能在多人網(wǎng)游中存在安全風(fēng)險,如封號與筆者無關(guān)。

Win10和win11的窗口化低延遲有著極為苛刻的條件,下面列出幾個必要不充分條件:窗口不得部分超出屏幕(僅win10),窗口不得覆蓋任務(wù)欄(僅win10),不得開啟10bit色深,不得開啟HDR,不得開啟freesync,不得在前后堆疊窗口或懸浮窗,不得使用屏幕錄制錄屏,顯卡驅(qū)動不得早于2021年,若系統(tǒng)存在縮放需要禁用高dpi下的縮放。我們可以使用presentmon這款軟件,測量所有窗口化程序的畫面延遲,也可以使用specialk,測量全屏或窗口狀態(tài)下的dx11游戲畫面延遲,確保不要坑了自己。

對于延遲的探究不能只停留在機箱里,機箱外面同樣有三個物件值得注意,它們就是鼠標鍵盤顯示器。

鍵盤內(nèi)的延遲包含首字符延遲、尾字符延遲、次字符延遲、硬件燈效延遲等(引用來源5)叫首字符延遲,可以理解為兩鍵盤同時導(dǎo)通,看誰先把信息傳到電腦里,即從觸點觸發(fā)到信號導(dǎo)通。終止延遲的術(shù)語叫尾字符延遲,可以理解為兩鍵盤同時取消導(dǎo)通,看誰先把停止的信號傳到電腦里,即從觸點斷開到信號終止。次字符延遲,是鍵盤對于特定游戲的針對性延遲補償,比方說,當一個游戲短時間(0.5s)內(nèi)的連續(xù)輸入,延遲依次加3ms,那么鍵盤可以通過調(diào)整次字符為3ms,第一下敲擊故意晚一些發(fā)碼,然后幾下敲擊依次比前一次少等3ms,這樣雖然提高了整體的延遲,但是像拼圖一樣抵消了游戲的延遲特性,讓操作更加符合直覺。硬件燈效延遲即為在主控中因為處理燈光效果而造成的處理滯后,如果延遲設(shè)定過為激進則會非常不穩(wěn)定。

鍵盤的回報率數(shù)值也對延遲有較大影響,125hz相當于每8ms上傳一次信號,平均延遲4ms,1000hz則是每1ms上傳一次信號,平均延遲0.5ms,但是2000hz、4000hz、8000hz等超高回報率,對延遲的影響則不大。對于一些不采用xinput的游戲,過高的回報率反而會造成一些負面影響。

KeyResponsePK是比較鍵盤首字符延遲的常用軟件,它是由血手幽靈公司開發(fā)的開源鍵盤測試軟件(現(xiàn)源代碼與程序本體均從官網(wǎng)下架)。用一根筷子連接兩個鍵盤的不同按鍵進行壓下,軟件會自動計算出兩個信號到達的時間差,從而反映出兩鍵盤的首字符延遲差距(相對值)。壓下的時候必須要迅速,否則會讓短觸發(fā)鍵程的鍵盤有優(yōu)勢。

Keyboardtest是測試鍵盤尾字符延遲的常用軟件。舉個例子,一個16ms尾字符的鍵盤,輸入電腦總的信號長度,一定大于16ms,即使你瞬間接通和斷開,實際效果就是先等待首字符延遲,然后向電腦發(fā)信號,再等待16ms,停止信號。根據(jù)此原理,我們可以用手指反復(fù)刮鍵帽,刷“按下時間”的最小值,此數(shù)值即為鍵盤尾字符延遲。該方法并不完全準確,近年來不少鍵盤設(shè)定了“最短輸入時間”。比如說“最短輸入時間”為30ms,如果你只按了18ms就松手,鍵盤會幫你補到30ms;如果按了31ms,當你抬手后瞬間就會斷開。那么這個鍵盤應(yīng)該屬于尾字符0ms,而不是軟件所顯示的30ms。

由于上述兩種方法均存在不小的誤差,甚至測尾字符會出現(xiàn)錯誤。我們需要更強大的硬件與軟件進行測試。主流方法有兩個,第一個是高速攝影機拍示波器法,但這個方法過于昂貴且麻煩,只適用于工廠測試,且與實際體驗存在不小偏差。第二個是ultralink回傳法,電腦控制ultralink再控制繼電器模擬機械軸觸發(fā),再通過鍵盤內(nèi)部電路傳回電腦,該方法只能用于測試機械軸而不能測試光軸,成本在500元左右,同樣不適用于普通玩家。

網(wǎng)名叫“ae”的一名外設(shè)愛好者,設(shè)計了并聯(lián)光耦測試電路。其原理是利用一個開關(guān),絕對同時(誤差遠小于0.1ms故忽略不計)短接導(dǎo)通和斷開兩個外設(shè)的不同開關(guān),相當于一根超級準的“筷子”。并且,由于是采用短接導(dǎo)通,不會因鍵程而產(chǎn)生誤差。并聯(lián)光耦成本僅為一毛錢,幾根跳線的成本更是直接忽略,操作十分簡便,具有可推廣性。

網(wǎng)名為“Swung0x48”的一名程序員開發(fā)了一款新的鍵盤測試軟件KeyboardLatencyTester,這款軟件使用imgui界面與每幀的觸發(fā)檢測,精度與fps成正比,一般可達0.25ms左右。結(jié)果輸出為兩個按鍵的“下壓抬起圖”與每個按鍵的“下壓抬起時間戳”,再借助Excel則可以直接計算出按下時間差與抬起時間差,同時得出首字符與尾字符數(shù)值。

“并聯(lián)光耦KeyboardLatencyTester法”不僅可以測試出首字符延遲與尾字符延遲,還可以測出外設(shè)本身的延遲穩(wěn)定程度與接口對于延遲穩(wěn)定性的影響。結(jié)果表明,機箱后置usb口無延遲波動,顯示器、前置usb口、正常布線或混亂布線的hub,均存在1ms的延遲波動。其局限性在于,它不可以直接測試“斷開觸發(fā)型”光學(xué)開關(guān),需要加上一個非門電路,并且數(shù)值為相對值,必須用一個延遲已知且穩(wěn)定的外設(shè)當基準。

以xm1r鼠標作為0ms首字符基準,以b820r作為0ms尾字符基準,對其他鍵盤鼠標進行測試。結(jié)果顯示,絕大部分熱插拔機械鍵盤“首20尾20”,絕大部分普通機械鍵盤“首16尾16“,棱鏡軸鍵盤“首16尾16”,游俠rx光紅“首4尾11”,雷蛇天平光軸“首6尾1”,雷蛇模擬光軸“首4尾1”,海盜船K70pro“首0尾0最短輸入時間30ms”,寧芝plum84v2“首0尾2”或“首0尾0最短輸入時間18ms”,并聯(lián)光耦電路和鼠標測試結(jié)果參看下表。

磁軸好像也不行來著……

然后是顯示器,顯示器的響應(yīng)時間很重要。液晶分子的偏轉(zhuǎn)帶來顏色的變化,但這個過程是需要時間的。顯示器的刷新率決定了畫面?zhèn)鬟M來等待的時間,而響應(yīng)速度是指從開始變色到變色完成的用時。一般來說,手機的960fps慢動作攝影加上ufotest的網(wǎng)頁就可以勝任一般的測試。通過計數(shù)飛碟后殘影和個數(shù)與持續(xù)時間,一般的TN材質(zhì)屏2ms,一般ips屏10ms,fast-ips屏6ms,va屏20+ms,va屏的響應(yīng)速度太慢導(dǎo)致你觀察到變色的時候,畫面已經(jīng)滯后10ms左右了,所以va屏不適于電競游戲不僅是因為嚴重的拖影,還因為延遲太大。如果優(yōu)化得當,系統(tǒng)和鍵盤延遲總共不超過10ms,而主要矛盾,就變成了顯示器。在響應(yīng)速度跟不上的時候僅提升刷新率,是沒有任何意義的。

選擇低延遲的鍵盤鼠標顯示器,有助于游戲水平的快速提升。很多電競游戲的延遲非常之高,而不少玩家對其無感或漠不關(guān)心;現(xiàn)在的市場魚龍混雜,虛假宣傳層不出窮,掌握科學(xué)的測試手段,不被廣告牽著走,是高玩的必修課。現(xiàn)在,硬件方面,低延遲外設(shè)處在發(fā)展低谷,低延遲測試工具和結(jié)論沒有統(tǒng)一的標準,很多偽低延遲產(chǎn)品大行其道,真低延遲產(chǎn)品存在各種體驗問題;軟件方面,微軟對老電競游戲持淘汰目的,legacy?flip和independent?flip的條件有待挖掘??聪蛭磥?,我們要推動flip?model的發(fā)展與應(yīng)用,深究獨占全屏的原理與獲取方式,發(fā)展各類wrapper,宣傳低延遲相關(guān)理論與科學(xué)方法,提升光學(xué)開關(guān)的使用體驗,與國內(nèi)OEM廠家積極溝通與合作,提高光學(xué)開關(guān)產(chǎn)品的國際競爭力,研究外設(shè)特點與游戲需求間的客觀聯(lián)系,深入研究rapid trigger技術(shù)。

參考文獻:

[1]?https://www.nvidia.cn/geforce/technologies/reflex/

[2]https://learn.microsoft.com/en-us/windows/win32/direct3d9

[3]https://www.gamedeveloper.com/programming/fullscreen-exclusive-is-a-lie-sort-of-#methods-of-enabling-fullscreen-exclusive-mode-in-opengl

[4]https://learn.microsoft.com/zh-cn/windows/win32/direct3darticles/direct3d-9ex-improvements

[5]?https://www.bilibili.com/read/cv7465854

[6] https://wiki.special-k.info/en/SwapChain

?

?

?

?

?

致謝

變形的木球(協(xié)助測試、方法指導(dǎo))

Swung0x48(文獻翻譯、鍵盤測延遲工具開發(fā)者)

ae(并聯(lián)光耦,極大量外設(shè)測試數(shù)據(jù))

加菲電競外設(shè)(電競導(dǎo)師、寧芝合伙人)

東方圈(前人研究成果)

血手幽靈(光軸鍵盤領(lǐng)軍者)

瑞翼鯊(光學(xué)開關(guān)領(lǐng)軍者

方方土(很大概其的論文寫作指導(dǎo))

馬特(協(xié)助測試)

欣小欣(好耶

其他劃水小組成員


【炒冷飯】對于電競游戲輸入延遲的測量分析與優(yōu)化的評論 (共 條)

分享到微博請遵守國家法律
讷河市| 三原县| 巴青县| 桦南县| 沁阳市| 凤城市| 呼玛县| 调兵山市| 准格尔旗| 于田县| 阳山县| 高密市| 大洼县| 关岭| 仁怀市| 大悟县| 泰州市| 黄山市| 海淀区| 安龙县| 佳木斯市| 霍城县| 怀化市| 锡林郭勒盟| 景泰县| 偃师市| 河北区| 郴州市| 深水埗区| 汶上县| 白银市| 深州市| 鄂州市| 广河县| 平湖市| 阳江市| 桑植县| 江口县| 阿克陶县| 淄博市| 平舆县|