Princípy sieťového programovania v hrách pre viac hráčov

Základy fungovania online hier pre viac hráčov

Online hry pre viacerých hráčov spájajú hráčov prostredníctvom rozsiahlej siete (bežným príkladom je internet). Na rozdiel od lokálneho multiplayeru nie sú hráči hrajúci online multiplayer obmedzení na rovnakú lokálnu sieť. To umožňuje hráčom komunikovať s ostatnými z oveľa väčšej vzdialenosti. Hranie online multiplayeru ponúka mnohe výhody, ale prináša aj svoje vlastné jedinečné výzvy. Hráči označujú latenciu pojmom "ping" podľa nástroja, ktorý meria oneskorenie sieťovej komunikácie (pomocou paketov ICMP). Hráč na DSL pripojení s pingom 50 ms môže reagovať rýchlejšie ako používateľ modemu s priemernou latenciou 350 ms. Medzi ďalšie problémy patrí strata paketov a "choke", ktoré môžu hráčovi zabrániť "zaregistrovať" svoje akcie na serveri. V strieľačkách z pohľadu prvej osoby sa tento problém objavuje, keď guľky zasiahnu nepriateľa bez poškodenia. Pripojenie hráča nie je jediným faktorom; niektoré servery sú pomalšie ako iné.

Typy sieťových riešení:

Architektúra server-klient: Dedikovaný server

Dedikované servery simulujú herné svety bez podpory priameho vstupu alebo výstupu, okrem toho, ktorý je potrebný na ich správu. Hráči sa musia pripojiť k serveru pomocou samostatných klientskych programov, aby mohli vidieť hru a komunikovať s ňou.
Hlavnou výhodou dedikovaných serverov je ich vhodnosť na hosťovanie v profesionálnych dátových centrách so všetkými z toho vyplývajúcimi výhodami spoľahlivosti a výkonu. Vzdialený hosting tiež eliminuje výhodu nízkej latencie, ktorú by inak mal každý hráč, ktorý hostuje server a pripája sa k nemu z toho istého počítača alebo miestnej siete
Prevádzka dedikovaných serverov však stojí peniaze. Náklady niekedy hradia vývojári hry a niekedy rôzne skupiny, ale v oboch prípadoch je verejnosť odkázaná na tretie strany, ktoré poskytujú servery na pripojenie. Z tohto dôvodu väčšina hier, ktoré využívajú dedikované servery, poskytuje aj podporu Listen Serverov. Hráči týchto hier často hostujú servery pre verejnosť a svoje skupiny, a to buď tak, že hostujú inštanciu servera z vlastného hardvéru, alebo si ho prenajmú od poskytovateľa hostingu herných serverov.

Architektúra Peer-To-Peer

V modeli klient/server, klienti prijímajú spracované údaje zo servera a bez väčšieho premýšľania ich zobrazujú. V alternatívnom modeli "peer-to-peer" server neexistuje: každý "peer" namiesto toho prijíma nespracované input streamy každého iného hráča a sám určuje, ako ich vyhodnotí.
Peer-to-peer sa vo všeobecnosti považuje za zastaraný pre akčné hry, ale v žánri stratégií v reálnom čase je stále bežný vďaka vhodnosti pre hry s veľkým počtom tokenov/objektov a malým počtom hráčov. Namiesto neustáleho prenášania pozícií 1000 jednotiek môže hra jednorazovo preniesť informáciu o tom, že je vybraných 1000 jednotiek a že hráč, ktorý im velí, práve vydal príkaz na presun. Peer-to-peer má však mnoho nevýhod

Snow
Forest

Tickrate

