Jaki stack technologiczny -> turowa gra planszowa 2d w przegladarce + stan na serwerze

0

Chcialbym zrobic prosta gre planszowa 2d w przegladarce. I przy okazji sprowbowac cos nowego. Tak by sie dalo w dwie osoby na roznych komputerach pograc.

W jakich technologiach sie obecnie robi takie rzeczy ? Wiem jak to zrobic na duza skale, uzywajac dojrzalych ciezkich technologii ale szukam rozwiazania ktore bedzie proste w setupie i szybkie.

Warstwa prezentacji -> HTML5, Phaser , czy cos innego?

Backend -> proste przetwarzanie ruchow (czyli sprawdzenie czy ruch jest dozwolony + utrzymywanie i zapisywanie stanu gry, tak by dalo sie odpalic na roznych komputerach). Tutaj absolutnie nie wiem co uzyc. Moglbym uzyc Spring Boota, ale chetnie sprobuje cos nowego.

1

Ratpong - czyli pong sieciowy
Server w javie na ratpacku (rest, websockety)
https://github.com/javaFunAgain/ratpong/
klient jest w Scalajs z reactem
https://github.com/jarekratajski/scalajspounk (ten kod klienta to troszkę syf).

Perzystencje zrobiłem sobie na prevaylerze - przez to jest bardzo prosto.
Pong to oczywiście gra bardziej real time - ale turówkę podobnie można zrobić.

Generalnie server ratponga jest dość funkcyjny - każdy kolejny ruch piłki i paletki to nowy stan gry : https://github.com/javaFunAgain/ratpong/blob/master/src/main/java/pl/setblack/pongi/games/api/GameState.java

Miałem to przerobić na Kotlin i Spring 5 WebFlux, ale jak zwykle nie starzyło mi czasu (jeszcze).

I nie mówie, że taki stos jest najlepszy, albo nawet dobry - robienie ponga to generalnie u mnie sposób weryfikacji technologii, uczenia sie czegoś.
Jak sie da zrobić ponga to znaczy, że framework jest dojrzały: co najmniej na miarę roku 1973 (release ponga na mikrokomputery).
(btw , z niektórymi framworkami to nie wychodzi - np. z JSFem nie bardzo).

0

Poleciłbym rzucenie okiem na serwis https://pl.boardgamearena.com

Jak ja bym robił taką grę, to pewnie użyłbym Unity (eksport do WebGL) i szukałbym jak w takiej konfiguracji napisać grę multiplayer online ;)

2

Mamo najdroższa. Chcesz odbijać piłeczkę do ping-ponga za pomocą koparki? Nie to żebym był jakimś wielkim znawcą ale polecałbym zatrzymać się na JS. Masz NodeJS, Phasera, Express...wszystko to co potrzebne do napisania takiej gry. Tym bardziej, że to ma działać w przeglądarce.
https://phaser.io/news/2017/09/multiplayer-game-tutorial-part-1

0
Hispano-Suiza napisał(a):

Mamo najdroższa. Chcesz odbijać piłeczkę do ping-ponga za pomocą koparki?

Przeglądarka to koparka. Silnik do gier to operator tej koparki.

Wolę zatrudnić profesjonalistę, niż ludka z ulicy, który mi spartaczy robotę tak, że będzie trzeba poprawiać.

0
Spine napisał(a):
Hispano-Suiza napisał(a):

Mamo najdroższa. Chcesz odbijać piłeczkę do ping-ponga za pomocą koparki?

Przeglądarka to koparka. Silnik do gier to operator tej koparki.

Wolę zatrudnić profesjonalistę, niż ludka z ulicy, który mi spartaczy robotę tak, że będzie trzeba poprawiać.

