平衡球競(jìng)速理論知識(shí) 第一期
前言:有的時(shí)候我也在想,明明有了新手教學(xué)第一期,卻為什么經(jīng)常還要給群友們解決一些電腦設(shè)備的問(wèn)題。后來(lái)我想明白了,視頻里只是說(shuō)了怎么做怎么做,但沒(méi)說(shuō)什么不能做,為什么要做,每一步的道理是怎么樣的。故開(kāi)此坑,用文章的形式徹底講明白我所知道的知識(shí),如有紕漏錯(cuò)誤,歡迎指正。
感謝ballance科研組其他成員的支持!變形的木球、四汪、doyagu這三位同志。

第一章???? 概述
一、基本名詞解釋
1.幀數(shù):英文名frame per second,縮寫(xiě)fps。大意就是顯卡每秒畫(huà)多少個(gè)畫(huà)面。比如說(shuō)240fps,就是顯卡每秒鐘輸出240個(gè)畫(huà)面。
2.顯示器刷新率:簡(jiǎn)稱(chēng)刷新率,單位是“hz”。含義是顯示器每秒更新多少個(gè)畫(huà)面。一般電腦顯示器為60hz,代表每秒刷新畫(huà)面60次,電競(jìng)顯示器有144hz,240hz,360hz等,刷新率越高畫(huà)面越絲滑,越高越貴。
3.幀時(shí)間:當(dāng)前幀數(shù)下,一個(gè)畫(huà)面所持續(xù)的時(shí)間,以毫秒為單位。這是一道小學(xué)數(shù)學(xué)題,假如幀數(shù)是240fps,那么請(qǐng)問(wèn)其中的一個(gè)畫(huà)面會(huì)停留多長(zhǎng)時(shí)間?1000ms/240hz=4.17ms,所以在240fps下,幀時(shí)間為4.17ms。
二、五大主戰(zhàn)場(chǎng)
1.游戲內(nèi)設(shè)置界面:options——graphics
從上到下分別為:分辨率、垂直同步開(kāi)關(guān)、云層開(kāi)關(guān),其中和fps相關(guān)的是分辨率,分辨率越大,fps越低。和延遲相關(guān)的是垂直同步,但這個(gè)暗藏玄機(jī)。開(kāi)啟時(shí)為發(fā)送請(qǐng)求垂直同步的信號(hào)且不鎖幀,關(guān)閉時(shí)為鎖定幀數(shù)為59(很奇怪吧?我也這么覺(jué)得)。
2.Framerateunlocker.bmod
該mod無(wú)條件取代游戲內(nèi)設(shè)置!
游戲內(nèi)mod的設(shè)置界面極其簡(jiǎn)約,參數(shù)如下
第一個(gè)格,0代表開(kāi)啟垂直同步,1代表不開(kāi)啟垂直同步且不鎖幀,2代表不開(kāi)啟垂直同步且按照第二個(gè)格的數(shù)值鎖幀。值得一提的是,在游戲內(nèi)垂直同步開(kāi)關(guān)變化時(shí),該mod會(huì)暫時(shí)失效,需要將參數(shù)改成別的再改回來(lái),才是生效狀態(tài)。
3.NVIDIA顯卡控制面板
桌面右鍵即可發(fā)現(xiàn)這個(gè)地方,如果沒(méi)有,去控制面板里找?!肮芾?D設(shè)置”中有垂直同步一項(xiàng),生效條件非常嚴(yán)格。必須沒(méi)有核顯添亂,游戲必須是全屏?。o(wú)邊框全屏也算全屏)。一旦生效具有最高權(quán)力,絕不存在垂直同步。
4.Intel核顯控制面板
新版存在于開(kāi)始菜單里,舊版存在于桌面右鍵中“圖形屬性”。但是請(qǐng)記住,這破軟件說(shuō)啥都不算數(shù),可以直接無(wú)視。
5.AMD顯卡控制面板
依然是桌面右鍵,你會(huì)看到它
當(dāng)使用amd核顯時(shí),不生效
當(dāng)使用amd獨(dú)顯時(shí),生效,同NVIDIA面板
既有核顯又有獨(dú)顯時(shí),生效一半(很玄學(xué)很罕見(jiàn))
三、n種常見(jiàn)電腦
縮寫(xiě):i=Intel n=NVIDIA a=AMD
1.Intel的cpu 沒(méi)顯卡
2.AMD的cpu 沒(méi)顯卡
3.n獨(dú)顯的臺(tái)式機(jī)、
4.a獨(dú)顯的臺(tái)式機(jī)
4.a+n混合模式筆記本
5.i+n混合模式筆記本
6.帶獨(dú)顯直連的筆記本,請(qǐng)打開(kāi)獨(dú)顯直連,可視作臺(tái)式機(jī)
四、 三種游戲畫(huà)面
1.?獨(dú)占全屏:桌面關(guān)閉,游戲恒定處于最上層,是最理想的狀態(tài)。鑒別方式:使用fn快捷鍵調(diào)節(jié)音量,看不到懸浮窗。Win10上對(duì)游戲本體設(shè)置“禁用全屏優(yōu)化”是其必要但不充分條件!
2.?無(wú)邊框全屏:由于ballance使用directx8進(jìn)行渲染,win10會(huì)將ballance視作老游戲,阻止獨(dú)占全屏,而是變成一個(gè)跟屏幕一樣大還無(wú)邊框的窗口(后文中dwm是存在于這里的)。鑒別方式:使用fn快捷鍵調(diào)節(jié)音量,看得到懸浮窗。
3.窗口化:就是窗口化,沒(méi)啥好說(shuō)的
4.無(wú)邊框窗口:全屏?xí)r由于切屏,會(huì)導(dǎo)致ballance形成無(wú)邊框窗口,此時(shí)垂直同步強(qiáng)制開(kāi)啟,各種性質(zhì)無(wú)法預(yù)測(cè),是需要避免的最差情況!

