Multiplayer mód: Hogy is van ez ?
Hálózati szakértőnk, Zedas volt olyan rendes, hogy írt egy rövid, de hasznos cikket a multiplayer játékok működéseinek elveiről. Lehet kicsit off a téma, de ennek mégis csak köze van a mostani és a jövőbeli Battle-nethez. Mellesleg ahogy a mondás is tartja: A jó pap holtig tanul! 😉
Pár kifejezés
- Szerver – Olyan számítógép vagy számítógép csoport, amelyik képes a kliensektől adatcsomagokat fogadni, illetve válaszolni ezekre
- Kliens – Olyan számítógép, amelyik képes egy szerverrel kapcsolatot teremteni
- TCP/IP – Jelenleg legelterjedtebb adatcsomag továbbítási protokoll, az interneten ilyen formában mozognak az adatcsomagok
- IP cím – Vagy fix cím, ami a világon azonosít egy számítógépet, vagy egy alhálózaton található cím, amit valaki kioszt az alhálón lévő gépeknek. Alhálót épít például a routeretek otthon. Azért van szükség alhálózatokra, mert a jelenleg használt IP címek száma messze nem elegendõ az összes számítógép azonosításához.
Általános LAN multi felépítés
Ha két ember szeretne egymással játszani, akkor ha egy lokális hálózaton vannak (egy router mögött) a gépek simán megtalálhatják egymást: egyszerűen végignézik a lokális címtartományt és ha a másik oldalon is egy a játékot futtató gép figyel, összekapcsolódnak és TCP/IP csomagokkal lekommunikálják egymással a játék változásait. Ez elegendő ahhoz hogy két ember játsszon egymással.
Ha már több mint két játékos van, a helyzet bonyolódik, mivel ilyenkor már kell egy kitűntetett gép, aki szétosztja a csomagokat a kliensek között. Ha nem így volna, a játékosok könnyen elszinkronizálódhatnának, lehetne olyan hogy az egyik gépen meghal egy egység, a másikon meg nem. Ez teljesen szétzilálná a játékot. Ezért úgy van, hogy a kliensek csak a szerverrel tartanak kapcsolatot, egymással nem. Bizonyos időközönként minden kliens felküldi a játékos által végrehajtott módosításokat (egységeknek kiadott parancsok) a szervernek, az pedig az összegyűjtött változtatásokat egyben leküldi az összes kliensnek. Így mindenhol mindig ugyanaz történik. Azt, hogy milyen gyakran legyenek így összegyűjtve a parancsok a latencyvel állítják be a játékosok. Ezért van az, hogy ha beállítod, hogy high-latency, akkor – mivel a szinkronizálás ritkán következik be – lassabban reagálnak az egységek. Az ICCUP-on a lan latency azt jelenti, hogy a csomagszinkronizálás gyorsabbra van állítva mint amit amúgy a bnet lehetővé tenne.
Általános internet multi felépítés
Eddig tehát megvan az, hogy lanon hogy lehet játszani, igen ám, de az interneten hogy találnák meg egymást a játékosok? Az összes internet címet végig kellene nézni, hogy játékostársakat találjunk! Ezért találta ki a Blizzard a bnetet, ez egy állandó IP címen figyel, amit az összes kliens ismer (illetve általában földrészenként egy ilyen fix címen lévő szerver(park) figyel, ezért is választjuk mi az Europe-ot). Ide csatlakozik fel a kliensünk, és itt kereshetünk magunknak játékot. Amikor a játék elindul, akkor megkapjuk a többi játékos IP címét a világban, és innentől már csak velük kommunikálunk, a battle-net nem kell a játékhoz. Ezért is van az, hogy menet közben néha kiírja a program, hogy battle net connection lost, de ennek ellenére tudjuk folytatni a játékot. Amihez viszont kell a battle.net kapcsolat az az, hogy a játék végén, mindegyik játékos kliense lejelenti a szervernek, hogy ki nyert és veszített, és ha mindenki ugyanazt jelentette le, akkor a kliens pontot ad, stb. Ezzel persze lehet csalni is, de ha valaki állandóan a többiekkel ellentmondó jelentést ad le, azt a rendszer simán ki is tudja zárni (moderátor, stb.).
Maphack
A maphack ugye az, hogy láthatjuk egy segédprogrammal a többi játékos egységeit, avagy az egész térképet. Itt felmerülhet a kérdés, hogy miért van egyáltalán a többi játékos gépén meg az, hogy az én egységeim hol vannak, még ha éppen az ő szemszögükből nem is láthatóak. Nos ennek az az oka, hogy a játék csak a játékosok által kiadott parancsokat szinkronizálja, ami elég kis adatmennyiség. Ilyenkor a mi nevünkben a többiek gépén egy computer player ül, aki pont azt csinálja a saját egységeivel, mint amit mi csinálunk a saját gépünkön. Ilyenkor persze mindenki gépén minden egység minden adata megvan. A maphack csak úgy lenne elkerülhető, ha a szerveren is futna egy példány a játékból (a játékosok computer player megfelelőivel), és a szerver minden szinkronizáláskor minden egység, minden adatát leküldené mindenkinek, de csak azokat, amiket az adott játékos láthat. Belátható, hogy egyrészt ez szerveroldalról, és hálózati oldalról eszement erőforrásokat emésztene fel, arról nem is beszélve, hogy az ilyen jellegű hálózati kommunikáció szinkronizálása és hibamentes megírása is gyakorlatilag lehetetlen. Én el tudnák képzelni blizzard részéről olyat, hogy fizetős szervereken ilyen szolgáltatást nyújtanak max. 1v1-ekhez, de enyhén szólva is utópiának tartom. Más megoldást nem tudok elképzelni.
LAN játék
A cikkeknél ment az anyázás, hogy a LAN nem fog menni, nos erre azt tudom mondani, hogy a jelenlegi RTS-ek hálózati kialakításából adódik, hogy akik egy LAN-on játszanak, azok automatikusan LAN sebességgel lesznek összekötve, hiszen nem az számít hogy a szervert milyen sebességgel érik el, hanem az, hogy egymást. Ez persze nem igaz akkor, ha van a játékban egy olyan játékos is, aki nincs a LAN-on. Ekkor a szinkronizálási sebességet az övéhez kell igazítani, ami megint csak lassú, de a felháborodás a LAN-os játékok hiánya miatt volt. Szerintem ha a jelenlegi architektúra marad (és nem igazán van működőképes alternatíva, hiszen az összes játék így működik), akkor a szervereket csak játék keresésre és autentikációra fogják használni, a tényleges játék a kliensek között a LAN-on fog menni, az internet kizárásával (max. eredmény lejelentés lesz). Most itt belemehetnék a MAC címekkel való indoklásba, de inkább kihagyom.
Comments (11)
Zedas
| #
Köszi a csicsázást!
Reply
nop
| #
We loves you Zedas!
Amúgy nem értem minek ennyit szenvedni ezzel a LAN-dologgal, sokan eddig is tudták, hogy megy, akik meg nem akarták megérteni eddig, hogy megy…nos remélem most megteszik.
De mindenképpen respect, amúgy még elég sok cikkel tartozol Zed, szóval húzz bele!:P
Reply
Shadow Wakos
| #
Remélem ezek után felfogja az a sok ember aki pattog a lan miatt, hogy hogy is működik ez. Aki szerint még mindig rossz, hogy meg kell venni a játékot az ássa el magát 🙂
Ja és grat Zed fasza cikk
Reply
butcher
| #
Ja ez így tiszta sor
Reply
84Noname
| #
Jaja…finom cikk, köszi. Kellett, hogy valaki tisztába rakja már a dolgokat…
Reply
Tauren
| #
Egyébként egy pár dolgot én se nagyon értettem, ami ezen a cikken végre megtudtam.
Akkor nekem az egyik játéknál nagyon gagyi lehetett a LAN, mert amikor a tesómmal játszottam azt vettük észre, miközben én nagyban bontottam le az épületeit, nála az volt, hogy megölte az összes egységemet. Kicsit furcsa volt, de nagyon röhögtünk az egészen. Próbáltam állítgatni ezt-azt, de sztem maga a játék volt rossz. Más játék rendesen ment, de ennél nagyon furcsa volt, miért csinálja ezt. XD
Egy dolgot nem értek, nekem ez a Maphack nagyon bonyolult. Azt tudom, hogy vele látod más egységeit, vagy az egész térképet, azt is hogy ugyanúgy mennek az adatok, mint ahogy eddig, csak akinek van a Maphack-je, azt az adatforgalmat tudja arra használni, hogy láthassa azokat a parancsokat, egység elmozdulásokat, mely a másik player csinált.
De mi ez a computer player cucc? Ezt nem nagyon értem. :S
Reply
Glad-Rags
| #
úgy értette, hogy az ellenfél játékosa a te gépeden nem irányít semmit, azaz ami parancsot ő kiad a saját gépén, az átmegy a szerveren, eljut a te gépedhez, és a kapott parancsokat végre hajtja a te géped, azaz a „computer player” az ellenséged oldalán 🙂 Úgyis mondhatjuk hogy a számítógéped utánozza hús-vér ellenfeled.
Reply
Tauren
| #
Jaaaa, hogy ennyi lenne az egész, hogy gép utánozza az ellenfeled? Abban hol van a csalás? XD
Vagy ezzel a funkcióval elhiteti a gépeddel, hogy ő játszik, így tudod látni az egységeit?
Vagy ez a két dolog, teljesen külön áll egymástól?
Reply
Zedas
| #
#8:
A csalás abban van, hogy replay-nél van egy változó a memóriában valahol, ami azt mondja, hogy ki kell kapcsolni a fog of war-t, tehát mindent látni fogsz a térképen (ezt te állítgatod a felületről, ott a térképnél van egy kis ikon). Namost ez nyilván nem elérhető játék közben, viszont a hacker programok megkeresik ezt a címet a memóriában, és átállítják úgyhogy mindent fogsz látni. Gyakorlatilag ez kivédhetetlen, mivel minden játékos gépén ott van az összes egység összes adata, tehát így vagy úgy meg lehet oldani hogy látsszanak. A jó megoldás az lenne, ha csak azok az egység adatok lennének meg a gépeden, amiket tényleg láthatsz, de ez meg a leírtak miatt borzasztó bonyolult lenne.
Reply
_BlackGrim
| #
Ezekre az esetekre találták ki már sc1-be is a chaos launcherben és iccup launcherben az anti-hack-et. Vagyis inkább csak felismeri a hack-et nem blokkolja. De mikor észleli kiirja és ha még időben vagy ki tudsz lépni vagy gyorsan 1 screenshot és beküldöd adminnak ;).
Reply
Shadow Wakos
| #
De ahoz az Iccup-on kell játszanod…ráadásul tapasztaaltból mondom, hogyha mindenkinek benn van az AH tehát a „lanon” működik akkor az iccup kibassza azt aki hackel.(kidiscelteti majd kiírja a játéksoknak, hogy az illető hackelt) [TAPASZTALAT] mármint nem én hackeltem hanem láttam h ez volt
Reply