Strategia turowa - wybór technologii dla części serwerowej (java+spring - co dalej?)

0

Edit: Ze względu na java/spring uznałem, że temat pasuje do działu java, ale moliwe, że bardziej jednak pasuje do działu inżynieria oprogramowania. W takim wypadku, proszę przenieść :)

Hobbystycznie planuję stworzenie wieloosobowej turowej gry strategicznej. Rozgrywka docelowo będzie mogła odbywać się na IOS, Androidzie oraz web-ie, dlatego cała logika musi odbywać się po stronie serwerowej i na tej części chciałbym się skupić. Owszem, mógłbym od razu zacząć pisać aplikację i kombinować na bieżąco tak jak będzie potrzeba (i pewnie tak to po części się skończy), jednak wolałbym wpierw Was się poradzić, aby może uniknąć jakiegoś głupiego błędu architektury/doboru technologii.

Założenie gry - wymuszony tryb online (logika na serwerze), nie przewiduję offline single-player (ale AI będzie). Jeden gracz zakłada grę, inni dochodzą do tej gry przez lobby. Założyciel zaczyna grę -> do klientów idzie informacja o rozpoczęciu rozgrywki i zaczyna się pierwsza tura. W podobny sposób ma się odbywać zakończenie tury, gdy ostatni gracz wysyła informację o zakończeniu tury, serwer przerabia logikę i rozsyła stan gry stosownie do każdego gracza wraz z informacją o rozpoczęciu kolejnej tury. Itd aż do końca rozgrywki gdzie będzie podsumowanie i opcja ponownej partii. Moje dylematy poniżej:

  1. Komunikacja z klientami - nie jestem pewny czy da radę zrealizować zwykłym RESTem. O ile wysłanie informacji o skończonej turze nie jest problemem, to jak poinformować wszystkich klientów, którzy czekają, że już wszyscy skończyli kolejkę bez wysyłania ciągłych zapytań od klientów? Czyżbym był zmuszony używać socketów i/lub notyfikacji?

  2. Na pewno będę potrzebował bazę danych. Nie jestem pewny czy muszę przechowywać w bazie danych informacje o pojedynczej rozgrywce, która jest w trakcie? Na pewno będę przechowywał dane o userach dla celów rankingowych. Docelowo planuję umożliwić prowadzenie paru rozgrywek jednocześnie (bo np ktoś uczestniczy w rozgrywce, gdzie czas na turę wynosi 1h) i jakoś to będę musiał ogarnąć - ale nie od razu oczywiście. Jakieś sugestie? (nie zdecydowałem się też jeszcze na żaden rodzaj bazy, nie mam jakichś upodobań, na co dzień pracuję z Oracle 11g)

  3. W pracy mam ograniczone możliwości rozwoju, więc myślałem, żeby przy okazji zapoznać się trochę bliżej ze Springiem. Jakie moduły (poza core) warto/możnaby zastosować przy tego typu projekcie, a jakie to byłby przerost formy nad treścią? Warto użyć Spring Boota?

Jakiekolwiek rady/sugestie mile widziane. Temat co prawda dotyczy tylko części serwerowej, czyli API+logika gry+DB, ale z chęcią przyjmę i inne uwagi.

Uprzedzę pytania:
Czemu Java? Bo pracuję z tym językiem na co dzień i chcę szybciej się rozwijać, a także patrz punkt niżej.
Czemu Spring? Bo dobrze płacą za jego znajomość w mojej okolicy.

0

ad 2. Na pewno nie.
Przynajmniej ja własnie bawiąc się w robienie gierek nauczyłem się Prevayler/ Drop db. Dużo mniej problemów.

Przykład (serwer do pong z zakładaniem gier, rest , websocketami i perzystencja masz tu)
https://github.com/javaFunAgain/ratpong

Tylko nie mam tam Springa. (Jakże mi przykro).

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