Rýchlosť, akou herný server vykonáva kroky simulácie, sa bežne označuje ako "tickrate". "Tik" je číslo priradené ku každému kroku simulácie, ktoré sa vysiela klientom, aby im pomohlo synchronizovať sa so serverom.
Jednoducho povedané, je to údaj, ako často počítač používateľa a server spolu komunikujú.
Existujú tri dôvody na obmedzenie frekvencie simulačných krokov servera na vopred definovaný počet tikov: šetrenie šírky pásma servera a klientov, šetrenie času procesora servera a umožnenie klientom, aby si boli istí, koľko času uplynulo medzi jednotlivými tikmi. Posledný bod je dôležitý pre internetové hry, pretože sieťové aktualizácie zo servera môžu prichádzať v rôznych intervaloch alebo dokonca v nesprávnom poradí.

Snow
Forest

Lag - Opozdenie

Jedným z dôsledkov lagu je rozdiel, ktorý si používateľ všimne, keď sa inštrukcie, ktoré zadáva do počítača premietajú v hernom svete so značným opozdením. Čo však toto opozdenie spôsobuje? Príčin je viacero. Sú to napríklad:

Rubberbanding

V niektorých hrách sa stáva, že hráč vidí, ako sa jeho postava posúva dopredu, avšak vzápätí sa presnie o pár jednotiek vzdialenosti dozadu, skade prišiel. Tomuto sa hovorí rubberbanding, teda naťahovanie sa na gumičke (keďže akoby ňou bol hráč vždy ťahaný naspäť). Dochádza pri nezhode polohy hráča na jeho počítači s jeho polohou, ktorú registruje herný server. Keď server príde na to, že tieto hodnoty sú odlišné, posiela hráča na poslednú pozíciu, ktorú má v pamäti. Efekty rubberbandingu sú o to viac viditeľnejšie, ak má hráč zlé pripojenie na internet, resp. dlhú odozvu od servera.

UDP vs. TCP na posielanie správ

Táto otázka nemá jednodznačnú odpoveď, keďže oba spôsoby majú svoje pre a proti. Avšak väčšinou sa na prenos paketov pri hraní hier používa UDP. Tvorcom hier vyhovuje "send and forget", keďže pri hraní hier sa spolu stretáva množstvo ľudí s odlišne silnými počítačmi a kvalitným internetovým pripojením. Taktiež zabudovaný "Three Way Handshake" je paradoxne nevýhodou pre TCP, pretože potvrdzovanie a čakanie na pakety môže byť ďalším zdrojom LAGu pre hráča.

Technológie umožňujúce hranie
Masívnych multiplayerových hier (MMO)

  1. Najprv sa prechádza cez bránu Firewall, ktorá je určená na monitorovanie a kontrolu prichádzajúcej a odchádzajúcej používateľovej prevádzky na základe vopred stanovených bezpečnostných pravidiel. Chráni tak cloudové dátové centrum pred vonkajšími hrozbami a zabraňuje nelegálnemu prístupu. Prevádzka potom prechádza cez "Load balancer", ktorý určuje, do kde v Cloude sa hráč bude nachádzať. To sa robí s cieľom rovnomerne rozložiť záťaž medzi viacerými servermi v Cloude, aby sa zabezpečil konzistentný herný výkon pre všetkých používateľov.
  2. Po pripojení sa hráči prihlásia do svojho účtu prostredníctvom prihlasovacieho servera, kde majú prístup k svojmu účtu, uloženému postupu v hre a štatistikám hráča. Nasleduje Query Manager, ktorý stojí medzi hernými servermi a základnou databázou ako vyrovnávacia pamäť a dátová cache, aby sa zabezpečil rovnomerný výkon hry pre všetkých hráčov. Herné servery sú miestom, kde sa hra hraje, a zvyčajne majú najväčší výpočtový výkon. Na vytvorenie herného prostredia bude herný server pristupovať k nemeniacim sa údajom o svete zo statického webového servera a k údajom v reálnom čase (myslí sa tým činnosti, ktoré sa dejú v hre) z dynamického webového servera. Tento typ serverov bude využívať kombináciu rýchlych dát a veľkých zdrojov na ukladanie dát.
  3. Databázový server MMO je rozhodujúci pre úspech hry a používateľský zážitok. Zvyčajne obsahuje rôzne databázy, v ktorých sa uchovávajú všetky údaje od prihlasovacích údajov hráča, koristi(loot), zdravia až po jeho najďalekejší pokrok v hre. Takisto bude poskytovať údaje hernému serveru, ktorý bude určovať výsledky bitiek a poradie. Pri týchto masívnych nasadeniach škálovanej databázovej infraštruktúry je rozhodujúci výkon aj redundancia.
  4. Poslednou časťou je platobný server, kde zákazníci platia za všetko od počiatočného prístupu do hry až po nákupy v hre. Zvyčajne je chránený sekundárnym firewallovým serverom na zvýšenie ochrany. Tieto platobné servery sú zvyčajne viacnásobné servery využívajúce úložiská SSD na báze NVMe a SAS, ktoré poskytujú najlepší transakčný výkon v kombinácii s vynikajúcou dostupnosťou. Keďže sa tu spracováva tok príjmov spoločnosti, stratené transakcie sa netolerujú.

