Wpis z mikrobloga

#programowanie #javascript #networking #nodejs
Witam mirunie, tworzę grę podobną do gta 2 na przeglądarkę w #phaser Zamysłem moim jest aby stworzyć do tego multiplayer real-time i tu powstaje moja zagwozdka, czego użyć. Mam doświadczenie w websocketach i średnio mi się podoba to rozwiązanie. Planowałem dla serwera użyć #csharp jeśli się nie uda pomysł to #nodejs ale wolałbym zostać przy pierwszym.
Czy znacie jakieś biblioteki do pisania jak najbliżej real-time rozgrywki? Aktualnie chodzi mi po głowie WebRTC lub SignalR ale chciałbym znać waszą opinię ( ͡° ʖ̯ ͡°) W skrócie szukam czegoś najbliżej zbliżonego do UDP i już ładnie opisanego/udokumentowanego. ( ͡° ͜ʖ ͡°)
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mihaubiauek: @LukrowaKicha: @wnocy
To będzie powolne jak chce zrobić grę wydajną z multiplayer w real-time, zwykłe czyste TCP na prostych bajtach potrafi robić problemy wydajnościowe.
Ogólnie to JS i przeglądarki to słaby wybór na grę w realtime... jeszcze zależy co tam ma się dziać, strzelanki bym nie robił, chyba że takie statkowe aka darkorbit, a szukanie czegoś "zbliżonego do UDP" to nie ma sensu... bo websockety są
  • Odpowiedz
@mihaubiauek: Pisałem inżynierkę w websocket, gra strategiczna czasu rzeczywistego na przeglądarkę. Tylko nie wykorzystywałem za bardzo bibliotek i tak było jak piszesz, potrafiło umierać :P.
@GotoFinal: No a przykład takie unity na którym da radę napisać na przeglądarkę wydajną grę multiplayer? WebRTC jest zbliżone już bardziej pod udp ale wiadomo, udp się nie uda bo przeglądarki na to nie pozwalają z powodu bezpieczeństwa.
  • Odpowiedz
więc mam nadzieje że to nic na prawdę real-time, bo po prostu nie da rady pograć kiedy samo proto pomnoży ping kilkukrotnie


@GotoFinal: bzdury. Dobrze zaimplementowane bedzie ladnie dzialac.

WebRTC jest zbliżone już bardziej pod udp ale wiadomo


@LukrowaKicha: ale wiadomo ze jest to TCP i jest zblizone do TCP bardziej niz do UDP.
  • Odpowiedz
@GotoFinal: ani jest zaprzeczeniem (partykuła przecząca poprzedzająca orzeczenie czasownikowe) "ani możliwe ani sensowne" jak coś jest ani niemożliwe i ani bezsensowne to jest nie nie możliwe i nie nie sensowne ;) czyli możliwe i sensowne.

@LukrowaKicha: kwestia czy wszyscy mają lecieć live na jednym "pokoju" bo wtedy faktycznie może się zrobić b----l. UDP ma tę wadę, że nie ma retransmisji, tj. mogą się pojawić straty, choć to nie
  • Odpowiedz
@karer: ... co ty pierniczysz, dobre napisanie nie ma nic do działania, wiesz jak dziala TCP? Wystraczy ze 1 pakiet się zgubi i już czujesz laga bo nagle wszystko czeka na retransmisje, i albo wszystko staje, albo cofka... nie ma gier Real time na tcp gdzie tego nie czuć... a web socket jeszcze to bardziej utrudni... idź pisać bajki gdzieś indziej. Jak to Gierka gdzie takie lagi nie przeszkadzają to
  • Odpowiedz
@GotoFinal: Och odczytywałem retransmisję jako zaletę ( ͡° ʖ̯ ͡°) wydawało mi się, że zlaguje to usera który zgubił pakiet, ale przynajmniej będzie zsynchronizowany. (tak, wiem, że nie pisałeś do mnie)
  • Odpowiedz
nie ma gier Real time na tcp gdzie tego nie czuć...


@GotoFinal: co rozumiesz przez real-time. Ja rozumiem z opoznieniem do 200ms. Na TCP bez problemu to osiagniesz.
  • Odpowiedz
@LukrowaKicha: Ja bym szedł w TCP na Twoim miejscu i wykorzystałbym do tego Socket.IO (Node.JS). Co więcej jeśli piszesz grę to również proponowałbym TypeScript bo gry to jest na tyle specyficzny twór że zdecydowana większość kodu będzie Twojego autorstwa a nie zewnętrznych bibliotek, więc o wiele mocniej odczujesz zalety TSa niż w przypadku "zwykłego" projektu.

Natomiast co do samej komunikacji to bardzo łatwo można wyciągnąć błędne wnioski czytając jeden z miliona
  • Odpowiedz
@larvaexotech: TS oczywiście jest :)
Dziękuję za długą analizę, używając websocketów było łatwo o komunikację ale i nie przesyłałem dużo pakietów(postawienie budynku, ruch jednostki itp, prosta strategia która dawała radę na małą ilośc graczy)
Tutaj już chcę mieć ładną interakcję z drugim graczem przez co pierw muszę dobrze przemyśleć strukturę serwera dobrze.
A TCP chętnie użyję ale jakiegoś dobrze obudowanego w bibliotekę aby go poprawnie używać. Będę próbował różnych technik
  • Odpowiedz