D'une pression de bouton à une manette virtuelle.
Vous n'avez rien à lire de tout cela pour utiliser Dish. Ça fonctionne, c'est tout. Mais si vous voulez savoir ce que fait votre entrée entre votre pouce et le jeu, voici tout le trajet : entrée, chiffrement, transport, injection et chemin de retour.
- 1
Vous appuyez sur un bouton dans Dish
C'est peut-être une tape sur l'overlay tactile de Dish pour Android. Peut-être une L1 DualSense appairée en Bluetooth à votre téléphone et passée par Dish. Dans tous les cas, Dish capture l'événement d'entrée du système au moment où il se déclenche. Pas au prochain vsync, pas à la prochaine frame. Maintenant.
- 2
Dish construit un rapport XUSB de 12 octets
L'état de la manette est mis dans le format binaire compact de Satellite : deux octets de boutons, un octet par gâchette, deux octets par axe de stick analogique. Douze octets au total. Binaire-compatible avec le rapport XINPUT de Windows, le récepteur n'a donc rien à traduire.
- 3
Il chiffre le paquet
Dish préfixe un jeton de session de 4 octets et un compteur de 4 octets, puis scelle la charge utile avec ChaCha20-Poly1305 IETF en utilisant la clé symétrique de 32 octets que les deux extrémités ont dérivée de l'échange de clés X25519 lors de l'appairage. Le compteur sert à la fois de nonce et de défense contre le rejeu ; le jeton est authentifié comme AAD pour qu'il ne puisse pas être altéré.
- 4
Il est envoyé sur UDP
Dish ouvre un socket UDP sur le port 9876 et appelle
sendtodirectement depuis le thread d'entrée. Pas de file, pas de runtime asynchrone, pas de ring buffer. Le paquet est marqué DSCP EF (Expedited Forwarding, 0xB8), pour qu'un routeur ou AP compatible QoS sur votre LAN le fasse passer avant le trafic massif. - 5
Satellite reçoit et vérifie
Sur votre PC de jeu Windows, Satellite est posté sur son socket UDP sur un thread temps critique. À l'instant où un paquet atterrit, il est vérifié par MAC, déchiffré, et confronté au plus haut compteur déjà accepté sur cette connexion. Tout ce qui est obsolète, forgé ou altéré est jeté silencieusement, pour que votre jeu ne voie jamais une entrée corrompue.
- 6
Satellite injecte une manette virtuelle
Satellite passe le rapport au pilote noyau ViGEmBus en un seul appel
DeviceIoControl. Vous choisissez par manette de brancher une Xbox 360 ou une DualShock 4. La DS4 reçoit toute la surface : mouvement, doigts du pavé tactile, barre lumineuse et batterie, tous rapportés au jeu. - 7
Le jeu réagit, et répond
Le jeu lit le nouvel état de la manette à sa prochaine interrogation d'entrée, généralement dans une frame à 60 ips. Quand le jeu renvoie des vibrations, ou peint la barre lumineuse d'une nouvelle couleur, Satellite chiffre et expédie
MSG_RUMBLEouMSG_LIGHTBARau bon Dish, qui actionne les vibrations et la LED dans votre main. Latence totale doigt-à-pixel : quelques millisecondes plus le temps que votre écran ajoute à la frame.
L'appairage se fait une fois
La première fois qu'un Dish rencontre un nouveau Satellite, vous tapez « Générer un PIN » dans le menu de la barre des tâches ou l'interface web de Satellite. Satellite affiche un code à 4 chiffres valable 5 minutes. Dish envoie sa clé publique X25519 plus ce PIN à https://<votre-pc>:9443/api/pair. Satellite vérifie le PIN, calcule le secret partagé, retourne sa clé publique, et les deux extrémités mettent en cache la clé symétrique de 32 octets résultante. À partir de là, la manette se reconnecte en silence. Pas de PIN, pas d'UI, pas de réflexion.
« Mais qu'en est-il de Sunshine et Moonlight ? »
Sunshine et Moonlight restent la référence pour diffuser la vidéo de votre PC de jeu vers un autre écran, comme votre télé, un téléphone ou un Steam Deck. Ils incluent le transfert de manette, mais supposent que la manette et l'écran vivent sur le même appareil. Dish gère un modèle différent :
- Entrée découplée. Diffusez la vidéo sur la télé avec Moonlight, tenez votre téléphone comme manette. Satellite donne à cela une sensation native.
- Coop canapé. Plusieurs clients Dish s'appairent à un même Satellite, chacun avec sa propre manette virtuelle, même si un seul appareil diffuse la vidéo.
- Aucune vidéo du tout. Beaucoup de gens utilisent Dish pour jouer sur leur PC sur le même écran avec leur téléphone comme manette sans fil. Aucun streaming requis.
Les noms évoquent la même lignée. Voir pourquoi « Dish » et « Satellite ».
Essayez par vous-même.
Cinq minutes entre l'installation et la première entrée.
Télécharger Dish