JeuWeb - Crée ton jeu par navigateur
tâche automatique - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : tâche automatique (/showthread.php?tid=590)

Pages : 1 2


tâche automatique - maniaco_jazz - 01-01-2007

Bonjour,

Voici la situation :
Je voudrais mettre en place un système d'incendie dans mon jeu.
Une unité déclenche un incendie sur une case forêt, et je voudrais que mon incendie se "propage" automatique sur 1 case adjacente toutes les N heures.

Une table de ma base possède tous les incendies avec leur position.

Ainsi, la première chose que je vois est que j'ai besoin de mettre à jour automatiquement ma table d'incendie toutes les N heures.

Est-ce que quelqu'un aurait une solution même déviée ?

Merci et bonne année 2007 Wink


RE: tâche automatique - Michu - 01-01-2007

Tu peu utiliser un cron : http://www.webcron.org/

mais tu peux faire un test a chaque fois qu'un joueur rafaraichi une page,


RE: tâche automatique - dark_vidor - 01-01-2007

mettre à jour aux nouvelle connexion des joueurs ... :heuuu:
verifier si action sur la case dite en feu avant de faire l'action :heuuu:


RE: tâche automatique - maniaco_jazz - 01-01-2007

J'avais pensé à faire cela à chaque connexion de joueur, mais cela ne risque-t-il pas de ralentir le chargement de la page ?

Ca veut dire tester chaque ligne de la table incendie à chaque connexion... Avec 3 incendies, je veux bien, mais avec par exemple 50 incendies ca risque de faire beaucoup de traitement à chaque connexion... nan ?

Je vais étudier le webcron, sinon j'utiliserai la technique précédente.

Merci de votre aide :respect:


RE: tâche automatique - Loetheri - 01-01-2007

Je te déconseille le webcron ;-)
Tu sauvegardes la dernière mise à jour lorsque quelqu'un se connecte. Si elle n'a pas eu lieu pendant l'heure, tu mets à jours. Sinon tu ne fais rien.


RE: tâche automatique - dark_vidor - 01-01-2007

maniaco_jazz a écrit :Avec 3 incendies, je veux bien, mais avec par exemple 50 incendies ca risque de faire beaucoup de traitement à chaque connexion... nan ?

Tout dépends en fait de ta table et de ta requete :heuuu: ça peut etre très rapide quelques centièmes de milliseconde ... inperceptible (h)


RE: tâche automatique - maniaco_jazz - 06-01-2007

Etant simplement une fonctionnalité sur papier pour le moment, le traitement des incendies serait quelque chose comme :

Code :
récupérer toutes les occurences de la table incendie;
Pour chaque ligne de la table incendie
    si c'est la fin du temps alors
        choisir une case adjacente;
        insérer une ligne dans la table incendie;
    Fin si
Fin pour

Donc cette procédure, exécutée à chaque connexion va parcourir toute la table incendie, et si la condition est vérifiée, alors on insère une ligne supplémentaire dans cette table.
Ca fait donc 1 SELECT et éventuellement N INSERT (N étant le nombre de lignes)
Je ne me rend pas bien compte du temps de ce traitement. Mais je verrai :good:


RE: tâche automatique - Shidame - 06-01-2007

Une idée serai de mettre a jour la propagation de l'incendie au moment ou quelqu'un arrive dans la zone (je sais pas trop comment ca marche ton jeu ;p)
Mais imaginons un incendie case x:2 y:4 a T=1
tu stokes le temps en base de donnée.

Arrive un joueur a T=6 dans la zone cad proche de x:2 et y:4 (tout depend de son champs de vision.

Et tu mets a jour l'incendie en question, je pense que ca limiterai la requete.


RE: tâche automatique - dark_vidor - 06-01-2007

hum j'emmet une reserve par rapport a ce qu'il veut ...

si j'ai bien compris de T=1 a T=6 le feu se propage de 5 cases ...

je proposerais de tester tous les timestamp depasse et de mettre a jour que les timestamp qui sont depassé (ça doit pouvoir tout se faire dans 2 requetes un SELECT et un UPDATE Wink)


RE: tâche automatique - maniaco_jazz - 06-01-2007

Exact Dark_vidor,

Quand je parle que le feu se propage, concrètement, c'est une case SUPPLEMENTAIRE qui est en feu...

Donc si je commence à T=1, à T=6, il y aura 6 incendies sur 6 cases.

Je n'ai pas encore commencé à coder cette fonctionnalité (j'en suis loin d'ailleurs Smile ) mais je vais utiliser la méthode du timestamp qui semble la plus appropriée, je vous tiendrai au courant des résultats Wink