平衡球竞速理论知识 第一期
前言:有的时候我也在想,明明有了新手教学第一期,却为什么经常还要给群友们解决一些电脑设备的问题。后来我想明白了,视频里只是说了怎么做怎么做,但没说什么不能做,为什么要做,每一步的道理是怎么样的。故开此坑,用文章的形式彻底讲明白我所知道的知识,如有纰漏错误,欢迎指正。
感谢ballance科研组其他成员的支持!变形的木球、四汪、doyagu这三位同志。

第一章 概述
一、基本名词解释
1.帧数:英文名frame per second,缩写fps。大意就是显卡每秒画多少个画面。比如说240fps,就是显卡每秒钟输出240个画面。
2.显示器刷新率:简称刷新率,单位是“hz”。含义是显示器每秒更新多少个画面。一般电脑显示器为60hz,代表每秒刷新画面60次,电竞显示器有144hz,240hz,360hz等,刷新率越高画面越丝滑,越高越贵。
3.帧时间:当前帧数下,一个画面所持续的时间,以毫秒为单位。这是一道小学数学题,假如帧数是240fps,那么请问其中的一个画面会停留多长时间?1000ms/240hz=4.17ms,所以在240fps下,帧时间为4.17ms。
二、五大主战场
1.游戏内设置界面:options——graphics
从上到下分别为:分辨率、垂直同步开关、云层开关,其中和fps相关的是分辨率,分辨率越大,fps越低。和延迟相关的是垂直同步,但这个暗藏玄机。开启时为发送请求垂直同步的信号且不锁帧,关闭时为锁定帧数为59(很奇怪吧?我也这么觉得)。
2.Framerateunlocker.bmod
该mod无条件取代游戏内设置!
游戏内mod的设置界面极其简约,参数如下
第一个格,0代表开启垂直同步,1代表不开启垂直同步且不锁帧,2代表不开启垂直同步且按照第二个格的数值锁帧。值得一提的是,在游戏内垂直同步开关变化时,该mod会暂时失效,需要将参数改成别的再改回来,才是生效状态。
3.NVIDIA显卡控制面板
桌面右键即可发现这个地方,如果没有,去控制面板里找。“管理3D设置”中有垂直同步一项,生效条件非常严格。必须没有核显添乱,游戏必须是全屏!(无边框全屏也算全屏)。一旦生效具有最高权力,绝不存在垂直同步。
4.Intel核显控制面板
新版存在于开始菜单里,旧版存在于桌面右键中“图形属性”。但是请记住,这破软件说啥都不算数,可以直接无视。
5.AMD显卡控制面板
依然是桌面右键,你会看到它
当使用amd核显时,不生效
当使用amd独显时,生效,同NVIDIA面板
既有核显又有独显时,生效一半(很玄学很罕见)
三、n种常见电脑
缩写:i=Intel n=NVIDIA a=AMD
1.Intel的cpu 没显卡
2.AMD的cpu 没显卡
3.n独显的台式机、
4.a独显的台式机
4.a+n混合模式笔记本
5.i+n混合模式笔记本
6.带独显直连的笔记本,请打开独显直连,可视作台式机
四、 三种游戏画面
1. 独占全屏:桌面关闭,游戏恒定处于最上层,是最理想的状态。鉴别方式:使用fn快捷键调节音量,看不到悬浮窗。Win10上对游戏本体设置“禁用全屏优化”是其必要但不充分条件!
2. 无边框全屏:由于ballance使用directx8进行渲染,win10会将ballance视作老游戏,阻止独占全屏,而是变成一个跟屏幕一样大还无边框的窗口(后文中dwm是存在于这里的)。鉴别方式:使用fn快捷键调节音量,看得到悬浮窗。
3.窗口化:就是窗口化,没啥好说的
4.无边框窗口:全屏时由于切屏,会导致ballance形成无边框窗口,此时垂直同步强制开启,各种性质无法预测,是需要避免的最差情况!

