Meta

Výzva Synchronicity: Řešení síťové hry v reálném čase pomocí WebRTC P2P

Ve vysoce konkurenčním světě retro her a moderních arkádových titulů je “zpoždění” víc než jen nepříjemnost – je to faktor, který může rozhodnout o výsledku hry. Když hrajete online rychlou plošinovku nebo bojovku, kde záleží na bleskových reflexech, i zpoždění 100 ms může znamenat rozdíl mezi skokem v perfektním načasování a frustrujícím “Game Over”.”

Zatímco mnoho moderních bojových her využívá technologii “Rollback” k zamaskování latence, v Rec0m88, zaměřili jsme se na jiný, přímější přístup: Nativní synchronizace WebRTC typu peer-to-peer (P2P). Tím, že jsme se vyhnuli modelu centralizovaného serveru a využili nejmodernější datové kanály prohlížeče, jsme vytvořili synchronizované prostředí “Lock-Step”, které klade důraz na čistou rychlost a integritu vstupních dat.


Architektura: Proč jsou servery nepřítelem rychlosti

Většina online her využívá model “klient-server”. Vaše zadání se odešle na server, ten jej zpracuje a výsledek pak odešle zpět vám i vašemu soupeři. Zatímco je to skvělé pro battle royale hry se 100 hráči, pro retro hry typu 1v1 je to katastrofální. Každá “zastávka” na serveru zvyšuje fyzickou vzdálenost a prodlužuje dobu zpracování (latenci).

Dne Rec0m88, jakmile se připojíte do lobby, signalizační server ustoupí do pozadí. Pomocí Datové kanály WebRTC, váš prohlížeč naváže přímý “tunel” s prohlížečem vašeho protivníka.

  • Žádní prostředníci: Data se po internetu přenášejí po co nejkratší fyzické trase.
  • Snížení kolísání: Bez centrálního serveru, který by musel zvládat tisíce připojení, zůstává “doručování paketů” stabilní, což je klíčové pro plynulý rytmus herních smyček retro her.

SCTP vs. TCP: Upřednostnění rychlosti před “dokonalostí”

Běžný webový provoz (například načítání webové stránky) využívá TCP. Protokol TCP je posedlý dokonalostí; pokud dojde ke ztrátě paketu, zastaví veškerou činnost a požádá o jeho opakované odeslání. Ve hře nás nezajímá paket, který byl odeslán před 200 ms – zajímá nás pouze to, co se právě děje nyní.

Náš motor využívá SCTP (Stream Control Transmission Protocol) vrstva v rámci WebRTC, nakonfigurovaná pro Neuspořádané a nespolehlivé doručení.

  1. Nízké režijní náklady: Odstraňujeme z tradičních webových protokolů nadbytečné prvky, jako je “navazování spojení” a “kontrola chyb”.
  2. Prevence blokování na začátku fronty: Pokud dojde ke zpoždění jednoho příchozího paketu v přetíženém směrovači, nezpomalí to následujících pět paketů. Emulátor jednoduše zpracovává nejnovější “stav světa”, který obdrží, čímž zajišťuje plynulý průběh akce.

Metoda “synchronního lock-stepu”

Jelikož nepoužíváme “Rollback” (který předpovídá budoucnost), využíváme vysoce optimalizovaný Synchronní režim „lock-step“ model. V tomto uspořádání se emulátory na obou koncích musí před pokračováním dohodnout na čísle rámce.

Aby se to i přes fyzikální zákony týkající se latence jevilo jako “okamžité”, implementuje Rec0m88 Nastavení vstupního vyrovnávacího paměti:

  • Dynamické vyrovnávací paměti pro jitter: Náš engine v reálném čase měří “dobu přenosu tam a zpět” (RTT) mezi vámi a vaším přítelem. Pokud máte stabilní připojení (např. 20 ms), engine automaticky zmenší vstupní vyrovnávací paměť téměř na nulu.
  • Načasování snímků WASM: Protože naše emulátorová jádra běží v WebAssembly, můžeme provádění snímku na několik mikrosekund pozastavit, zatímco čekáme na paket P2P, a poté provádění “přeskočit vpřed”, abychom zůstali synchronizovaní s audio hodinami.

Zabezpečení a překonávání NAT

Častá otázka v souvislosti s hraním her typu P2P zní: “Je to bezpečné?” Dříve znamenalo P2P, že jste svou IP adresu odhalili neznámému člověku. Díky technologii WebRTC na Rec0m88 je připojení chráněno pomocí DTLS (Datagram Transport Layer Security). Prohlížeče si vyměňují zašifrované “otisky”, čímž je zajištěno, že i když komunikujete přímo s jiným hráčem, data zůstávají zašifrovaná a váš lokální systém zůstává v izolovaném prostředí.

Kromě toho řešíme problém “přesměrování portů” pomocí ICE (Interactive Connectivity Establishment). Díky využití serverů STUN/TURN k “prokousání” se přes brány firewall zajišťujeme, že se dva hráči mohou spojit, i když jsou připojeni přes přísně nastavené domácí routery nebo školní sítě – a to vše bez nutnosti ručního otevírání jediného portu.


Proč je WebRTC budoucností moderních heren

Díky tomu, že Rec0m88 upřednostňuje technologii WebRTC P2P před tradičními metodami založenými na serverech či metodami s vrácením zpět, nabízí “čistý” zážitek z emulace. Ne“hádáme”, co hráč udělal; zajišťujeme, aby oba hráči viděli přesně stejný snímek, přesně ve stejný okamžik, a to s co nejnižší fyzickou latencí.

Je to zážitek, který se nejvíce podobá tomu, jako byste seděli na stejné pohovce s druhým ovladačem, a to vše díky modernímu webovému stacku.


Technická poznámka: Optimální hra Pro co nejlepší zážitek při využívání našich datových kanálů WebRTC doporučujeme kabelové připojení přes Ethernet. Ačkoli je naše technologie P2P navržena tak, aby zvládala kolísání signálu v síti Wi-Fi, pro dokonalou přesnost na úrovni jednotlivých snímků je kabelové připojení stále nejlepší volbou.

Podobné příspěvky

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *