Witam.
(Jeżeli umieściłem post w złym dziale to przepraszam)
Jestem tu nowy, jak widać ;p Od pewnego czasu zastanawia mnie w jaki sposób wygląda wymiana informacji pomiędzy klientami w grach MMORPG.
Od jakiegoś czasu gram w Air Rivals. W grze tej się lata samolotami i strzela. Trzeba było ściągnąć klienta gry i go zainstalować, to wiadomo. Z jakiś 1 miesiąc temu udało mi się postawić na moim komputerze serwer do gry podobnej do tej z tym że to była starsza wersja i nazywała się Flysis. Wszystko chodziło ok. Trzeba było tylko zainstalować baze danych MySQL, wczytać bazę (do Flysis) pobraną z internetu, oraz odpalić 4 programiki które robiły za cały serwer. Jeden był to jakby główny serwer, drugi był to serwer mobów (odpowiadał za ruch mobów i rakiet), trzeci - zabezpieczający- sprawdzał zgodność plików na serwerze, itp, czwarty nawet już nie pamiętam od czego był, ale chyba od komunikacji głosowej między graczami.
Chciałbym się dowiedzieć w jaki sposób działa taka wymiana informacji pomiędzy klientami gdy. Z tego co mi sie wydaje to baza danych ma tylko na celu przechowywać informacje o graczu takie jak: login, ilość wirtualnej waluty, wyposażenie statku, poziom doświadczenia, itp. A te 4 programy które trzeba było odpalić (ten serwer cały) to wydaje mi się że one komunikują się z klientami za pomocą Socketów (czy jakoś tak) czyli przez TCP/IP.
Tak na mój rozum to te 4 programy zbierają informacje od każdego z klientów zainstalowanych na komputerach graczy o położeniu samolotu, itp. i rozsyłają je do pozostałych klientów w celu dokonania korekcji położenia samolotu każdego gracza. I w dodatku aktualizują baze danych o nowe informacje typu, drapnięcie nowego przedmiotu, wzrost doświadczenia, itp.
Wydaje mi się też ze cała fizyka np odbicie od podłoża, zderzenie z przeszkodą jest realizowana przez każdego z klientów a do serwera są przesyłane tylko informacje o położeniu itp. Chyba że serwer zbiera informacje o położeniu i on wykonuje cała fizykę a następnie wysyła nowe informacje o położeniu do klientów?
Jeżeli to dobrze rozumiem to czy taki transwer danych za pomocą socketów/przez TCP/IP nie jest za wolny?? a może to inaczej jest robione??
Wiem że męczę, i dużo można by pisać w tym temacie ale jestem ciekawy tego i mogą być informacje takie w skrócie ;p
Pozdrawiam.
Zakładki