Typy podvádzania v hrách pre viac hráčov:

  • Použitie pomocného softwéru
  • Vyvolanie LAGov
  • Look Ahead
  • World Hacking


Použitie pomocného softwéru

Aimbot/Autoaim

Aimbot, alebo Autoaim je typ bota počítačovej hry, ktorý sa najčastejšie používa v strieľačkách z pohľadu prvej osoby a poskytuje hráčovi rôzne úrovne automatického zamerávania cieľov a úpravy mierenia. Niekedy sa používajú spolu s triggerbotom, ktorý automaticky strieľa, keď sa protivník objaví v zornom poli alebo v zameriavacom kríži hráča. Aimbotting sa spolieha na to, že klientsky počítač každého hráča dostáva informácie o všetkých ostatných hráčoch, či už sú z pozície hráča viditeľní, alebo nie. Zameranie je otázkou určenia polohy akéhokoľvek súpera vzhľadom na polohu hráča a namierenia zbrane hráča na cieľ. Toto zameriavanie funguje bez ohľadu na to, či je súper za múrmi alebo príliš ďaleko na to, aby ho bolo možné priamo vidieť. Niektoré servery umožňujú neaktívnym hráčom sledovať hru z pohľadu aktívnych hráčov. Často je možné aj zaznamenávanie a nahrávanie hráčových akcií v hre. Ak by nejaký hráč používal aimbota, pre diváka by sa ukázali jeho pohyby ako neprirodzene presné sledovanie pozície. Niektoré aimboty a triggerboty sa rôznymi metódami pokúšajú skryť pred divákmi, napríklad odďaľovaním streľby, aby sa skrylo, že nestrieľalo v okamihu, kedy je súper v zameriavači podvodníka. Niektoré programy Triggerbot sa dajú jednoducho zapínať a vypínať pomocou myši alebo klávesnice. Ako to funguje ? Niekde v pamäti pridelenej bežiacej hre sú informácie o polohe a vlastnostiach (napríklad body života) ostatných hráčov. Hra tieto informácie potrebuje, aby vedela správne vyrenderovať model protivníka na správnych koordinátoch X, Y a Z a prideliť im napr. správnu výzbroj, či body života. Aimbot skenuje a číta túto alokovanú pamäť, čím získava prístup ku dvom pozíciám - k pozícii hráča a nepriateľov. Odčítaním týchto dvoch pozícií (ako vektorov) sa získa vektor medzi nimi a odtiaľ sa jednoducho vypočíta uhol od vektora aktuálneho pohľadu hráča k vektoru požadovaného uhla. Typickým spôsobom, ako môže pro program pristupovať do pamäte iných programov, je injekciou DLL. Poslaním vstupu priamo do hry (ako inputu hráča) a jemným doladením pomocou niektorých konštánt ju môžete prinútiť, aby mierila rýhlo automaticky. Najťažšou časťou tohto procesu je odhaliť, kde sú pozície uložené v pamäti a prispôsobiť ich akejkoľvek dynamickej dátovej štruktúre, ktorá presúva hráčov.

