Avatar uživatele
CTTON

Jak funguje virtuální svět?

Jak vůbec fungují PC hry, je rozdíl mezi tím zda je to hra která běží jen na mém PC nebo běží přímo na serveru? Když mám nainstalovanou hru na PC a hraju ji tak se zpracovává vše, nebo jen ta Daná oblast kde jsem a co dělám?

A pokud mám třeba vlastní server na team fortrees 2 a sem na něm sám, tak server zpracovává celou mapu nebo jen danou oblast kde momentálně jsem:?:
Tohle mě vždycky zajímalo, jestli se to vlastně tolik liší od reality v této oblasti

Zajímavá 1Pro koho je otázka zajímavá? aliendrone před 1715 dny Sledovat Nahlásit



Odpovědi
Avatar uživatele
aliendrone

Především musíš rozdělit samotný soft na serverovou a klientskou část. Serverová část ať již pracuje na vzdáleném serveru či lokálním (u tebe) se stará o svoji část problému – např. klientské části softu vyhodnocuje a zasílá data o poloze a činnosti protihráče/ů, počítá statistiky (zdraví, munice aj.) a obecně „společná data pro všechny“, zatímco klientská část (běží vždy jen u tebe) se stará o vykreslování světa podle serverem zaslaných dat a o odesílání vlastních dat o tvé činnosti serveru, který je o5 zpracovává a odesílá ostatním hráčům. (např. jestli střílíš, běžíš atd.)

Pokud jsi na serveru sám, má server jen méně práce. A je mu úplně fuk, jestli běží lokálně (tedy jestli ho spustíš u sebe a ostatní hráče bys případně hostoval) nebo jestli běží na vzdáleném počítači (externí hosting). Jediný rozdíl, který můžeš zaznamenat je nepřítomnost lagů vznikajících obvykle v důsledku kvality připojení.

Na druhou stranu lokální server může lagovat tím, že nestíhá OBĚ činnosti naráz současně (tedy spočítat jak serverovou, tak klienskou úlohu), jindy ovšem může dojít k problémům na vzdáleném serverhostingu, kdy je obvykle na JEDNOM fyzickém serveru hostováno současně několik her a v případě jeho plného vytížení (na všech hostovaných hrách se naplno hraje) o5 může dojít k situaci, kdy server nestíhá a hra laguje.

Aby to nebylo tak jednoduché, musí serverová část (měla by) korigovat a synchronizovat činnost jednotlivých klientů v situaci, kdy mají různé pingy. Pokud jsou pingy hráčů vůči serveru příliš rozdílné, o5 dochází k rozlagování. To se obvykle řeší tak, že se nastaví přípustná hodnota pingu pro připojení a pokud ji hráč nedosahuje, dojde k autokicku ze serveru (server tě automaticky ze hry vykopne).

Takže pokud jste na mapě kupříkladu jen 2 hráči na úplně vzdálených koncích (že na sebe ani nevidíte) servererová část zaznamenává, vyhodnocuje a odesílá pouze údaje o vaší vzájemné pozici a činnostech, klient podle nich vykresluje okolí. Jakmile ale dojde ke „kontaktu“ (server vyhodnotí, že „se vidíte/můžete vidět“), okamžitě příslušná data odešle klientům/hráčům, aby jejich klientské části mohly situaci vykreslit. Zkrátka tvému klientovi je fuk, jestli na druhém konci mapy jiný hráč střílí z RPG, tohle ho vůbec nezajímá, protože to „nevidíš“ s ohledem na vzdálenost kupříkladu. Server ovšem pochopitelně „zajímá“ na co střílí, s jakým účinkem, kolik spotřeboval munice a všechno to eviduje. A když se nakonec potkáte, tak i když nevíš, že protihráč spotřeboval veškerou RPG munici někde na druhém konci mapy, tak server „to ví“ a protihráč má se střelbou z RPG utrum, dokud nenajde nějaké střelivo, chápeš? ;) :)

0 Nominace Nahlásit


Diskuze k otázce

U otázky nebylo diskutováno.

Nový příspěvek