Od pritiska dugmeta do virtuelnog kontrolera.
Ne morate čitati ništa od ovoga da biste koristili Dish. Jednostavno radi. Ali ako želite znati šta vaš ulaz radi između vašeg palca i igre, ovo je cijeli put: ulaz, enkripcija, transport, ubacivanje i povratni put.
- 1
Pritisnete dugme na Dish-u
Možda je to tap na touch overlay-u Dish-a za Android. Možda je to DualSense L1 sparen Bluetooth-om sa vašim telefonom i premošten preko Dish-a. U svakom slučaju, Dish hvata ulazni događaj od OS-a u trenutku kada se desi. Ne na sljedećem vsync-u, ne na sljedećem frejmu. Sada.
- 2
Dish pravi 12-byte XUSB izvještaj
Stanje kontrolera ide u kompaktan wire format Satellite-a: dva byte-a dugmadi, jedan byte po trigeru, dva byte-a po osi analognog stick-a. Ukupno dvanaest byte-a. Binarno kompatibilno sa Windows XINPUT izvještajem, tako da prijemnik ne mora ništa prevoditi.
- 3
Šifrira paket
Dish dodaje 4-byte session token i 4-byte brojač na početak, zatim pečati payload sa ChaCha20-Poly1305 IETF koristeći 32-byte simetrični ključ koji su oba kraja izvela iz X25519 razmjene ključeva pri uparivanju. Brojač služi i kao nonce i kao zaštita od replay napada; token je autentikovan kao AAD tako da se ne može mijenjati.
- 4
Šalje se preko UDP-a
Dish otvara jedan UDP socket na portu 9876 i poziva
sendtodirektno iz input thread-a. Bez reda, bez async runtime-a, bez ring bafera. Paket je obilježen sa DSCP EF (Expedited Forwarding, 0xB8), tako da bilo koji QoS-svjesni ruter ili AP na vašem LAN-u preskače ga ispred masovnog saobraćaja. - 5
Satellite prima i verifikuje
Na vašem Windows gaming PC-u, Satellite čeka na svom UDP socketu na time-critical thread-u. U trenutku kada paket stigne, MAC se verifikuje, dešifruje, i provjerava se prema najvišem brojaču koji smo već prihvatili na ovoj vezi. Sve što je zastarjelo, lažirano ili izmijenjeno tiho se odbacuje, tako da vaša igra nikada ne vidi pokvaren ulaz.
- 6
Satellite ubacuje virtuelni kontroler
Satellite predaje izvještaj kernel drajveru ViGEmBus u jednom
DeviceIoControlpozivu. Vi birate po kontroleru da li priključiti Xbox 360 kontroler ili DualShock 4. DS4 dobija punu površinu: pokret, prste touchpada, lightbar i bateriju, sve prijavljeno nazad igri. - 7
Igra reaguje, i odgovara
Igra čita novo stanje kontrolera pri svom sljedećem input poll-u, obično unutar jednog frejma na 60 fps. Kada igra piše vibracije nazad ili boji lightbar u novu boju, Satellite šifrira i šalje
MSG_RUMBLEiliMSG_LIGHTBARnazad ka pravom Dish-u, koji aktivira haptiku i LED u vašoj ruci. Ukupno kašnjenje od prsta do piksela: nekoliko milisekundi plus šta god vrijeme frejma vašeg monitora doda.
Uparivanje se dešava jednom
Prvi put kada se Dish susretne sa novim Satellite-om, kliknete "Generate PIN" u Satellite tray meniju ili web UI-ju. Satellite prikazuje 4-cifreni kôd koji živi 5 minuta. Dish šalje svoj X25519 javni ključ plus taj PIN na https://<vaš-pc>:9443/api/pair. Satellite verifikuje PIN, izračunava zajedničku tajnu, vraća svoj javni ključ, i obje strane keširaju rezultujući 32-byte simetrični ključ. Od tada se kontroler tiho ponovo povezuje: bez PIN-a, bez UI-ja, bez razmišljanja.
"A šta je sa Sunshine i Moonlight?"
Sunshine i Moonlight su i dalje zlatni standard za strimovanje videa sa vašeg gaming PC-a na drugi ekran, kao što je vaš TV, telefon ili Steam Deck. Uključuju prosljeđivanje kontrolera, ali to pretpostavlja da kontroler i ekran žive na istom uređaju. Dish obrađuje drugačiji model:
- Razdvojen ulaz. Strimujte video na TV sa Moonlight-om, držite telefon kao kontroler. Satellite čini da to izgleda nativno.
- Co-op sa kauča. Više Dish klijenata pari se sa jednim Satellite-om, svaki sa svojim virtuelnim kontrolerom, čak i kada samo jedan uređaj strimuje video.
- Bez videa uopšte. Mnogi ljudi koriste Dish za igranje PC-a na istom monitoru sa svojim telefonom kao bežičnim kontrolerom. Strimovanje nije potrebno.
Imena klimaju glavom istom porijeklu. Pogledajte zašto „Dish“ i „Satellite“.
Probajte sami.
Pet minuta od instalacije do prvog ulaza.
Preuzmite Dish