Typy Aimbotov:
Tracking Aimbot:

Softwér, ktorý beží na počítači spoločne s hrou. Hľadá špecifické farby, pohyby, alebo modely a keď ich nájde, hneď na nich zameria zbraň podvodníkal.

Injection Aimbot:

Softwér, ktorý vloží svoj kód do hry, ktorá beží a zmení spôsob, akým je hraná a pomýli hru, aby odhalila podvodníkovi aj informácie, ku ktorým by nemal mať prístup, teda napr. pozíciu iného hráča za stenou.

LAG Switch

Prepínač oneskorenia (LAG Switch) je zariadenie, ktoré dokáže na určitý čas manipulovať tok internetu do, alebo z hernej konzoly, či počítača. Podvodník zapne niektorý z rôznych typov prepínačov a prestane na server odosielať dáta o svojej polohe, pričom však bude príjmať dáta zo servera o polohe ostatných hráčov. Stane sa tak na chvíľu nesmrteľný, keďže hra príde o údaje o jeho polohe. Podvodník sa môže niekde posunúť, zamerať svoju zbraň na protihráča, vypne prepínač a v závislosti od hry sa môže stať, že jeho protihráčovi sa úplne stratí z obrazovky, keďže ho hra premiestni na jeho updatované koordináty. Podvodník ma teda výhodu, keďže protihráč nevie kde sa práve nachádza a teda prakticky útočí zo zálohy, aj keď pred chvíľou mal navrch protihráč.

Typy LAG Switchov:
Hardvérový Lag Switch:

Vyrábajú sa pridaním fyzického vypínača do stredu ethernetového kábla. Na aktiváciu a deaktiváciu internetu internetu sa prepínajú ručne.

Fyzické odpojenie zo siete:

Používateľ tak ručne priškrtí svoju domácu sieť tým, že ručne odpojí ethernetový kábel od konzoly alebo odpojí iné siete, napríklad Wi-Fi.

Softvérový Lag Switch:

Existuje rôzny softvér, ktorý zahltí vašu domácu sieť do takej miery, že spotrebuje celú šírku pásma. Oline hra má potom k dispozícii len malú alebo žiadnu šírku pásma na updatovanie pohybu používateľa.

Look-ahead

Look-ahead je spôsob podvádzania v rámci architektúry hier pre viacerých hráčov typu peer-to-peer, pri ktorom podvádzajúci klient získava nečestnú výhodu tým, že odkladá svoje akcie, aby videl, čo robia ostatní hráči pred oznámením svojej vlastnej akcie. Klient môže podvádzať pomocou tejto metódy tak, že sa tvári, akoby trpel vysokou latenciou; odchádzajúci paket je sfalšovaný pripojením časovej pečiatky, ktorá predchádza skutočnému okamihu odoslania paketu, čím oklame ostatných klientov, aby si mysleli, že akcia bola odoslaná v správnom čase, ale prišla s oneskorením.

World Hacking