第二章 延遲哪里來(lái)?
一、DWM
1.DWM全稱(chēng)windows desktop manager,中文名“桌面窗口合成器”。顧名思義就是把桌面上所有的窗口合成在一起。比方說(shuō),A游戲正在以600fps運(yùn)行,B游戲以200fps運(yùn)行,桌面以60fps運(yùn)行,為了讓他們看上去和諧沒(méi)有抖動(dòng)和撕裂,且不互相干擾,就要合在一起。合成后,所有窗口實(shí)際展現(xiàn)的畫(huà)面數(shù)與顯示器刷新率相等??梢赃@樣理解,dwm相當(dāng)于在游戲上蓋了一層膜,A游戲提交出的600個(gè)畫(huà)面經(jīng)過(guò)dwm篩選,只留下60個(gè)報(bào)給顯示器。
2.工作原理:將顯示器畫(huà)面滯后2個(gè)刷新率,在這段時(shí)間內(nèi)收集若干個(gè)完整畫(huà)面,隨后交給顯示器。
3.關(guān)閉方法:
Win7:在控制面板搜索“服務(wù)”,進(jìn)入并找到windows desktop manager,禁用即可。
Win10:使用整合包內(nèi)disable dwm這個(gè)小軟件,將保留的程序加入txt白名單。如果黑屏,用ctrl+shift+home鍵自救,存在一定風(fēng)險(xiǎn)和未知狀況。
Win11:目前來(lái)看,關(guān)不掉,或者你需要足夠歐(?)
4.影響:幀數(shù)降低一點(diǎn),畫(huà)面水波紋撕裂,延遲降低非常多。
5.特別提示:關(guān)閉后ballance前后不得有窗口堆疊,會(huì)導(dǎo)致幀數(shù)折半。(畢竟沒(méi)組合就會(huì)互相打架)
二、垂直同步
1.定義:將fps與顯示器刷新率綁定,從而實(shí)現(xiàn)最流暢的畫(huà)面效果。
2.危害:大到夸張的延遲,和間歇性的巨大卡頓。
3.關(guān)閉方法:使用framerateunlocker.bmod,設(shè)為1或者2,同時(shí),在五個(gè)主戰(zhàn)場(chǎng)內(nèi)檢查,任何有關(guān)垂直同步的項(xiàng)目都應(yīng)該設(shè)為關(guān)。
三、兼容性延遲
Win7不要開(kāi)任何兼容性,win8可選開(kāi)管理員,win10可選開(kāi)16位色。當(dāng)兼容模式存在時(shí),一定是無(wú)邊框全屏而不是獨(dú)占全屏。對(duì)于win10系統(tǒng),dx8渲染模式,兼容性一定是處于winxp的狀態(tài)(覆蓋你的設(shè)置),從而導(dǎo)致無(wú)邊框全屏(覆蓋禁用全屏優(yōu)化的選項(xiàng)),也就是說(shuō),延遲有兩層。當(dāng)使用dx8轉(zhuǎn)9補(bǔ)丁后,兼容模式消失,依然是無(wú)邊框全屏,延遲還一層。當(dāng)勾選“禁用全屏優(yōu)化”后,實(shí)現(xiàn)獨(dú)占全屏,一層延遲都沒(méi)有了。
四、跳過(guò)渲染延遲
*Ballex正在以999fps跑著,你輸入一個(gè)信號(hào),過(guò)了好幾幀才顯示出來(lái),再正常不過(guò)了。
*Ballex正在以15fps跑著,你輸入一個(gè)信號(hào),本幀內(nèi)無(wú)變化,下幀無(wú)變化,下下幀畫(huà)面才動(dòng),是不是有點(diǎn)問(wèn)題?相當(dāng)于,幀時(shí)間已經(jīng)長(zhǎng)到足以忽略系統(tǒng)硬延遲的地步了,本該在下幀作出的反應(yīng)卻推到了下下幀,為什么?
1.在dx10及以后的游戲中,為了保證畫(huà)面連續(xù)穩(wěn)定,采用了一個(gè)api轉(zhuǎn)換層,工作原理和dwm一樣,但只不過(guò)是拖延了游戲內(nèi)的1幀(dwm是拖延顯示器的2個(gè)刷新)。
2.如果作者代碼寫(xiě)歪了,會(huì)導(dǎo)致物理幀和渲染幀耦合錯(cuò)誤,導(dǎo)致先出舊畫(huà)面,再算物理,再出新畫(huà)面。如此又會(huì)導(dǎo)致游戲內(nèi)1幀畫(huà)面滯后。
3.Ballance不存在跳過(guò)渲染延遲,Ballex存在2幀跳過(guò)渲染延遲,Ballex2依然是2幀跳過(guò)渲染延遲。
4.在存在跳過(guò)渲染延遲的情況下,高幀數(shù)和低幀數(shù)的延遲差異是巨大的,以跳兩幀為例,999fps下是2ms,而60fps下是33.3ms,所以,玩ballex最好999fps。
五、系統(tǒng)輸入延遲
這是定死的,咱沒(méi)法改變,而且測(cè)量起來(lái)誤差也挺大的,根據(jù)現(xiàn)有數(shù)據(jù)來(lái)看,大約是6ms,僅供參考。
六、FPS和物理刷新率延遲
1.很明顯,fps越高,幀時(shí)間越短,那么,幀就可以更新得更及時(shí)。但是過(guò)高的幀數(shù)反而會(huì)帶來(lái)副作用,如全局游戲加速等。那么,最合適的幀數(shù)是多少呢?根據(jù)實(shí)驗(yàn)數(shù)據(jù),Ballance在220fps左右達(dá)到最低延遲,和600fps或1200fps并沒(méi)有多少差距。
2.通常情況,物理運(yùn)算和渲染是分開(kāi)的兩條鏈,先經(jīng)過(guò)物理的刷新計(jì)算,再進(jìn)入渲染隊(duì)列的刷新顯示。Ballance的物理刷新率為132hz,兩條線互相影響。ballex為100hz,ballex2目前為200hz。物理刷新率改變不了,所以暫且不用管他。

