Zastanawiam się, czy połączenie JavaScript po stronie klienta z serwerami PHP / mysql to dobry pomysł na gry przeglądarkowe dla wielu graczy w HTML5 w czasie rzeczywistym?
Moja wiedza techniczna jest bardzo ograniczona i chociaż planuję uczyć się node.js w przyszłości, krzywa uczenia się jest obecnie dość duża.
Ponieważ jestem już zaznajomiony z PHP, myślę, że działałbym znacznie szybciej.
Myślę, że skala wynosi od 2 do 8 graczy. I starając się, aby liczba wiadomości między klientem a serwerem była jak najniższa.
Wartości, które zamierzam przechowywać / obsługiwać to:
- Nazwa i identyfikator gracza.
- Pozycja X i Y.
- Zdrowie.
- Wyposażone przedmioty (maksymalnie 8 miejsc, prawdopodobnie mniej).
- Akcje (chód, atak, użycie itp., Ale tylko 1 akcja / gracz na raz).
- Współrzędne i trajektoria punktora X, Y.
- Nazwa gildii / klanu.
- I kilka podstawowych funkcji czatu / mailingu.
Sądzę, że chociaż nie jest to najlepsze rozwiązanie, ale jeśli utrzymuję małą logikę, jest to całkowicie wykonalne. Czy mam rację?
javascript
networking
html5
client-server
php
justanotherhobbyist
źródło
źródło
Odpowiedzi:
W przypadku gry w czasie rzeczywistym chcesz zminimalizować opóźnienia. Oto dwie wskazówki, jak to osiągnąć, z uwagami na temat PHP i węzła:
Osobiście uważam, że node.js jest bardzo łatwy do pobrania, a ponieważ i tak będziesz musiał napisać sporo kodu JavaScript, polecam wypróbowanie go. Przynajmniej rzuć okiem na samouczki dotyczące socket.io, aby przekonać się, jak proste jest skonfigurowanie kanału komunikacji w czasie rzeczywistym.
źródło
Wraz z odpowiedzią Tapio chciałbym zasugerować, aby (jeśli to możliwe) przesyłać dane wejściowe użytkownika (kliknięcia i klawiaturę) na serwer, a serwer i klient emulują grę. Każde N zaznaczenia powoduje, że klient prosi serwer o synchronizację, a serwer odpowiada wszystkimi informacjami potrzebnymi do renderowania gry, takimi jak zdrowie, przedmioty itp. Ma to na celu zapewnienie, że klient również nie zostanie zsynchronizowany wiele.
Oczywiście zarówno serwer, jak i klient będą musieli mieć dokładnie taką samą implementację gry, więc może to być nieco więcej pracy. Jeśli masz doskonałe implementacje zarówno na kliencie, jak i na serwerze, klient będzie musiał rzadziej synchronizować.
Zmniejszy to wysyłanie komunikatów klient / serwer, a tym samym opóźnienie. Pomogłoby to również zapobiec oszustwom.
Zakładając, że tworzysz tę grę w JavaScript, warto napisać zaplecze również w JavaScript, używając NodeJS. W ten sposób możesz ponownie wykorzystać implementację JavaScript swojej gry zarówno dla serwera, jak i klienta.
źródło
Polecam naukę Nodejsa. Jeśli masz już Javascript, nie będzie to takie trudne. Szybko stworzyłem grę TRON Multiplayer z Nodejsem i to był mój pierwszy dzień korzystania z niej. (Och, a klient był płótnem HTML5; wysyłałem tylko kluczowe dane wejściowe, jak wspomniano w innych komentarzach).
Spójrz na moduł o nazwie nowjs. Powodzenia!
źródło