Witam, szukam pomocy z paroma problemami, które pojawiły mi się gdy chciałem zrobić sobie projekt gry karcianej.
Założenia gry: gra karciana turowa ( 2 osobowa ), grafika 2d i może proste animacje i dźwięk ( przy zagrywaniu kart i w tle ), serwer do którego łączą się gracze i serwer ich paruje, tworząc im stolik ( wątek? )
Najpierw chciałem napisać kod który pozwoli połączyć się dwóm graczom za pomocą serwera i jeden drugiemu prześle prostą wiadomość ( konsola ). Potem opakować to w proste GUI.
Problemy:
Połączenie
- Co nada się do łączenia graczy w grze sieciowej?
- obiło mi się o uszy webservice, ale nie wiem dokładnie co to udostępnia w czym pomaga? Co mi da np. webservice REST i to że mogę wysyłać zapytania w formie URL? Jak to można porównać z pracą na socketach ( które wydaje mi się naturalniejsze, nigdy nie używałem jeszcze frameworków )
- czy dobrze byłoby zastosować do tego jakiś framework?
GUI
2) Jak wyświetlać grafikę gry?
- Co polecacie - przez stronę www czy aplikacja okienkowa ( co wtedy - swing / javafx / LibGDx ( chociaż mało tam fizyki chyba do tego liba ))?
- Kiedy okno gracza wie, że trzeba coś narysować ( bo np. przeciwnik zrobił ruch ), czy to serwer informuje o zmianie, czy gracz w równych interwałach pyta o to serwer? ( Gra jest raczej statyczna i zmiany są co turę, nie wiem czy jest sens spamowanie serwera ) ?
Projekt
4) Klasa Player miałaby informacje: jakie karty gracz ma na ręce, jakie zostały w jego talii, stan jego gry ( czy w danej turze wymienił kartę, czy zagrał jakąś na stół ).
Czy serwer powinien posiadać obiekty klasy Player a rola klienta to byłoby reagowanie ( wysyłanie żądań do serwera ) na kliknięcia w GUI?
Czy raczej serwer powinien być odciążony takimi danymi? Wtedy pilnowaniem klasy Player ( czy nie dociąga karty ze swojej pustej talii, że ma miejsce na dogranie karty na stole, że nie zagrał jeszcze w tej turze karty ) zajmuje się klient a serwer zajmuje się tylko przekazaniem sytuacji na stole i ewentualnie sprawdzaniem czy po zagraniu jest koniec gry. Czy takie podejście jest poprawne ze względu bezpieczeństwa?
Dziękuje za wszelkie odpowiedzi i jestem otwarty na sugestie.