什么叫抽风流?
过去在玩星际的的时候, 一般韩国高手的APM(每分钟有效操作数)在400以上, 最高的有700次一分钟的. 想象一下他们敲键盘,点鼠标时候的样子, 确实和抽风没区别.
当然玩GP不是操星际. 有必要抽风吗?
从平均数字上讲, GP现在最快的歌也就140APM左右, 比星际的要求低多了. 不过在歌曲的个别阶段, 比如ALL SOLO 或者BREAKING的时候游戏速度会明显提升, 这个时候容易发生1秒10-16HIT的情况, 如果遇到高手对战,确实要拼一下手速的.
从1-2测的实际情况看, 在论坛上喊键盘延迟的兄弟大有人在. (一般都是30-40连K以上的). 而从尿天王的亲身体验说, 键盘延迟的区别也是非常明显. 在1-2测的日子里, 我一共使用过 LEGITEC 黑珍珠, 苹果G5, MS-S340 , 河田G-400 OEM 和SONY的笔记本自带型 5种键盘. 确实每一种键盘的K点都有区别. 如果以我个人的感觉来讲, 是苹果G-5最准确, 河田的次之, 而LEGITEC 黑珍珠则是最不准的.
为什么会这样呢? 根本原因在于,苹果的键盘是给UNIX系统用的, 当装在WINDOS系统下时, 默认键盘API不调用所以没有时间延迟, 同样河田的OEM由于不知道最后给谁用, 所以在接口上设置的比较中性. 而成熟厂的键盘则保守很多.
当然, 本人可不是在给苹果做推销, 其实只要设置合理, 多数键盘都可以很准确的找到K点(小三这种, 越卡越兴奋的人除外).
要自己调整键盘功能, 就必须知道键盘的工作原理. 下面一节中是原理的简单叙述, 不想看的朋友可以直接跳过, 然后照最后的设置流程走, 就可以了.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
华丽的分割线
键盘工作理论:
1 发包间隔.
不论什么键盘都是不可能处理数据的, 只有把我们敲的键转到电脑上, 才能执行有效的指令. 发包间隔就是键盘向电脑两次发送数据的时间差.
微软默认的发包时间差是0.02秒, 也就是说: 默认情况下1秒内键盘最多可以执行50个指令集.
而经过驱动强化以后,这个数值是有变化的.
2 间隔扫描率
发包是指键盘向电脑传送命令的集合, 显然集合并不是只有一个命令的. 在0.02秒的间隔时间内, 键盘还将不断的扫描操作, 如果有并发操作, 那也可以一起向电脑传送.
微软默认的键盘按键延迟时间是0.0026秒,也就是说,在0.02秒的发包间隔时间内, 我们最多可以有7次有效的操作. 这7次按键都会作为发包向电脑传送.
综合1-2这两点, 我们在一秒中内执行的有效APM就是 50 X 7 =350 次
但是: 实际上这是做不到的. 因为并非所有向电脑传送的发包都被处理了.
3 键盘带宽
带宽就是, 单位时间内传输的最大数据量. 如果带宽不够, 那多余的数据就要等待前面的数据处理完成后, 再进行处理. 如果发生了以上情况, 那我们就可以认为发生了命令执行的延迟. 延迟时间的长短, 视数据量而定
微软规定, 默认的键盘带宽是64B, 而一个键盘按键的实际数据量是21B . 也就是说, 如果我们同时按了3个键, 那就把键盘的带宽占满了. 虽然按照发包规则, 可以允许7个操作同时存在, 但是在第一时间, 只有3个操作是有效的, 其他4个处于等待状态.
这也就是高手们长说的三键冲突. 当然设备带宽也是可以调的.
4 同键延迟
这是一个逻辑盘定的问题, 如果你一直按着A键不放, 那是算你敲了几个A呢?
微软规定, 同键延迟是0.2秒. 如果你按住A不放, 那0.2秒以后, 就算你敲了第2下. 这个设顶定对于游戏的意义在于: 如果A是开火, 那你按住A1秒, 就对外打了5枪. 同键延迟时间越短, 1秒内的有效指令数量就越多.
联系到GP的意义在于, 打连击的时候, 如果你设了0.5秒的间隔时间, 那一秒最多只能连击2次. 按照微软的默认规定, 1秒内最多连击同键5次. 这会在短连击的手速比拼时非常吃亏.
理论课到此结束, 那我们该如何优化我们的键盘呢?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
华丽的第二条分割线
键盘优化操作手册:
1 装驱动
老百姓问: 键盘要装驱动吗?
上帝回答: 是TM 硬件就要装驱动.
在上面的理论课里, 几乎每一条我都必须加这样的注解, "微软规定" , 仿佛微软连抽水马桶该放多少水都要管一样. 造成这种情况的直接原因就是, 我们没有装键盘驱动.
从本质上微软确实想管, 可惜目前它还没有做到一家独大, 因此键盘的接口是开放的, 其他键盘厂商只要安装了合适的驱动, 就可以极大的提升键盘性能.
2 注册表修改
不推荐大家用, 因为这有可能导致系统冲突, 或者资源使用的溢出.
这里之列几个小命令表
键盘缓存控制键值:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesKbdclassParametersKeyboardDataQueueSize
键盘响应速度键值:
HKEY_CURRENT_USERConsolePanelKeyboardkeyboardspeed
按键延迟键值
HKEY_CURRENT_USERConsolePanelKeyboardkeyboarddelay
3 VB编译(会C或者汇编的话 会更加简单)
这个已经属于程序级别了, 本人也不是非常了解. 只是在基础上讲, VB编译可以调整键盘的发包频率, 最极限的情况可以做到, 敲一次键盘,完成一个发包(当然你如果同时敲2个键,就有可能死机了)
onClipEvent (keyDown) {
onEnterFrame
Key.isDown(XX)
_root.qiu._x+=(XX)
键位里的XX是数字,代表发包率和间隔时间.
友情提示
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
火星很危险, 地球也很危险. 如果你不熟悉自行调整的意义, 那最保险的优化方式是" 装驱动".
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~