Estável como um fio, mesmo em Wi-Fi instável.
Wi-Fi é um lugar hostil. Micro-ondas, vizinhos, beacons perdidos, eventos de roaming. O Dish foi feito para atravessar cada um deles sem te tirar do seu jogo.
Heartbeats
Tanto o Dish quanto o Satellite disparam um pequeno pacote de heartbeat a cada 2 segundos, mesmo quando nenhum botão está sendo apertado. Duas razões:
- Vivacidade. Cada lado sabe em poucos segundos se o outro caiu. Muito mais ágil do que qualquer timeout de keepalive TCP.
- Bypass do power-save de Wi-Fi. Alguns celulares limitam pacotes de saída quando a tela fica parada. Um heartbeat regular mantém o rádio acordado, então quando você finalmente aperta um botão não há atraso de wake-up.
Reconexão automática
O Satellite encerra uma conexão após cinco heartbeats perdidos seguidos, ou seja, aproximadamente 10 segundos de silêncio. Bem antes disso, o Dish começa um loop leve de rejoin contra a chave de sessão em cache. Sem precisar redigitar o PIN: a chave de pareamento persiste através de reinicializações e através do rejoin.
Criticamente, o controle virtual Xbox 360 ou DualShock 4 continua plugado no PC gamer durante a queda. A maioria dos jogos não vai ejetar o jogador. Da perspectiva do jogo, o controle só ficou parado por um instante.
Roaming e redes multi-AP
Em uma rede mesh, o seu celular pode fazer roaming de um AP para outro em pleno match. O IP de origem muda, o mapeamento NAT antigo silenciosamente reseta. O Dish detecta o novo IP de origem no próximo pacote e o Satellite revalida a sessão contra o token criptografado. Normalmente sem nenhuma falha visível no jogo.
Pacotes fora de ordem e duplicados
O Wi-Fi pode entregar pacotes fora de ordem em redes ocupadas. O receptor do Satellite rastreia o maior contador que aceitou em cada conexão e descarta qualquer coisa antiga. Pacotes mais novos sempre vencem, mais antigos são descartados silenciosamente. Você nunca sente um stick voltar.
O que acontece durante uma queda real
Se o seu Wi-Fi realmente sumir por mais de dez segundos, digamos um reboot do roteador, o Satellite encerra a conexão e desconecta o controle virtual de forma limpa. No instante em que a conectividade volta, o Dish redescobre automaticamente o Satellite via mDNS e se restabelece contra a chave salva. Sticks centralizam, o controle reaparece, e o resto fica por conta do jogo.
Sem despareamento em pânico. Sem diálogo "por favor readicione seu controle". Sem redigitar PIN.
A tela não dorme enquanto você joga
O Dish para Android mantém um wake lock mais o serviço de primeiro plano connectedDevice exigido pelo Android, então o SO enxerga uma sessão de jogo conectada e nunca decide te apagar a tela no meio da luta. Outras plataformas Dish em desenvolvimento usam a API equivalente de power-assertion (IOKit no macOS, o inibidor D-Bus ScreenSaver do freedesktop no Linux, SetThreadExecutionState no Windows).
Múltiplos controles por sessão
Noite de co-op de sofá? Até 16 controles por sessão do Satellite, com controles virtuais, estado de criptografia, streams de movimento e rotas de vibração independentes. Um jogador caindo não derruba os outros. Um único celular pode até pilotar vários controles contra o mesmo Satellite se você realmente quiser.
Duração da bateria
O hot path são algumas linhas de código. O Dish para Android fica com CPU perto de zero entre eventos de entrada. Heartbeats são o único trabalho contínuo, e um pacote UDP minúsculo a cada 2 segundos é basicamente de graça em um rádio moderno.
Nos nossos próprios testes, o Dish para Android consome perceptivelmente menos bateria do que uma chamada de áudio por Bluetooth.