第三章 自己動(dòng)手測(cè)延遲
一、 準(zhǔn)備材料
1. 帶鍵盤(pán)宏功能的鍵盤(pán)或者鍵位修改軟件
2. 有原生240fps慢動(dòng)作攝影的手機(jī)
3. 把視頻從手機(jī)發(fā)到電腦的軟件
4. 可以逐幀的電腦視頻播放器
二、 操作方法
1.編寫(xiě)一個(gè)鍵盤(pán)宏,同時(shí)摁下caps鍵和esc,存在caps鍵上
2.進(jìn)游戲第二關(guān),一邊連續(xù)摁caps鍵,一邊用手機(jī)拍攝屏幕和鍵盤(pán)燈,以稍大的間隔連點(diǎn)20次caps鍵。
3.把視頻發(fā)到電腦上逐幀看,從鍵盤(pán)燈亮的一幀開(kāi)始(本幀不算)播放,直到屏幕開(kāi)始出現(xiàn)變化的那一幀,經(jīng)過(guò)了n幀
4.20次結(jié)果取平均,單位比較特殊,叫“延遲單位”,由于視頻是240fps,所以其中一幀就是240分之1秒。N單位延遲=(N*4.17)ms
三、 統(tǒng)計(jì)數(shù)據(jù)
至少包括系統(tǒng)版本,全屏狀態(tài),dwm狀態(tài),垂直同步狀態(tài),幀數(shù),顯示器刷新率等要素。
未完待續(xù)……
2022.5.27
云居一號(hào)