ERR0RPR0MPT / maimai-android-touch-panel

适用于 Android 设备的 maimai 虚拟触摸屏幕
MIT License
62 stars 5 forks source link

关于修改部分数据从而减小延迟的建议和询问 #3

Closed Xiaodu233 closed 1 month ago

Xiaodu233 commented 1 month ago

程序代码中的time.sleep(*)根据不同波特率有不同的值,但是看VSPD里显示的状态,就算配置文件改成115200也还是9600,游戏端口也一直是9600。调成更小的时间值可否带来更小的延迟,即使CPU消耗会提升。初始设置7.5ms体验后延迟极大,经常会miss,我尝试改成1.2ms有极大的延迟改进。 还有另外一个数值的改动。end_time = time.perf_counter() + (sleep_time - *) / 1e6中星号的数值默认是1.0,注释说1.0是时间补偿,需要根据自己PC的性能去实测。在多次尝试后索性改成了20.0,不太清楚这个数值的单位是什么,但和上面的参数一并修改后,延迟可以设成A:-1.3/B:-0.2(只是最适合自己的设置)左右,miss的情况也好了很多。 此外,TOUCH_THREAD_SLEEP_MODE我一直在关闭状态,这个选项和其参数可能也会影响延迟? 另: 使用的平板原始分辨率2.8k,虚拟显示屏和moonlight的分辨率设成了原先的四分之一,moonlight用的是B站UP主阿西西的日常修改版,可以自定义分辨率、竖屏等等,sunshine独显直连用NVIDIA NVENC Encoder,传输延迟2-3ms,解码延迟3-4ms。

其他建议:

AREA_SCOPE设定值应该和屏幕大小有关,11.5寸设在50-60左右差不多。 程序可以中途关闭再打开,不用重启游戏,方便测试适合适的参数。 填写ANDROID_ABS_INPUT_SIZE时,在屏幕右下角点击获取的数据如果明显大于实际屏幕尺寸,直接把实际屏幕尺寸长宽乘10填入即可,实际屏幕尺寸可以在moonlight的设置分辨率里看到。 后附:多次测试后修改了一些内容,在音频使用电脑输出,而非串流端输出时,延迟可进一步降低,导致延迟设置出现离谱的全是负值,使用串流端输出似乎更难调整延迟。

ERR0RPR0MPT commented 1 month ago

那个微秒延迟如果写20的话就是不sleep直接跳过了)

延迟这部分确实是有很大问题,每个设备设置的延迟参数可能都不一样。如果没有发生两个线程相互争夺资源而导致出现延迟的情况,不设延迟要更好一点