Estable como un cable, incluso sobre Wi-Fi inestable.
Wi-Fi es un sitio hostil. Microondas, vecinos, beacons perdidos, eventos de roaming. Dish está hecho para sobrevivir a cada uno sin sacarte del juego.
Latidos
Tanto Dish como Satellite disparan un pequeño paquete de latido cada 2 segundos aunque no se esté pulsando ningún botón. Dos razones:
- Vitalidad. Cada lado sabe en pocos segundos si el otro se ha ido a oscuras. Mucho más ágil que cualquier timeout de keepalive de TCP.
- Bypass del power-save Wi-Fi. Algunos teléfonos estrangulan los paquetes salientes cuando la pantalla está quieta. Un latido regular mantiene la radio despierta, así que cuando por fin pulsas un botón no hay retraso de despertar.
Reconexión automática
Satellite cierra una conexión después de cinco latidos perdidos seguidos, es decir, unos 10 segundos de silencio. Mucho antes, Dish arranca un bucle ligero de rejoin contra la clave de sesión en caché. Sin reintroducir el PIN: la clave de emparejamiento persiste entre reinicios y a través del rejoin.
Críticamente, el mando virtual Xbox 360 o DualShock 4 sigue enchufado en el PC gaming durante la desconexión. La mayoría de los juegos no expulsan al jugador. Desde la perspectiva del juego, el mando simplemente se quedó quieto un momento.
Roaming y redes multi-AP
En una red mesh, tu teléfono puede saltar de un AP a otro en plena partida. La IP de origen cambia, el viejo mapeo NAT se resetea en silencio. Dish detecta la nueva IP de origen en el siguiente paquete y Satellite re-valida la sesión contra el token cifrado. Normalmente sin glitch visible en el juego.
Paquetes fuera de orden y duplicados
Wi-Fi puede entregar paquetes desordenados en redes ocupadas. El receptor de Satellite rastrea el contador más alto que ha aceptado en cada conexión y descarta cualquier cosa rancia. Los paquetes más nuevos siempre ganan, los más viejos se descartan en silencio. Nunca sientes que un stick rebote.
Qué pasa durante un corte real
Si tu Wi-Fi desaparece de verdad durante más de diez segundos, digamos un reinicio del router, Satellite cierra la conexión y desenchufa el mando virtual limpiamente. En cuanto vuelve la conectividad, Dish vuelve a descubrir Satellite vía mDNS y se restablece contra la clave guardada. Los sticks se centran, el mando reaparece y el resto depende del juego.
Sin desemparejamientos en pánico. Sin diálogos de "vuelve a añadir tu mando". Sin reescribir un PIN.
El sueño de pantalla se queda apagado mientras juegas
Dish para Android mantiene un wake lock más el servicio en primer plano connectedDevice que Android requiere, así el SO ve una sesión de juego conectada y nunca decide atenuar tu pantalla en mitad de un combate. Otras plataformas Dish en desarrollo usan la API equivalente de aserción de energía (IOKit en macOS, el inhibidor ScreenSaver D-Bus de freedesktop en Linux, SetThreadExecutionState en Windows).
Varios mandos por sesión
¿Noche de coop de sofá? Hasta 16 mandos por sesión de Satellite, con mandos virtuales, estado de cifrado, streams de movimiento y rutas de vibración independientes. Si un jugador se desconecta no arrastra a los demás. Un solo teléfono puede manejar varios mandos contra el mismo Satellite si realmente quieres.
Vida de batería
El hot path son unas pocas líneas de código. Dish para Android idlea cerca de cero CPU entre eventos de entrada. Los latidos son el único trabajo continuo, y un paquete UDP diminuto cada 2 segundos es básicamente gratis en una radio moderna.
En nuestras propias pruebas, Dish para Android consume notablemente menos batería que una llamada de audio Bluetooth.