Digite "controller polling rate test" em um buscador e você encontrará dezenas de páginas que darão um número em Hz. Execute duas delas no mesmo controle e você provavelmente obterá respostas diferentes. Execute uma delas em um notebook de 60 Hz e depois em um monitor de 144 Hz, com o mesmo controle, e você obterá respostas muito diferentes.
O número não é aleatório. É a sua taxa de atualização.
O mecanismo, num parágrafo
O navegador não recebe a entrada do controle como eventos. Não há oncontrollermove. Uma página pede
navigator.getGamepads() para o estado atual, e o lugar mais sensato para consultar é dentro do retorno de chamada de animação — a função que o navegador executa uma vez por quadro desenhado. Assim, uma página pode observar no máximo uma mudança de estado por quadro. A 60 fps, são sessenta observações por segundo; a 144 fps, cento e quarenta e quatro, e não faz diferença se o controle conectado está informando a 125 Hz ou 1000 Hz.
Tudo abaixo decorre desse único fato.
Porque é que o número continua a indicar-lhe algo
Uma leitura no teto máximo não é inútil. Ela é um piso: o seu controle está acompanhando a sua tela, que é a parte que chega ao jogo. Um quadro sem novos dados do controle seria um quadro em que sua visão não girou, e é exatamente isso que você não tem.
O que ela não pode fazer é distinguir entre um controle que está confortavelmente à frente da sua tela e um que está apenas acompanhando. Ambos registram a mesma coisa.
Quando o número é real
Se a leitura fica claramente abaixo a sua taxa de atualização, o controle é o mais lento dos dois e o valor é uma medição genuína. Isso é comum no Bluetooth, e é o caso em que vale a pena agir — alguns quadros do seu jogo reutilizarão a posição anterior do stick porque nada mais recente chegou.
Essa é toda a árvore de decisão:
- No teto — nada para corrigir aqui. Um cabo não consegue elevar um número que o navegador nunca conseguiu ultrapassar.
- Abaixo do teto — o controle é o limite. Vale a pena repetir usando um cabo, pois o mesmo controle conectado por fio geralmente responde muito mais rápido do que via Bluetooth.
O que as tabelas de referência significam
A maioria das páginas de polling rate imprime uma tabela como esta:
| Conexão | Normalmente reportado |
|---|---|
| Cabo USB | around 1000 Hz |
| Receptor de 2.4 GHz | around 1000 Hz |
| Bluetooth, controles de Xbox | around 125 Hz |
| Bluetooth, controles de PlayStation | around 250 Hz and up |
Esses valores vêm dos protocolos, não de um navegador, e são um contexto útil. Mas repare no que a tabela significa ao lado do mecanismo acima: em uma tela de 144 Hz, todas as linhas exceto Bluetooth-Xbox estão acima do seu teto. Um navegador não consegue distinguir nenhuma delas. A tabela descreve uma gama de hardware que um teste de navegador comprime numa única resposta.
Porque é que o seu analógico tem de estar em movimento
Um controle parado pode parar completamente de enviar pacotes: não há nada a relatar e o silêncio economiza bateria. Um teste que contasse alterações de estado enquanto você mantém as mãos longe estaria medindo a taxa de ociosidade e chamando-a de polling rate.
Portanto, qualquer versão honesta deste teste pede-lhe para rodar os analógicos durante toda a amostra. Se vir um número suspeitosamente baixo, essa é a primeira coisa a verificar antes de concluir algo sobre o hardware.
O que isto significa para um jogo
Quase nada, e esta é a parte que os argumentos sobre Hz normalmente ignoram. Um jogo lê o seu controle no seu próprio ritmo — tipicamente uma vez por ciclo de simulação ou uma vez por quadro — exatamente pela mesma razão que um navegador o faz. Um controle a reportar a 1000 Hz num jogo a correr a 120 fps está enviando aproximadamente oito pacotes por leitura, sete dos quais são substituídos antes de qualquer coisa olhar para eles.
O argumento a favor de um controle mais rápido não é que o jogo veja mais entradas. É que o pacote mais recente no momento da leitura é mais fresco: a 1000 Hz os dados têm no máximo um milissegundo de idade, a 125 Hz podem ter oito. Essa é uma diferença real e pequena, e é uma afirmação diferente daquela que o número em Hz parece sugerir.
Como obter um número que possa comparar
- Meça na máquina em que você realmente joga e com o monitor que você realmente usa.
- Anote a taxa de atualização ao lado do resultado. Uma leitura de controle sem ela não é interpretável.
- Rode ambos os analógicos durante toda a amostra.
- Repita uma vez. Uma única execução que discorde de outras duas é uma falha de temporização, não de hardware.
- Se o número estiver abaixo da sua taxa de atualização, experimente um cabo e meça novamente. Se estiver no teto, não há nada aqui para melhorar.
O controller check executa isto juntamente com o drift, intervalo do analógico, botões e gatilhos, e imprime o teto ao lado da leitura. O teste de input latency reporta a mesma medição com a distribuição de intervalos por trás, o que é mais informativo do que qualquer um dos números isoladamente.
A versão curta
O navegador consulta o controle uma vez por quadro renderizado. Qualquer polling rate de controle fornecido pelo navegador é limitado pela sua taxa de atualização. Portanto, uma leitura nesse limite significa "pelo menos tão rápido quanto isto, e esta página não consegue ver além". Apenas uma leitura abaixo desse limite é o número real do seu controle, e esse é o único que vale a pena tentar alterar.