JeuWeb - Crée ton jeu par navigateur

Version complète : raffraîchissement
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour,

Je travaille actuellement sur un cahier des charges de jeu de strategie en temps réel, multi-joueur en-ligne.
Cependant, quelque chose m'echappe.
Comment fait-on pour que les informations transitent instantanément d'un ordinateur vers l'autre, en multijoueur, de manière à ce que tout se passe en simultané sur tout les ecrans.
En php on pourrais envisager une cadence de rafraichissement des page tres soutenue, mais ça ne serait pas pratiqe du tout ! Y a-il d'autre moyen de procédé ?

Par exetension, comment ça se passe pour flash (par ex Dofus), pour javascript (genre les petits jeux de carte multijoueur en ligne), ou même pour un WoW ?

Merci a+
Chiffon
Pour le JavaScript, rafraichissement soutenu si je n'm'abuse. WoW, ça n'a plus rien à voir par contre xD

~L~
Concernant Javascript, c'est un rafraîchissement localisé de la page côté serveur ; ça utilise Ajax.

Pour Flash et Wow, je ne sais pas vraiment comment ça marche, je suppose qu'ils utilisent des sockets.


Sephi-Chan
normalement tu peux utiliser les sockets avec Flash sans installer rien du tout chez le client (à part bien sur le plug in flash...)
Dofus est en effet installé chez le client, cependant si ils voulaient ils pourraient ne pas le faire, le seul hic c'est que çà ferais beaucoup de bande passante pour leur serveur! Voilà pourquoi Dofus s'installe

Perso je suis en train de bosser sur une jeu en temps reel par socket en Flash. Je prévois cependant l'installation d'un pack graphique permetant d'alleger la charge du serveur.
A noter qu'il est possible de creer un pack graphique avec des technologie autre que Flash, çà peut etre une bonne methode pour aléger sa bande passante sans devoir passer à une offre superieur

Pour ce qui est du rafraichissement avec AJAX faut se rendre compte que c'est pas tip top car çà prend 2 fois plus de temps que les sockets:
- demande de page joueur 1 (0s)
- generation et acquisition page serveur (2s)
- nouveau délai de rafraichissement joueur 2 (3s max)
- generation et acquisition page serveur (2s)

Ce qui nous fait entre 4s et 7s de decallage entre les joueurs, et là le serveur n'est pas surchargé loin de là(pourtant tout les joueurs connecté demande une page toute les 3s déjà). Dans certains cas ce sera moins dans d'autre plus.
En tout cas avec 7s de decallage impossible de faire un jeu de shoot par exemple...
J'ai déjà fais le test il y a plus de 2 ans c'était marant de voir les perso bouger mais comme j'avais peu de joueur personne n'était connecté en meme temps, j'ai donc jugé çà assez inutile...
Celà dit le temps de 3s d'actualisation peut etre modifier selon des parametre, comme la distance entre joueur etc...


Avec les sockets, on peut faire:
transmission d'info joueur au serveur (2s)
transmission d'info serveur au joueur 2 (2s)

donc 4s environ si il y avais beaucoup à ecrire dans la bdd çà peut etre moins çà peut etre plus
NB: en tout cas le serveur sera moins surchargé car il n'aurra pas plein de joueur qui demanderont si il y a du nouveau... Ce sera lui qui le previendra directement ce qui est extrement plus efficace.
Je me demande meme si c'est pas possible de prevenir les autres joueurs dés le debut de l'info donné par le joueur faisant une modif ce qui ramene ce temps dans les 2 secondes grand max(puisqu'on avertit avant l'enregistrement en bdd)...
Enfin 2 secondes çà me semble beaucoup quand meme pour un jeu de shoot, mais pour certain jeu ou on concidere que l'important c'est de voir ce que font les autres, çà devient tout de meme très interressant.
Donc voilà pourquoi je me suis tourné vers une technologie proprietaire: elle est très efficaces et propose des trucs qu'acune autre techno largement accessible ne possede...


NB: ce que je viens de dire là c'est basé juste sur mon observation, peut etre y a t'il des methodes qui permette d'aller plus vite?
Un assez bon article sur comet chez Wikipedia.

Il fournit plusieurs liens intéressants et donne une foule d'infos sur la méthode et ses limitations.
Je suis moyennement rassuré par la méthode "comet". J'aime moyennement les scripts PHP qui tournent en boucle infinie, même si ce n'est pas totalement inadmissible il n'est clairement pas fait pour ça et la mémoire n'est pas gérée dans cette optique, donc je pense que ça doit plus écrouler les performances que les améliorer lors d'une montée en charge.

Il faudrait des tests chiffres à l'appui, je n'en ai pas trouvé Sad
Pas mieux que Naholyr.
Il y a pas mal d'articles qui remettent largement en question les performances en cas d'utilisation trop intensive.
D'autant plus, si on considère que (je cite)
Citation :web application developers mostly use several unintended side-effects of browser-native objects to build Comet

[edit]Damn, j'ai voulu refaire la mise en page et paf.. la moitié du message qui saute...[/edit]

Donc, ma conclusion était que je trouve cette techno prometteuse mais trop jeune pour l'utiliser de manière fiable pour le moment.
Maintenant, je ne pense pas que le nombre d'applis qui utilise Comet soit hallucinant. Ca reste de l'expérimentation à mon sens.

[re-edit]Je vois pas en quoi ça confirme quoi que ce soit oO [/re-edit]