engineeringfairnessmultiplayer
Autorita na serveru znamená, že server drží jedinou kopii partie, na které záleží. Tvé zařízení pošle tah, který chceš zahrát, server ho porovná s vlastními kostkami a vlastními pravidly, a teprve pak se deska změní. Upravená aplikace může tvrdit cokoli: pravda bydlí tam, kam nedosáhne.
Vrhcáby si tuhle přísnost zaslouží. Je to hra s kostkami, žebříčkem a bankem, což znamená, že podvádět se dá dvěma způsoby: falšovat tahy, nebo ohýbat hody. Férový server musí zavřít obě dveře. Ty druhé zahrnují i nás, a k tomu se dostaneme.
Co autorita na serveru vlastně znamená?
Každý živý zápas Orionu existuje na jediném místě: na našem serveru. Deska v tvém telefonu je okno, ne partie. Když táhneš kámen, aplikace jím nehýbe. Pošle krátkou zprávu, která říká: tohle chci zahrát. Server ten záměr přehraje na vlastní desce, vlastním pravidlovým jádrem, s kostkami, které pro to kolo hodil. Legální tahy posunou partii dál a oba hráči dostanou tutéž novou pozici. Nelegální tahy se nikdy nestaly.
Je to jeden server pro všechny. Aplikace pro iOS je nativní SwiftUI, pro Android nativní Jetpack Compose, a obě jsou okny do stejného zázemí a stejné množiny hráčů. Jiné sklo, stejná pravda.
Proč se ve hrách důvěřujících klientovi podvádí?
Protože soupeřovo zařízení patří soupeři. Cokoli na něm běží, jde změnit. Záplatovaný klient může posílat tahy, které nikdy nebyly legální. Editor paměti umí přepsat číslo na místě a obrazovka tu lež věrně zobrazí. Nic z toho není exotické. Nástroje jsou zdarma, zdokumentované a starší než chytré telefony.
Hra, která věří klientovi, žádá každého hráče, aby slíbil, že se nepodívá pod kapotu. Někdo se podívá. Tak jsme názor klienta udělali bezvýznamným. V Orionu má aplikace přesně tři úkoly:
- Kreslit: desku, kameny, kostku zdvojení, časomíru.
- Žádat: požádat server o zahrání tahu, nabídnout zdvojení, vzdát se.
- Přijímat: zobrazit pozici, kterou server označí za skutečnou.
Házení kostkami, posuzování legality a posunutí byť jediné mince na tom seznamu nejsou. Nic, co rozhoduje o výsledku, nevzniká na zařízení.
Co se stane, když zahraju tah?
Ty zahraješ.. Tvá aplikace pošle záměr: tenhle kámen, tyhle body. Nic na tvém zařízení nemění skutečnou desku.
Server ho přehraje.. Naše pravidlové jádro pustí tah proti desce serveru a kostkám serveru. Pokud je legální, partie postoupí. Pokud ne, je odmítnut u zdroje, ať ho poslala jakákoli aplikace.
Obě strany dostanou tutéž pravdu.. Nová pozice jde oběma hráčům. Pokud ti spadne spojení, lhůta na opětovné připojení v časomíře ti podrží místo a vrátíš se k desce takové, jaká doopravdy je, ne jaké si ji naposledy pamatoval tvůj telefon.
Sázky se řídí stejným pravidlem. Když začne zápas se vkladem, server oba vklady zadrží. Bank žije v jediné knize, na serveru, a tam se po konci partie vyrovná. Žádný klient nikdy není dotázán, kolik si myslí, že vyhrál. Mince a drahokamy jsou virtuální, bez hodnoty ve skutečném světě a bez výplaty, a tu knihu přesto vedeme, jako by v ní leželo něco cenného, protože ano: tvoje důvěra ve skóre.
Co brání podvádět samotnému serveru?
To je ta správná otázka a většina her doufá, že ji nikdy nepoložíš. Server, který hází kostkami potají, by mohl házet vlídně tomu, komu straní, a ty bys to nikdy neviděl. Každý hod vypadá věrohodně. Takové kostky jsou.
Tak jsme si tu moc sami sobě vzali. Než partie začne, server vygeneruje tajné semínko a zveřejní na něj závazek SHA-256. Každý hod se pak z toho semínka odvodí pomocí HMAC-SHA256, jeden po druhém, popořadě. Když partie skončí, server semínko odhalí. Kdokoli si může ověřit, že semínko sedí se závazkem učiněným před prvním hodem a že z něj vyplývá každý hod partie. V kryptografickém smyslu byly tvé kostky dané dřív, než se kterýkoli hráč dotkl kamene. Nemohli bychom ohnout dvanáctý hod, aniž bychom porušili slib zveřejněný u hodu nultého.
V ničem z toho nemusíš věřit našemu slovu. Ověřovač na orion.arthea.ai/verify přepočítá celý řetěz ve tvém prohlížeči, pomocí Web Crypto, na tvém stroji, z veřejného záznamu partie. Bez účtu, bez instalace. Dveře na orion.arthea.ai/go nesou odkazy na App Store a Google Play a vždy ukazují, co je dostupné právě teď.