03-07-2015, 09:04 PM
Perso, je ferai ainsi:
• Lancer l'appel ajax pour dire au serveur "je veux aller à l'étape 2"
• Lancer l'animation de mouvement sans attendre le retour de l'appel ajax (normalement, les vérifications de base ont été faites coté client, aka si l'utilisateur n'a pas triché, il n'a pu demander le déplacement que s'il y était autorisé, donc l'utilisateur légitime n'aura pas de "faux départ" de son personnage)
• Si l'animation se termine avant le retour de l'ajax, afficher un indicateur comme quoi le réseau traîne les pieds (sablier ou autre, faut que le joueur pige que c'est le réseau qui est lent, pas le jeu)
• Lorsque l'appel ajax revient, attendre la fin de l'animation
• Lorsque l'appel ajax est revenu et l'animation terminée, poursuivre
Ainsi, je pense qu'on aura un résultat dynamique, sans pour autant avoir de risque de "retours arrières" ou de pauses inexpliquées dus à la latence réseau.
Après, si les déplacements venaient à être long (plusieurs minutes ou heures), j'aurai tendance à mettre en place un système de "callback" (Holowood Principle appliqué au gameplay :p ): on lance son ordre de déplacement, on va faire autre chose, et quand le personnage est arrivé, on reçoit un mal/tweet/SMS pour nous le dire (mais faut que ce genre d'option puisse être désactivée, et qu'elle ne s'applique que pour de longues tâches genre un ou plusieurs jours).
• Lancer l'appel ajax pour dire au serveur "je veux aller à l'étape 2"
• Lancer l'animation de mouvement sans attendre le retour de l'appel ajax (normalement, les vérifications de base ont été faites coté client, aka si l'utilisateur n'a pas triché, il n'a pu demander le déplacement que s'il y était autorisé, donc l'utilisateur légitime n'aura pas de "faux départ" de son personnage)
• Si l'animation se termine avant le retour de l'ajax, afficher un indicateur comme quoi le réseau traîne les pieds (sablier ou autre, faut que le joueur pige que c'est le réseau qui est lent, pas le jeu)
• Lorsque l'appel ajax revient, attendre la fin de l'animation
• Lorsque l'appel ajax est revenu et l'animation terminée, poursuivre
Ainsi, je pense qu'on aura un résultat dynamique, sans pour autant avoir de risque de "retours arrières" ou de pauses inexpliquées dus à la latence réseau.
Après, si les déplacements venaient à être long (plusieurs minutes ou heures), j'aurai tendance à mettre en place un système de "callback" (Holowood Principle appliqué au gameplay :p ): on lance son ordre de déplacement, on va faire autre chose, et quand le personnage est arrivé, on reçoit un mal/tweet/SMS pour nous le dire (mais faut que ce genre d'option puisse être désactivée, et qu'elle ne s'applique que pour de longues tâches genre un ou plusieurs jours).