Est-il possible de développer des jeux multijoueurs avec HTML5?


9

Je sais que HTML5 est idéal pour les jeux Web, mais je ne sais pas vraiment s'il est possible de développer des jeux en ligne avec plusieurs utilisateurs, de garder tout le monde synchronisé et de gérer les connexions, et cetera. Est-il possible de faire cela?

Réponses:


7

Vous ne pouvez pas l'écrire avec HTML5 seul. Vous aurez toujours besoin de scripts et d'un serveur pour gérer la communication entre les utilisateurs, en raison des limites de sécurité des scripts de navigateur, et également pour éviter la triche.

Beaucoup de gens ont écrit des jeux multijoueurs html5, même moi. L'utilisation de html5 lui-même n'est probablement pas la partie la plus importante de celui-ci. La plupart des éléments nécessaires (sinon tous) sont également disponibles en html 4.01. L'exception est le canevas, mais le canevas est plus lent que svg, et svg était déjà disponible dans de nombreux navigateurs.

Je pense que ce qui a vraiment engendré la manie du "jeu html5" est la possibilité de créer des applications côté serveur en javascript. Cela signifie que tous les programmeurs côté client peuvent soudainement créer l'intégralité du système eux-mêmes, et ils sont généralement les gens créatifs quand il s'agit de choses comme les jeux. Sans oublier que JS est si facile que même votre grand-mère pourrait programmer avec. Peut être.

Mise à jour après commentaire de OP:

Une architecture commune pour un jeu par navigateur serait

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

Ou en termes de "langues" réelles:

  • Vue client: HTML5 (peut-être avec angular.js, je n'ai pas encore testé sa vitesse avec LOTS. Consultez également raphael.js pour les "graphiques")
  • Logique client: JavaScript (jquery / vapor / plain / any)
  • Base de données client: WebSQL (partie de la "suite" HTML5 je suppose)
  • Communication: JSON (notation d'objet Javascript, essentiellement des objets javascript sérialisés) sur socket.io (bibliothèque JS pour détecter automatiquement les protocoles de communication optimaux)
  • Langue du serveur: également JS (node.js si vous avez des TONNES d'utilisateurs simultanés sur quelques cœurs, d'autres solutions sont également disponibles)
  • Validation: assurez-vous simplement que vos données de jeu ENTRANT (du client) sont valides. Sortant n'a pas besoin d'être vérifié, même pas sur le client. Il est supposé correct. Toujours .
  • Game World: une collection de données VERIFIÉES qui sont redistribuées à tous les clients au fur et à mesure de leur entrée
  • Base de données du serveur: couchdb, mongodb, quelle que soit la base de données qui vous donne des objets json bruts avec lesquels travailler.

Te voilà. Un jeu Internet complet écrit uniquement en utilisant javascript et html. Charmant.


Je trouve votre réponse très intéressante, pourriez-vous me donner un petit conseil sur les pièces que je dois construire (sont les plus importantes) de bout en bout et les technologies qui alimentent chaque pièce, désolé, juste essayer de savoir comment construire quelque chose de fiable . Merci!
arrrrgv

1
+1, HTML5 est à la mode, mais ce que les gens lui attribuent est principalement la fonctionnalité 4.01 et JavaScript. Puis-je vous demander de ne pas appeler JavaScript facilement? Il a ses avantages, mais si vous voulez écrire de vrais programmes, vous devez être un vrai programmeur. JavaScript supprime les tâches de déclaration de variables et de gestion de la mémoire, mais cela ne facilite pas l'organisation de votre code et les algorithmes de calcul et les structures de données, et vous avez certainement besoin d'un état d'esprit et de l'expérience des programmeurs pour ces tâches.
aaaaaaaaaaaa

@eBusiness ce que je veux dire par facile, c'est qu'il est tellement condensé en termes de programmation, et ses cas d'utilisation sont documentés à mort. Vous pouvez toujours trouver un tutoriel ou une fonction qui fait ce que vous voulez. Et c'est facile à configurer (vous n'en avez pas besoin, c'est déjà dans le navigateur).
Tor Valamo

@arrrrgv article mis à jour avec la réponse à votre question
Tor Valamo

1
+1 pour une bonne réponse, bien que je doute que l'essor des jeux HTML5 ait quelque chose à voir avec le JavaScript côté serveur. À proprement parler, JS ne fait même pas partie de HTML5. Je pense que ce sont les nouvelles fonctionnalités comme le canvas, le webGL, l'audio et la vidéo et le stockage local qui donnent un coup de pouce aux jeux HTML5. Et bien sûr, le fait qu'il soit nouveau et excité, donc tout le monde saute dans le train.
bummzack

3

Jetez un oeil à l'article à http://smus.com/multiplayer-html5-games-with-node et aussi à la source fournie avec l'article. Notez que cela utilise également JavaScript pour la mise en réseau.


2
Veuillez écrire "JavaScript" en un seul mot pour éviter toute confusion.
o0 '.

Un jour, Node.js ne sera pas nécessaire - lorsque la prise en charge multi-navigateur pour les sockets Web est répandue.
Ingénieur

Je ne vois pas pourquoi la prise en charge multi-navigateur pour les sockets Web changerait la nécessité d'un composant serveur en dehors de tout navigateur. Vous devez toujours programmer un jeu multijoueur afin que les clients se connectent à un serveur central, et non directement client à client.
jhocking

1
Consultez également NowJS ( nowjs.com )
Tim Holt

les sockets Web sont intrinsèquement dangereuses pour toute application, c'est pourquoi l'implémentation prévue a été abandonnée par de nombreux navigateurs. vous ne pouvez pas autoriser un environnement qui a accès à «n'importe où» et en même temps peut prendre des informations de «n'importe où».
Tor Valamo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.