Wątek przeniesiony 2015-06-26 00:03 z Nietuzinkowe tematy przez Rev.

Do programistów gier komputerowych.

0

Witam mam pytanie do osób zajmujących się programowaniem gier komputerowych, a mianowicie interesują mnie różnice między grami sieciowymi tworzonymi do rozgrywki multiplayer takimi jak: "war of tanks", "war thunder" itp. ostatnio także nowe gry tworzone na PC mają tak napisany tryb multiplayer, że wymagają połączenia internetowego i dają możliwość rozgrywki sieciowej, a grami tworzonymi na PC jeszcze kilka lat temu gdzie główny tryb rozgrywki to singleplayer, a tryb multip. dawał możliwość rozgrywki kilkuosobowej. Czy sieciówki to tak naprawdę gry PC tylko (nazwę to) "inaczej napisane", ewentualnie PC+Patch tworzący z gry PC sieciówkę czy może są one pisane od początku z myślą o sieci, a różnice w strukturze są tak duże, że wymagają sporych nakładów czasu i zasobów ludzkich? W zależności od odpowiedzi może będę miał kolejne pytania. Dodam jeszcze, że nie jestem programistą dlatego proszę o tłumaczenie dla laika. Pozdrawiam i czekam na odpowiedź.

3

Dopisanie obsługi sieci zależy od gry. Może to być bardzo proste, albo złożone. W takich czołgach, czy wormsach (gry turowe) masz stosunkowo niewiele danych do przesłania i poprawnie przesłane dane zawsze będą precyzyjne (musisz przesłać kąt lufy i moc wystrzału, ewentualnie położenie czołgu). Więcej zabawy jest w strzelankach, bo synchronizacja położenia graczy/pocisków musi być jak najbardziej real time, bez wielkich opóźnień, dlatego tam dane wysyła się protokołem UDP (bez potwierdzenia odbioru). Dane przesyłane są z odpowiednią częstotliwością np. 10 klatek na sekundę, żeby nie zajechać połączenia. Po drugiej stronie "kabla" jest wykonywana interpolacja między poszczególnymi klatkami, żeby zachować płynność przemieszczenia.

Multiplayer sieciowy nie istnieje tylko od kilku lat. Już w czasach DOSa sobie z tym radzono (np. IPX - Duke Nukem 3D, Blood, Dungeon Keeper).

0

Ok, jeśli chodzi o multiplayer sieciowy to może mi brakować informacji co do gier z lat 90-tych, wtedy były inne czasy i nie interesowałem się tym tematem, a pisząc to miałem na myśli bardziej współczesne produkcje, np. gta IV, V, NSF most wanted czy sportowe serie NBA, FIFA. Jeśli mógłbyś odnieść się do tego co napisałem w kontekście tych nowszych produkcji, bo z tego co napisałeś to możliwe jest dopisanie obsługi sieci do prostych gier. Jakie są różnice w nowszych tytułach, czy wymagają one większych nakładów czasu i zasobów ludzkich? Pozdrawiam

1

Oczywiście, że wymagają. Produkt klasy AAA, który ma mieć miliony użytkowników trzeba solidnie przetestować na dużej grupie odbiorców, jednocześnie zapobiegając wyciekowi gry przed premierą. Od strony programisty, zawsze łatwiej jest od początku zaprojektować grę pod rozgrywkę sieciową, niż dorabiać sieć do gotowej gry. W tym względzie rozwijają się biblioteki/silniki do gier, nawet w ostatniej wersji Unity (5.0, 5.1) chwalili się jeszcze łatwiejszym API do obsługi sieci ;)

Poza tym współczesne gry lubią zabezpieczać swoje zarobki właśnie serwerem do gry i jak najwięcej funkcji jest ładowane właśnie w serwer pośredniczący wymianą danych między graczami, żeby ograniczyć pirackim graczom rozgrywkę sieciową.

No i wciąż w nowych produkcjach wszystko zależy od złożoności rozgrywki. Np. w takim Need for Speed, jedyne co musisz synchronizować, to położenia samochodów graczy i ich stan (czy ma włączone nitro, czy skręca w lewo/prawo). W takim NBA, chyba najlepiej jeśli AI działa po stronie serwera i wysyła położenie/zachowanie wszystkich CPU playerów do poszczególnych klientów.

Zawsze sieciowa rozgrywka zwiększa nakłady pracy. Bo trzeba to solidnie przetestować i nanosić poprawki.

0

Dzięki za wyjaśnienia to przydatne dla mnie informacje. Odwróćmy na chwilę sytuację, jeśli można dopisać obsł. sieci do gry to czy można usunąć z takiej gry obsługiwanie sieci? Jeżeli tak to czy jest to łatwiejsze czy trudniejsze od procesu dopisywania i czy potrzebny jest do tego sztab ludzi i sporo czasu czy może łatwo i szybko poradzi z tym sobie jeden programista? To chyba wszystko odnośnie tego pytania, będę wdzięczny za odpowiedź. Mam jeszcze jedno pytanie ale to w następnym poście.

0

Proste.
Trudnym jest dodanie obsługi sieci w architekturze, która jej nie przewidziała.
Takie rzeźbienie w fundamentach.

0

Jeśli jest to łatwe to ile osób i w jakim czasie jest w stanie wykonać tę operację?

0

3 osoby: 2.5 developera i jeden kierownik, w pietnascie i pol dnia (w sumie: 3 osoby * 5 dni + pol dnia na sprint 0).

0

Tego się nie da tak określic. Powiesz mi ile zajmie Ci wymalowanie mojego domu (ścian?) nie widząc tego ani razu na oczy?

0

W tym pytaniu przykład chyba najlepiej zobrazuje o co mi chodzi. Wyobraźmy sobie, że budujemy lub wynajmujemy serwer, na którym chcemy umieścić grę o wymaganiach powiedzmy GTA V. Czy możliwe jest by serwer "przejął" ciężar wymagań sprzętowych dając możliwość grania bez względu na sprzęt lub przy pomocy jakiegoś programu osiągnąć taki sam efekt. Ewentualnie znacznie obniżyć wymagania dla potencjalnych graczy nie dysponujących wymaganym sprzętem? Czy to w ogóle możliwe? Czy istnieją takie programy?

0

ehh.... serwer zdalnie ma wygenerować Ci grafikę na Twoim komputerze? Magic...

2
sprawny napisał(a):

Czy to w ogóle możliwe? Czy istnieją takie programy?

https://en.wikipedia.org/wiki/Cloud_gaming

1 użytkowników online, w tym zalogowanych: 0, gości: 1