Jak je možné že na minecraft serverech může být i 20000 lidí.
Co sem koukal nějaké minecraft servery mají přes 20000 hráčských slotů, jak je to možné? Přeci takový výkon žádný server mít nemůže aby to běželo plynule, to žádný výkon nepotřebuje nebo to běží na superpočítači. Jak se to někomu finančně vyplatí?
a keby si vedel kolko ludi moze byt naraz napriklad na facebooku....
Jasně ale to jsou obrovské korporace... Já tady píšu o serveru který vlastní jeden člověk nebo nějaká malá skupina.
Obrovská firma je to teď. Desetitisíce uživatelů měl už už v době, kdy se jednalo u službu pro vysokoškolské studenty a mimo USA o něm v podstatě nikdo nevěděl.
Dalo by se rict, ze to nepotrebuje zadny vykon
Za rozumné peníze koupíš počítač, co bude mít 24 jader a 4 GHz frekvenci, to je, velice zhuba, 24 * 4 * 10^9 ~ 10^11 cyklů za sekundu, děleno 2 * 10 ^ 4 hráčů tedy 5 * 10 ^ 7 = 50.000.000 cyklů na hráče za sekundu (teda včetně komunikace a tak, ale on ten hráč toho zase tolik dělat nemůže, 50 milionů instrukcí je strašně moc)
Komunikace u MMORPG je většinou dost zjednodušená, po nahrání lokace se posílají jenom změny a to je pár bytů ( třeba co jsem koukal u jiné hry - 01 02 0D 40 50 03 - 6 bytů, 01 postava přešla na jinou pozici, 020D = 525 dekadicky je číslo postavy, 40 30 je x a y pozice, 03 je směr postavy - 6 bytů přeneseno, hráčův počítač se začíná potit - vykreslí celé pozadí podle uložené mapy, všechny postavy a nestvůry a stromy a domy a dopočítá viditelnost a odrazy vodní hladiny a postava 525 - jak už dávno ví - je elf, typ figury 12345, má na sobě zelené šaty, hnědé boty, třpitivou zbroj, černé vlasy, radioaktivní meč +7, kožený štít +5, jmenuje se Megatron patří do guildy XxX, která je nepřátelská tvojí guildě atd atd - a tohle všechno (a mnohé další) musí hráčův počítač vytahat z paměti, nakreslit a vyřešit, jak se to tluče s 12 dalšíma, stejně podrobně popsanýma, postavama na scéně - a taky se zviřaty, přírodou atd ...
Rozhodneš se zaútočit, takže postupně tvůj počítač najde nejdřív cestu a pak postupně posílá podobné šestice bytů, jak tvoje postava jde k protivníkovi, max. 4 za sekundu, protože ví, že serve ti víc kroků za sekundu nedovolí udělat.
Server zjistí, že měníš souřadnice o max 1 v každém směru, ověří, že cílové pole je volné a tobě a těm 12 dalším pošle 6 bytů, kam jsi zrovna vkročil.
Jak vidíš, komunikace tolik nezabere, server počítá jednoduché věci a hráčův počítač se potí a animuje jako divý.
Pokud fakt zautočíš, tak tvůj počítač pošle něco jako ( 07 02 0D 12 = 07 útok na postavu, 020D = Megatron, 12 typ útoku = ruční, nablízko), server ověří, že stojíte vedle sebe, vezme tvoje (předpočítané) číslo na útok, Megatronovo (předpočítané) číslo na obranu, přihodí kus náhody a všem 12+1 na tomto místě pošle (07 12 01 01 02 0D 05 80 = 07 někdo útočil, 12 ručně nablízko, 0101=hráč 257, čili ty, 020D na Megatrona, 05 zasáhl za 5 bodů, 80 zasaženému , tedy Megatronovi, zbývá 128 bodů) - 8 bytů a pár krátkých funkcí, kde se pomocí několika instrukcí něco ověří (rozdíl dvou dvojic čísel, povolený typ útoku pro equipnutý item ...) nebo něco spočítá a uloží (nový počet bodů, nové pozice ...)
a tvůj počítač se potí, aby vykreslil rozfázovaně na 140x za sekundu, jak tvoje pozlacená dýka s diamantem naráží na Megatronovo brnění a kolem cáká krev jak na jatkách (a každé kapce krve počítá pseudobalistisickou dráhu pádu)
----
Jak vidíš, při dobré organizaci server dělá naprosté minimum a mraky herních nabušených počítačů dělají ten zbytek.
Ono i u stavitelských věcí, jako ten minecraft, jde spousta práce takto rozdělit a pohyby jednotlivých předmětů jsou výpočetně celkem hračka, pokud je to dobře navrženo. A o grafiku se postarají počítače hráčů...
(Neodpustím si vzpomínku na 8-bitové počítače s 32 kB paměti, kam se kromě programu musela vejít i obrazovka a kde výpočty jak pohybů, tak grafiky taky dělal ten chudák procesor - a přesto na nich plynule jely i 3D souboje několika stíhaček naráz - nebyl až takový problém upočítat ty 3D manévry, byl problém je jakž takž nějak nakreslit)
Klobouk dolů. Hodně pěkně vysvětlený