Executer une tache à la seconde près

Bonjour,

Je travaille sur un jeu, ou des camions livrent des marchandises. L’idée
c’est un jeu “temps réel”, c’est à dire qu’une journée est une journée,
et
qu’en une heure le camion ne parcoura que 80km (pour peu qu’il roule Ã
80km/h, vous l’aurrez compris).

A n’importe quel instant, un joueur peut démarrer la mission du camion.
Le
camion part donc, et arrivera à un instant précis à sa destination.
Comment
faire pour mettre à jour la base (gérée par ActiveRecord bien sur) à cet
instant précis ?

Si je veux travailler à la minute, je peux imaginer une tâche et un cron
qui
selectionne tous les camions censés être déjà arrivé (heure d’arrivée
prévue
<= heure courante) et qui ne sont pas effectivement arrivé (status == en
route) et je les fait arriver (statut = arrivé, heure d’arrivée = heure
d’arrivée prévue). Ensuite à moi d’être sur que cette tache prenne moins
d’une minute, ce que j’imagine largement faisable.

Pour le faire à la seconde près je vois vraiment pas comment faire.
J’imagine un process toujours vivant (donc pas de cron) qui scrute en
boucle
mais j’imagine mal faire une requete par seconde rien que pour voir ce
qui
doit etre mis à jour, et ensuite balancer en rafale les modifs à faire.

Je joue pas mal à Travian (pub gratuite pour un jeu de stratégie/guerre
très
bien fait (-; ) et eux ils ont les événements à la seconde près. Un
simple
script javascript donne un compte à rebours (on voit quand les armées
arrivent), et à l’instant ou elles sont censées arriver, la page fait un
reload automatique (toujours via javascript) et rafraichit la page :
l’armée
est arrivée. Evidemment, si à cet instant on n’est pas connecté, l’armée
arrive également donc ce n’est pas le javascript qui déclenche
l’événement.

Voilà , si vous avez des idées de conception, je suis preneur !

Merci (-:

gUI


Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/

Sans doute que dans ton cas, un backend sous forme de base de données
relationnelles n’est pas la bonne solution… Ou alors, ça te semble
fait en temps réel sur Travian, mais ça n’en est pas vraiment.

++

yk

Le 18 octobre 2008 17:08, Guillaume B.
[email protected] a écrit :

Sans doute que dans ton cas, un backend sous forme de base de données
relationnelles n’est pas la bonne solution…

Possible, mais alors quelles sont les alternatives ?

Ou alors, ça te semble
fait en temps réel sur Travian, mais ça n’en est pas vraiment.

Si c’est clair : je me suis déjà fait attaquer, et à la seconde près
j’ai
reçu les infos dans ma boite à lettres, mes villages ont subit
l’attaque,
mes troupes ont subit des pertes etc. C’est clairement à la seconde près
dans le jeu.

gUI


Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/

Le 18 octobre 2008 17:22, Guillaume B.
[email protected] a écrit :

Sans doute que dans ton cas, un backend sous forme de base de données
relationnelles n’est pas la bonne solution…

Possible, mais alors quelles sont les alternatives ?

Un démon qui tourne en arrière plan, que t’interroges via drb, socket,
REST ou autre ? La bdd peut servir de “backup” à tes données en
mémoire.

++

yk