World-hacking je metóda alebo program tretej strany, ktorý umožňuje používateľovi zneužiť chyby a zobraziť viac z levelu, než zamýšľal vývojár. Bežným aspektom strategických hier v reálnom čase je čiastočné obmedzenie alebo úplná neschopnosť hráča vidieť mimo rozsahu viditeľnosti jednotlivých herných objektov, ktoré sú v jeho vlastníctve (typicky jednotky a štruktúry); tento koncept je riadený mechanizmom známym ako vojnová hmla. World-hacking zvyčajne umožňuje používateľovi tento mechanizmus obísť, a to buď jeho úplným odstránením a/alebo vykresľovaním objektov cez hmlu, ktoré by za normálnych okolností neboli viditeľné. V režimoch pre viacerých hráčov to umožňuje získať výraznú výhodu proti ostatným hráčom, ktorí podliehajú zamýšľaným nastaveniam. World-hacking môže tiež umožniť hráčovi vidieť cez pevné alebo nepriehľadné objekty a/alebo manipulovať s textúrami, či ich odstraňovať, aby dopredu vedel, kedy sa súper chystá priblížiť do jeho výhľadu. To sa dá dosiahnuť tak, že sa textúry stien stanú priehľadnými alebo sa upravia herné mapy tak, aby sa do inak pevných stien vložili polygonálne otvory. Tento variant je všeobecne známy ako "wallhack", pretože v podstate umožňuje hráčovi vidieť nepriateľov cez steny. World-hacking sa spolieha na to, že server FPS zvyčajne posiela nespracované informácie o polohe všetkých hráčov v hre a necháva na 3D vykresľovači klienta, aby skryl protivníkov za múrmi, v rastlinnom poraste alebo v tmavých tieňoch. Ak by sa vykresľovanie hernej mapy dalo úplne vypnúť, všetci hráči by sa mohli pohybovať v zdanlivo prázdnom priestore. Úplné skrytie mapy neposkytuje podvodníkom žiadnu výhodu, pretože by sa nemohli pohybovať po neviditeľných cestách a prekážkach na mape. Ak sa však sprehľadnia alebo odstránia len niektoré povrchy, zostane len dostatočný obrys sveta, aby sa v ňom podvodník mohol stále ľahko pohybovať.

Rôzne spôsoby prevencie podvádzania - Anticheat

VAC Systém

Valve Anti-Cheat(VAC) je anti-cheatový program vydaný spoločnosťou Valve, ako komponent ich platformy Steam, spolu s online hrou Counter-Strike v roku 2002. Tento program detekuje podvádzajúcich hráčov a udeľuje im bany (znemožňuje hrať) na dobu od pár hodín, až permanentne. Spoločnosť Valve o tomto softvéri hovorí len zriedka, pretože môže pomôcť podvodníkom pri písaní nového kódu alebo sociálnom inžinierstve Softvér posiela klientovi výzvy na počítač; ak nedostane príslušnú odpoveď, je označený ako možné porušenie. Pri skenovaní pamäte a procesov počítača používa na odhalenie možných podvodov funkciu Signature Scanning. Vždy, keď sa zistí anomália, vytvorí sa správa o incidente, ktorá sa porovná s databázou zakázaných aplikácií a/alebo sa analyzuje inžiniermi spoločnosti Valve. Inžinieri môžu skontrolovať kód a spustiť ho na vlastných kópiách hry. Ak sa kód potvrdí ako nový cheat, pridá sa do databázy cheatovacích kódov Spoločnosť Valve tiež prijíma od hráčov zasielanie cheatovacích programov a cheatovacích webových stránok prostredníctvom e-mailu. Hráči môžu tiež nahlasovať hráčov, ktorých podozrievajú z podvádzania, prostredníctvom svojho profilu v komunite služby Steam, hoci len na základe týchto hlásení nie sú hráči zakázaní Ak sa zistí podvod, účet hráča v službe Steam sa okamžite označí ako podvodný, ale hráč nedostane žiadnu informáciu o odhalení. Až s oneskorením "niekoľkých dní alebo dokonca týždňov" je účet natrvalo zakázaný na serveroch "VAC Secure" pre danú hru, prípadne spolu s ďalšími hrami, ktoré používajú rovnaký engine.

FaceIT Anti-Cheat

Tento Anti-Cheat, je jeden z najpokročilejších v hernom priemysle. Využíva sa hlavne na kompetetívne hranie hry Counter-Strike: Global Offensive a prichádza vo forme klienta, ktorý beží nad hrou. Toto riešenie pozostáva z dvoch častí. Jedna je program na počítači používateľa, tá druhá je program bežiaci na servere FaceIT-u. Počas hry, klient neustále zbiera veľa rôznorodých údajov, ktoré potom kontroluje s údajmi na serveroch FaceIT-u, kde sa zároveň hostuje aj hra. Ak sa zistí nejaká deviácia medzi údajmi z hry bežiacej na klientskom počítači a hry bežiacej na serveri, systém v reálnom čase detekuje podvod.