Chyba cały sztab profesjonalistów. Ja tu widzę pytanie o to co wybrać do napisania prostej, małej planszówki, a nie kolejnego Drakensang, który z tego co pamiętam zbudowany w Javie. Oczywiście nikt Ci nie broni zaorać się samemu pisząc grę w Javie gdzie i tak będziesz musiał użyć JS czy Ci się to podoba czy nie. No chyba, że jesteś jaskiniowcem to zupełnie zmienia punkt widzenia.

1

Również polecam node'a + socket.io + express... rach ciach i backend napisany.

Skoro gra planszowa, to zakładam, że będzie to gra dość statyczna więc front html + css + js:
-za pola na planszy mogą posłużyć divy znajdujące się w jednym dużym relatywnym divie albo w canvasie to zrobić
-za pionki może robić jakiś obrazek svg którego kolory możesz zmieniać w "biegu" (tak żeby były inne dla każdego gracza)
-animacje w css i ewentualnie js można łatwo zrobić nie pisząc za dużo kodu (o ile są potrzebne)

Nie sądze żeby do gry planszowej trzeba było pakować od razu silnik Unity czy Phaser, im prościej tym lepiej

Polecam również bibliotekę p5.js, na YT jest taki kanał "coding train". Gość robi ciekawe rzeczy z tej biblioteki przy okazji fajnie tłumacząc

0

@Karol Szymanowski: @jarekr000000 @Hispano-Suiza @Markuz: troche chcialem jeszcze rozbudowac pytanie.

Zalozmy ze skonczylem projekt i wszystko ladnie dziala w przegladarce. Chcialbym teraz wypuscic to na Androida i IOS tak zeby wrzucic do sklepu (trzeba myslec przyszlosciowo).

Czy ktoras z tych technologii to latwo umozliwia ? Ew. co trzeba wtedy dodac?

W tym momencie potrafie napisac sobie front np. uzywajac LibGDX, Unity czy XNA (Xamarin). Ale zastanawiam sie czy mozna to zrobic lzej.

2

Server REST zawsze praktycznie wykorzystasz...
Co do klienta:
najmniej roboty, (gdzie w zasadzie klient będzie ten sam) będziesz miał jeśli skorzystasz z ReactNative (fajny nieby... ale cholernie nie lubię za nistabilnośc, powolność w developmencie) lub IONIC. Ionic jest oparty on Angular i dlatego powinniniśmy go nie lubić... ale jest cholernie przyjemny w programowaniu (dev) - i do niezbyt efekciarskiej turówki się nada. W poprzedniej firmie miałem jedną większą aplikację w IONICu (nowym ) na produkcji i 2 w starym. Działa spoko - a możliwość zrobienia prawie jednego klienta na Androida, IOS, telefony, tablety i normalny desktop to naprawdę rewelacja. (Prawie - bo w praktyce to jednak zrobiliśmy osobne pakowanie aplikacji na desktop, i osobny layout (RWD nie wyszedł ze względu na historyczne naleciałości i przyzwyczajenia), ale większość kodu serwisów itp jest ponownie użyta).

EDIT 1: Jakkolwiek programowanie pod mobile na słabym lapku odradzam. Szczególnie emulatory androida to kaszanka.
EDIT 2: Doświadczenie pokazuje, że łatwiej jest najpierw zrobić pod mobile, a potem zrobić desktopa niż odwrotnie. Rozwiązanie in the middle - zacznij od desktopa, ale od razu z look & feel w stylu mobile.

1

Zainteresuj się tematem PWA - możesz dodać do google play itp. stronę internetową która w Twoim przypadku będzie klientem gry - https://medium.freecodecamp.org/i-built-a-pwa-and-published-it-in-3-app-stores-heres-what-i-learned-7cb3f56daf9b (nie polecam do bardziej pro gier na chwilę obecną).

2

@WhiteLightning: Osobiście nie używałem ale znajomy pisze dla swojego projektu aplikację do sprzedaży biletów (w tym projekcie) za pomocą React Native. Dość popularny temat ostatnimi czasy.

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