13-03-2013, 04:48 PM
Citation : Mais le joueur peut utiliser ton code d'ouverture de socket, il n'a qu'a simplement remplacer les handlers par les siens ... Du coup tu ne sais pas s'il vient d'ouvrir une page ou si c'est une reconnexion.
Oui imaginons, le joueur injecte io.connect() et ensuite ? Que peut-il faire mise à part dégrader sa vue client sans interagir sur les autres clients ?
Ca fera peut être planter mon code mais je peux savoir s'il s'agit d'une reconnexion car je n'utilise pas les rooms socket.io (pas pour les sessions de jeu en tout cas, seulement pour les chats privés). J'ai une grosse surcouche par dessus et je peux parfaitement vérifier s'il est déjà connecté dans une room.
Là de tête je sais comment faire planter facilement. Sur la socket 'move', j'ai pas prévu de cas alternatif si tu envoies autre chose que 0, 1, 2 ou 3. Mais je suis pas encore rentré dans la phrase tests unitaires + intégration (tester socket.io ça va être drôle).
Citation : Donc le truc c'est que toi tu n'as pas de bd derriere et que tu ah juste un serveur node, du coup tu mets a jour la variable coté node et c tout? forcement c plus rapide, en plus de l'utilisation des ws, je comprends que ça lag moins34
Oui je fais qqes requêtes de temps à autre. Niveau vitesse ça ne change rien car c'est asynchrone et je n'ai pas besoin d'attendre l’exécution d'une requête pour continuer.
Citation :Pour bombermine, hote moi d'un doute, je suis habitué a push avec pubnub (n'ayant pas d’hébergement autre que mutu pour l'instant), qui lui utilise le longpolling, du coup y a tjs une trace de requête qui tourne en boucle dans firebug, hors là pour bombermine, je ne vois absolument rien dans firebug, les websocket ne laisse pas de trace?
j'avoue qu'il y a l'air d'avoir pas mal de joueur syncro en meme temps, et ça marche plutot bien...
Oui c'est des WS. En fait je pense qu'autre chose que des WS en production ça doit pas être terrible. Tous les jeux du genre utilisent les WS (cf. browserquest aussi) sans s'occuper de fallbacks
Citation :autant je comprends qu'on envoie au serveur le mouvement, autant je me pose la question du serveur vers le client
pas de soucis pour setDirection
mais pourquoi move, et pas trajectoire= (x, y)(x2,y2), ... charge au client de gérer le déplacement, en fonction de qui il est :
- si client = joueur du personnage à déplacer alors "téléportation" sur position définitive, normalement sauf lag, la prédiction fait qu'il n'y a pas de téléportation, on est déjà au bon endroit
-si client = autre joueur alors animation pour chaque case.
au moins ainsi on revient à une égalité (asynchrone) serveur / client
si on fait que des mouvements relatifs (donc jamais x,y, mais que direction) on ne revient jamais à une égalité (si y a un souci)
je me trompe quelque part ?
Je comprends pas trop lol. Dans mon cas il n'y a pas de prédiction