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
|
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 |
U otázky nebylo diskutováno.
Nový příspěvekDrap | 8278 | |
led | 4085 | |
Kepler | 3462 | |
annas | 3402 | |
hanulka11 | 2783 | |
marci1 | 2781 | |
zjentek | 2761 | |
briketka10 | 2514 | |
quentos | 2020 | |
aliendrone | 1960 |
Aktuality |
Zábava a ostatní |