26-09-2010, 10:21 AM
À toi de voir comment tu modélises ton graphe, et si tu peux ou non travailler avec des sous-graphes (à moins que le mec ne puisse cliquer à l'autre bout du monde, je ne connais pas tes besoins).
Tu dis que tu n'as pas besoin de temps réel, mais une solution comme la suivante serait-elle envisageable :
Bien sûr, ça implique d'avoir un serveur sur lequel tu as le droit de créer des processus, je ne sais pas si on peut sur du mutualisé.
De plus, tout ceci ne te sers qu'à déterminer le chemin, après, il faut gérer un déplacement, deux cas de figure :
Dans le premier cas, tu vas vraiment en chier, dans le second c'est très simple.
Sephi-Chan
Tu dis que tu n'as pas besoin de temps réel, mais une solution comme la suivante serait-elle envisageable :
- Je choisis mon unité et sa destination ;
- Je reçois un message genre "Déplacement en cours…" sans vraiment de détail (je n'ai même pas l'heure d'arrivée puisque le calcul n'est pas encore effectué), on a une petite requête Ajax (n'allons pas compliquer ça avec du push tout de suite) exécutée toutes les 10 secondes (c'est arbitraire) capable de déterminer si le calcul d'itinéraire est terminé pour afficher plus de détail (la durée du trajet, notamment) ;
- Côté serveur, l'application génère un processus dans laquelle la résolution du chemin est effectuée (on a vu que c'est une tâche longue, donc l'inclure dans le processus de génération de la page de réponse n'est pas envisageable si l'on travaille sérieusement), avec un passage de flag à true pour que notre requête Ajax suscitée sache que le calcul est terminé ;
Bien sûr, ça implique d'avoir un serveur sur lequel tu as le droit de créer des processus, je ne sais pas si on peut sur du mutualisé.
De plus, tout ceci ne te sers qu'à déterminer le chemin, après, il faut gérer un déplacement, deux cas de figure :
- Le déplacement doit être granulaire dans l'espace et le temps : c'est le cas si l'on veut un système où passer dans certains endroit peut provoquer des événements (exemple, si je passe par une route dans la forêt, je peux me faire attaquer par des bandits). La gestion dans le temps est d'autant plus capitale si tu veux permettre aux joueurs d'assurer le rôle des bandits (avec un message sur leur panneau de jeu du genre "un convoi arrive près de vous") ;
- Le calcul servait juste à déterminer le temps de trajet et tu considères que le déplacement sera terminé (et l'unité passera directement du point de départ au point d'arrivée à l'heure prévue).
Dans le premier cas, tu vas vraiment en chier, dans le second c'est très simple.
Sephi-Chan