Czy można tworzyć gry wieloosobowe za pomocą HTML5?

9

Wiem, że HTML5 jest świetny do gier internetowych, ale tak naprawdę nie wiem, czy jest możliwe tworzenie gier online z wieloma użytkownikami, utrzymywanie synchronizacji wszystkich użytkowników i obsługa logowania itd. Czy można to zrobić?

arrrrgv
źródło

Odpowiedzi:

7

Nie możesz pisać tego samego HTML5. Zawsze będziesz potrzebować skryptów i serwera do obsługi komunikacji między użytkownikami, ze względu na ograniczenia bezpieczeństwa skryptów przeglądarki, a także zapobieganie oszustwom.

Wiele osób napisało gry HTML5 dla wielu graczy, nawet ja. Korzystanie z samego HTML5 prawdopodobnie nie jest najważniejszą jego częścią. Większość potrzebnych rzeczy (jeśli nie wszystkie) była również dostępna w HTML 4.01. Wyjątkiem jest canvas, ale canvas jest wolniejszy niż svg, a svg był już dostępny w wielu przeglądarkach.

Myślę, że tak naprawdę zrodziła się „html5 game” mania to możliwość tworzenia aplikacji po stronie serwera w javascript. Oznacza to, że wszyscy programiści po stronie klienta mogą nagle sami stworzyć cały system i zwykle są kreatywnymi ludźmi, jeśli chodzi o takie rzeczy jak gry. Nie wspominając o tym, że JS jest tak łatwy, że nawet twoja babcia mogłaby się z nim programować. Może.

Zaktualizuj po komentarzu z OP:

Powszechną architekturą dla gry na przeglądarkę byłaby

          Client                                     Server
|-----------------------|                   |---------------------|
View - input/output logic - Communication - Validation - Game World
              |                                              |
   client database (if needed)                    server database (if needed)

Lub pod względem rzeczywistych „języków”:

  • Widok klienta: HTML5 (możliwe, że z angular.js, jeszcze nie przetestowałem, jak szybko działa LOTS. Sprawdź także raphael.js w celu uzyskania „grafiki”)
  • Logika klienta: JavaScript (jquery / vapor / plain / cokolwiek)
  • Baza danych klientów: WebSQL (jak sądzę, część „pakietu” HTML5)
  • Komunikacja: JSON (notacja obiektowa JavaScript, zasadniczo serializowane obiekty javascript) przez socket.io (biblioteka JS do automatycznego wykrywania optymalnych protokołów komunikacyjnych)
  • Język serwera: także JS (node.js, jeśli masz TON współbieżnych użytkowników na kilku rdzeniach, dostępne są również inne rozwiązania)
  • Walidacja: upewnienie się, że Twoje dane gry INCOMING (od klienta) są prawidłowe. Wychodzące nie muszą być sprawdzane, nawet na kliencie. Zakłada się, że jest poprawny. Zawsze .
  • Game World: zbiór ZWERYFIKOWANYCH danych, który jest redystrybuowany dla wszystkich klientów, gdy wchodzą
  • Baza danych serwera: couchdb, mongodb, dowolna baza danych, z której można korzystać przy użyciu surowych obiektów Json.

Tutaj jesteś. Kompletna gra internetowa napisana tylko przy użyciu javascript i HTML. Śliczny.

Tor Valamo
źródło
uważam, że twoja odpowiedź jest bardzo interesująca. Czy mógłbyś dać mi małą radę na temat tego, które części powinienem budować (są najważniejsze) od końca do końca i jakie technologie zasilają każdą część, przepraszam za to, po prostu próbuję wiedzieć, jak zbudować coś niezawodnego . Dzięki!
arrrrgv
1
+1, HTML5 to moda, ale ludzie przypisują jej głównie funkcjonalność 4.01 i JavaScript. Czy mogę jednak poprosić cię, abyś nie nazywał JavaScript łatwym? Ma swoje zalety, ale jeśli chcesz pisać prawdziwe programy, musisz być prawdziwym programistą. JavaScript eliminuje obowiązki związane ze zmiennymi deklaracjami i zarządzaniem pamięcią, ale nie ułatwia organizowania kodu, obliczania algorytmów i struktur danych, a do tych zadań zdecydowanie potrzebujesz nastawienia i doświadczenia programistów.
aaaaaaaaaaaa
@eBusiness rozumiem przez to, że program jest tak skondensowany, a przypadki użycia są udokumentowane na śmierć. Zawsze możesz znaleźć samouczek lub funkcję, która robi to, co chcesz. I jest łatwy w konfiguracji (nie musisz, jest już w przeglądarce).
Tor Valamo,
@arrrrgv zaktualizował post z odpowiedzią na twoje pytanie
Tor Valamo
1
+1 za miłą odpowiedź, choć wątpię, czy wzrost liczby gier HTML5 ma coś wspólnego z JavaScriptem po stronie serwera. Ściśle mówiąc, JS nie jest nawet częścią HTML5. Myślę, że to nowe funkcje, takie jak canvas, webGL, audio i wideo oraz lokalna pamięć masowa, które przyspieszają gry HTML5. I oczywiście fakt, że jest nowy i podniecony, więc wszyscy wskakują na modę.
bummzack,
3

Spójrz na artykuł na http://smus.com/multiplayer-html5-games-w--node, a także źródło dostarczone z tym artykułem. Pamiętaj, że używa to również JavaScript do pracy w sieci.

FrenchyNZ
źródło
2
Napisz „JavaScript” jako pojedyncze słowo, aby uniknąć nieporozumień.
o0 ”.
Pewnego dnia Node.js nie będzie konieczne - gdy obsługa wielu przeglądarek dla gniazd sieciowych jest powszechna.
Inżynier,
Nie rozumiem, dlaczego obsługa gniazd sieciowych w różnych przeglądarkach zmieniłaby potrzebę komponentu serwera poza jakąkolwiek przeglądarką. Zawsze należy zaprogramować grę wieloosobową, aby klienci łączyli się z serwerem centralnym, a nie bezpośrednio między klientami.
jhocking
1
Zobacz także NowJS ( nowjs.com )
Tim Holt
gniazda sieciowe są z natury niebezpieczne dla dowolnej aplikacji, dlatego tak wiele przeglądarek porzuciło planowaną implementację. nie możesz pozwolić środowisku, które ma dostęp do „w dowolnym miejscu”, a jednocześnie może pobierać dane z „w dowolnym miejscu”.
Tor Valamo