Przeglądarkowa gra turowa - jak ogarnąć multiplayer?

0

Witam.
Mam w planach napisać grę przeglądarkową. Gdzie kwestie serwera raczej miałbym ogarniętą (w gruncie rzeczy to nie ma znaczenia w jakiej technologii będzie serwer), tak kwestia samego www mnie troszkę przeraża.

GRA
Turowa, z podziałem na stoły, max 2os/stół.

SERWER
C#, .NET Core

KLIENT
Chciałbym w Angularze, ponieważ w tym mam doświadczenie. Nie mam zaś doświadczenia w socketach, a WebAPI w tym przypadku to kiepski pomysł.

  1. Czy to w ogóle jest realne? Mam wrażenie, że JS'owe frameworki nie są do robienia gier.
  2. Może Blazor i SignalR? (nie ten dział, wiem)
  3. Jak się zabrać za te sockety?
    a. GameServer - socket odpowiedzialny na odbieranie połączeń z każdego pokoju
    b. GameServer - osobny socket dla każdego pokoju

Obawiam się, że brakuje mi elementarnej wiedzy w tego typu projektach ale nie mam zamiaru się poddać.

0

Użycie SignalR jest całkiem łatwe, wystarczy skorzystać z dokumentacji, wygląda podobnie do kontrolera z ASP. NET. Możesz też używać websocketów poza kontekstem żądania HTTP dzięki IoC. Do tego jest też npm dla klienta JS. Dodatkowo umożliwia dodawanie użytkowników do grup i rozgłaszanie według nazw grup. Jeśli to projekt pisany dla funu, framework JS powinien wystarczyć :)

Jedno połączenie per zalogowanie i grupy - tędy bym szedł.

0

Pytanie tylko jak rozgraniczyć, który socket jest z której grupy? Gdzie logowanie chce zrobić metodą tradycyjną - token z WebAPI, w którym (w bazie) trzymam dane zarejestrowanych graczy. Jeśli token jest niepoprawny to nie przejdzie endpoint CreateGame albo JoinGame. Widzę dwie opcje:

WebSocket Endpoint - generowanie endpointu o konkretnym id

webSocket('ws://localhost:23235/game/{game_id}');

JSON - jeden endpoint webSocket('ws://localhost:23235/game);

{
   method: 'create',
   gameId: id
}
// lub
{
   method: 'join'
   gameId: id,
   playerId: id
}
1

Hej, dość niedawno napisałem grę w statki przy użyciu Angular + ASP.NET Core z SignalR. W sumie tylko żeby się nauczyć Angulara.

Tu jest SignalR Hub po stronie serwera.

Tu jest SignalR service po stronie klienta.

P.S. Jak będziesz miał pytania co do implementacji to pisz śmiało. Jak wspominał @SkrzydlatyWąż , SignalR jest dość prosty w użyciu.

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