Autor Wątek: Architektura multiplayer i singleplayer.  (Przeczytany 3059 razy)

Offline koirat

  • Użytkownik

# Luty 20, 2016, 16:19:13
Poleca ktoś może jakieś materiały na temat architektury gry multiplayer ale skonstruowanej w ten sposób żeby obsługiwała również grę singleplayer. Od razu mówię iż nie interesują mnie informacje na temat samego przesyłania pakietów / protokółów / socketów / serializacji danych itp.

Najlepiej client server ale mogą być też inne rozwiązania.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Ogniok

  • Użytkownik

# Luty 21, 2016, 22:28:49
Singleplayer to nic innego jak multiplayer z jednym graczem. Odpalasz sobie listen-server i nie pozwalasz się dołączać.

Offline koirat

  • Użytkownik

# Luty 21, 2016, 22:59:54
Może źle skonstruowałem pytanie ;).

Poprawiam:
Czy zna ktoś dobre materiały na temat architektury gry singleplayer ale skonstruowanej w ten sposób aby obsłużyć również grę multipleayer :)

Offline yarpen

  • Użytkownik

# Luty 22, 2016, 06:07:34
Szczerze mowiac, to nie przypominam sobie takich (publicznie dostepnych). Generalnie podstawowa sprawa jest rozbicie funkcjonalnosci na 2 grupy (serwer i klient). W SP obslugujemy obie. Rozbicie dotyczy co najmniej kilku roznych poziomow, od najwyzszych (czyli update podsystemow), przez obiekty (niektore type nie istnieje na kliencie), po komponenty (znowu: czesc update'u nie jest klientom potrzebna). Jezeli masz jakies konkretne pytania, to chetnie rozwine.

Offline Zarejestruj

  • Użytkownik

  • +1
# Luty 22, 2016, 18:41:29
Tworzenie samemu gier multiplayer obecnie nie jest możliwe, bo są one opatentowane.

Offline koirat

  • Użytkownik

# Luty 23, 2016, 01:53:12
Tworzenie samemu gier multiplayer obecnie nie jest możliwe, bo są one opatentowane.
link ?

@yarpen no właśnie problem w tym że nie widzę trudności w implementacji, tylko w ilości dodatkowego kodu jaki musiał bym napisać. Praktycznie każda rzecz 2 razy osobno dla klienta osobno dla servera. Na serverze realizacja a na kliencie "odbicie lustrzane".

Dlatego zastanwaiałem się czy są jakieś wzorce projektowe/architekturowe specjalnie do gier multiplayer.

Offline laggyluk

  • Użytkownik
    • http://laggyluk.com

# Luty 23, 2016, 02:20:55

Offline toxic

  • Użytkownik

# Luty 23, 2016, 14:34:37
Cytuj
Praktycznie każda rzecz 2 razy osobno dla klienta osobno dla servera. Na serverze realizacja a na kliencie "odbicie lustrzane".

A wlasciwie po co 2 razy?

Tzn co wlasciwie chcesz osiagnac: gre SP, ktora "kiedys tam" zostanie rozwinieta w MP (i miec jak najmniej z tym klopotu)? czy tez robisz gre, która od razu na dzien dobry ma MP, a do ktorej "kiedys tam" dopisany zostanie tryb SP (i chcesz miec jak najmniej z tym klopotu)?

W ogole o jakim gatunku mowimy?

P.S.
nie znam przydatnych materiałów dla Ciebie - po prostu sam temat mnie zaciekawił

Offline Zarejestruj

  • Użytkownik

# Luty 23, 2016, 15:00:55
Podpinam się do tematu bo ja też chciałbym kiedyś stworzyć strone z grami multiplayer. Trzeba samemu pisać te gry czy komuś się zleca? Ile powinien wynosić kapitał początkowy dla stworzenia średniej wielkości strony z grami multiplayer?

I w jakiej technologii lepiej żeby były te gry, flash czy java script?
« Ostatnia zmiana: Luty 23, 2016, 15:03:52 wysłana przez Zarejestruj »

Offline koirat

  • Użytkownik

  • +1
# Luty 23, 2016, 15:38:34
Powiedzmy że jest to pewna forma rts-u. Interesuje mnie klient server.
Dwa razy dlatego bo klient ma być traktowany jako view cała logika ma być na serverze.

I w jakiej technologii lepiej żeby były te gry, flash czy java script?
Najlepiej to w MultiLisp-ie jak sama nazwa wskazuje jest idealny do multi.

Offline toxic

  • Użytkownik

# Luty 23, 2016, 15:56:37
Dwa razy dlatego bo klient ma być traktowany jako view cała logika ma być na serverze.
To ja nadal nie rozumiem czemu zakladamy/mowimy, ze pewne rzeczy beda dwa razy (w pamieci?) : jedna kopia na serwerze, jedna kopia do widoku po stronie klienta.

Bo mnie sie wydaje, ze jakbys sie uparl, to moglbys zrobic taka dodatkową warstwe pomiedzy modelem (to co na serwie), a tym co widzi gracz na monitorze (widok) : nazwijmy taka warstwe 'adapter'. I ten adapter w zaleznosci od tego, czy aplikacja jest w trybie SP czy MP to by dostarczal widokowi dane odpowiednio z pamieci (SP), albo gdzies tam z 'bufora'/sieci/cachu, czy jak tam nazwac lokalny mirror modelu (MP).

Bo rozumiem, ze jesti zakladamy, ze gra wspiera prawdziwy MP to zgadzamy sie, ze musi nastapic duplikacja modelu, prawda? Komputery zdalne beda musialy miec kopie danych (byc moze nieświeżą) i tego nie da sie przeskoczyc, zgoda? Jedyne co mozna ugrac to to, zeby w trybie SP 'obciac' komunikacje sieciowa - czyli zeby widok umial sie dobierac bezposrednio do modelu/danych, tych lezacych przeciez w pamieci tego samego komputera/procesu/aplikacji i nie duplikowal sobie danych...

Offline koirat

  • Użytkownik

# Luty 23, 2016, 16:38:24
Tak kombinował bym coś w ten deseń z z widokiem i modelem z tym że model dla jednego to będą dane otrzymane z serwera. W tym momencie mam grę singleplayer i widok jest dość ściśle powiązany z modelem dlatego te podwójne implementacje. Jednak sam zastanawiam się czy by tego nie przerobić na przyszłość. Tylko że źródło ma kilkadziesiąt tysięcy linijek i boli mnie na samą myśl o przerabianiu.

Cytuj
Komputery zdalne beda musialy miec kopie danych (byc moze nieświeżą) i tego nie da sie przeskoczyc, zgoda?
W sumie można zrobić lockstep i tam można zaryzykować stwierdzenie iż dane są zawsze świeże.
Ale powiedzmy że interesuje mnie klient server.

Nie widzę sensu z optymalizacją specjalnie dla singleplayer, jak słabo będzie chodzić w multi to i tak nie jest dobrze.

Offline toxic

  • Użytkownik

# Luty 23, 2016, 16:47:15
Jednak sam zastanawiam się czy by tego nie przerobić na przyszłość.
Strzelam, ze nie warto. Bo tak sobie mysle, ze w najgorszym razie czeka Cie dopisanie 'handlera' sieciowego, ktory bedzie pracowac na istniejacym modelu (tzn go jakos tam orac, modyfikowac mu dane, itepe) - a istniejacego kodu widoku/modelu za bardzo nie bedziesz musial ruszac (jesli nie masz spagetti).

W sensie: kazdy komputer bedzie tak jakby gral w gre SP, tyle ze "pod spodem" jakis modul sieciowy bedzie populowac/modyfikowac dane modelu za pomoca tego, co tam odbierze z serwera. Ale dla widoku to bedzie gra SP. Plus/minus wysylanie inputu (byc moze przetworzonego) gracza do serwera...

Co moze pojsc nie tak? ;-)

edit: down - aaa, to troche zmienia postac rzeczy. To ja sie wycofuje z moim sugestii.
« Ostatnia zmiana: Luty 23, 2016, 18:38:48 wysłana przez toxic »

Offline koirat

  • Użytkownik

# Luty 23, 2016, 17:35:28
Problem w tym że robię w unity. I tam model jest dość mocno powiązany z view z powodu różnych komponentów.
Kusi mnie żeby to jednak przerobić, mam pewną koncepcję na zgrabną architekturę ale założyłem ten wątek bo nie chciałem odkrywać powtórnie kola.

Tylko jak zawsze problemem jest czas :(

Offline Zarejestruj

  • Użytkownik

# Luty 23, 2016, 18:59:25
Najlepiej to w MultiLisp-ie jak sama nazwa wskazuje jest idealny do multi.

A może jakaś poważna odpowiedź?