第二章 延迟哪里来?
一、DWM
1.DWM全称windows desktop manager,中文名“桌面窗口合成器”。顾名思义就是把桌面上所有的窗口合成在一起。比方说,A游戏正在以600fps运行,B游戏以200fps运行,桌面以60fps运行,为了让他们看上去和谐没有抖动和撕裂,且不互相干扰,就要合在一起。合成后,所有窗口实际展现的画面数与显示器刷新率相等。可以这样理解,dwm相当于在游戏上盖了一层膜,A游戏提交出的600个画面经过dwm筛选,只留下60个报给显示器。
2.工作原理:将显示器画面滞后2个刷新率,在这段时间内收集若干个完整画面,随后交给显示器。
3.关闭方法:
Win7:在控制面板搜索“服务”,进入并找到windows desktop manager,禁用即可。
Win10:使用整合包内disable dwm这个小软件,将保留的程序加入txt白名单。如果黑屏,用ctrl+shift+home键自救,存在一定风险和未知状况。
Win11:目前来看,关不掉,或者你需要足够欧(?)
4.影响:帧数降低一点,画面水波纹撕裂,延迟降低非常多。
5.特别提示:关闭后ballance前后不得有窗口堆叠,会导致帧数折半。(毕竟没组合就会互相打架)
二、垂直同步
1.定义:将fps与显示器刷新率绑定,从而实现最流畅的画面效果。
2.危害:大到夸张的延迟,和间歇性的巨大卡顿。
3.关闭方法:使用framerateunlocker.bmod,设为1或者2,同时,在五个主战场内检查,任何有关垂直同步的项目都应该设为关。
三、兼容性延迟
Win7不要开任何兼容性,win8可选开管理员,win10可选开16位色。当兼容模式存在时,一定是无边框全屏而不是独占全屏。对于win10系统,dx8渲染模式,兼容性一定是处于winxp的状态(覆盖你的设置),从而导致无边框全屏(覆盖禁用全屏优化的选项),也就是说,延迟有两层。当使用dx8转9补丁后,兼容模式消失,依然是无边框全屏,延迟还一层。当勾选“禁用全屏优化”后,实现独占全屏,一层延迟都没有了。
四、跳过渲染延迟
*Ballex正在以999fps跑着,你输入一个信号,过了好几帧才显示出来,再正常不过了。
*Ballex正在以15fps跑着,你输入一个信号,本帧内无变化,下帧无变化,下下帧画面才动,是不是有点问题?相当于,帧时间已经长到足以忽略系统硬延迟的地步了,本该在下帧作出的反应却推到了下下帧,为什么?
1.在dx10及以后的游戏中,为了保证画面连续稳定,采用了一个api转换层,工作原理和dwm一样,但只不过是拖延了游戏内的1帧(dwm是拖延显示器的2个刷新)。
2.如果作者代码写歪了,会导致物理帧和渲染帧耦合错误,导致先出旧画面,再算物理,再出新画面。如此又会导致游戏内1帧画面滞后。
3.Ballance不存在跳过渲染延迟,Ballex存在2帧跳过渲染延迟,Ballex2依然是2帧跳过渲染延迟。
4.在存在跳过渲染延迟的情况下,高帧数和低帧数的延迟差异是巨大的,以跳两帧为例,999fps下是2ms,而60fps下是33.3ms,所以,玩ballex最好999fps。
五、系统输入延迟
这是定死的,咱没法改变,而且测量起来误差也挺大的,根据现有数据来看,大约是6ms,仅供参考。
六、FPS和物理刷新率延迟
1.很明显,fps越高,帧时间越短,那么,帧就可以更新得更及时。但是过高的帧数反而会带来副作用,如全局游戏加速等。那么,最合适的帧数是多少呢?根据实验数据,Ballance在220fps左右达到最低延迟,和600fps或1200fps并没有多少差距。
2.通常情况,物理运算和渲染是分开的两条链,先经过物理的刷新计算,再进入渲染队列的刷新显示。Ballance的物理刷新率为132hz,两条线互相影响。ballex为100hz,ballex2目前为200hz。物理刷新率改变不了,所以暂且不用管他。

第三章 自己动手测延迟
一、 准备材料
1. 带键盘宏功能的键盘或者键位修改软件
2. 有原生240fps慢动作摄影的手机
3. 把视频从手机发到电脑的软件
4. 可以逐帧的电脑视频播放器
二、 操作方法
1.编写一个键盘宏,同时摁下caps键和esc,存在caps键上
2.进游戏第二关,一边连续摁caps键,一边用手机拍摄屏幕和键盘灯,以稍大的间隔连点20次caps键。
3.把视频发到电脑上逐帧看,从键盘灯亮的一帧开始(本帧不算)播放,直到屏幕开始出现变化的那一帧,经过了n帧
4.20次结果取平均,单位比较特殊,叫“延迟单位”,由于视频是240fps,所以其中一帧就是240分之1秒。N单位延迟=(N*4.17)ms
三、 统计数据
至少包括系统版本,全屏状态,dwm状态,垂直同步状态,帧数,显示器刷新率等要素。
未完待续……
2022.5.27
云居一号