JeuWeb - Crée ton jeu par navigateur
Liste unités en cour création ? comment faire - 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 : Liste unités en cour création ? comment faire (/showthread.php?tid=3155)



Liste unités en cour création ? comment faire - Siko - 17-03-2009

Voila j'arrive au dernier script de mon jeu qui est la création des unités, je l'avait laisser de coter pensant trouver une solutions pendant que je codait le reste mais finalement rien..

Je suppose que certains ont déjà rencontrer ce problème la.. je dois gérer la créations des unités de mes joueurs. Sur le papier c'est simple en réalité c'est plus compliquer Confused

En effet l'idéal serait que les unités se créait au fur et a mesures, c'est a dire que si ils créait 100 unités, ils ne faut pas qu'il attendent que ces 100 unités soit crée pour qu'elles apparaissent dans sa base mais qu'elles apparaissent donc au fur et a mesures.

Mais la ce crée le problème du stockage dans la bdd.

J'ai vu deux solutions, et pas mal de dérivé de ces deux la.

La première est de mettre le nombre total d'unité a crée, et la fin du temps de création de la première. On update pour mettre a jour la fin de la prochaine création d'unité et le nombre d'unités restant a crée.
Le problème se situe au niveau du temps, par exemple si entre deux mises a jour de la table (Je lance ces mises a jour a chaque fois qu'un joueur lance une page) il y a eut le temps pour crée 2 unités la devient galère. J'ai alors penser a mettre le timestamps de la dernière mis a jour et calculer si y'a eut le temps de crée une unité.. le problème est que si il n'y a pas des mises a jour régulière le timestamp risque d'être décaler.

Deuxième solution, stocker dans ma tables les unités une par une, si je crée 1000 unités ca me fait 1000 ligne dans ma table, et la c'est plutôt le nombre de ligne au final dans ma table qui me pose problème, aussi pour ce cas la j'ai penser pour améliorer les perf passer par une table memory mais le problème c'est que c'est volatiles et que si le serveur plante on perd tout grrr

Au final je galère je voudrais pas faire un truc bancale et ce petit problème me fait prendre pas mal de retard sur mon projets :-(


RE: Liste unités en cour création ? comment faire - Ter Rowan - 17-03-2009

avec le timestamp :

supposons un seul joueur connecté
supposons qu'une unité se crée toutes les deux minutes



le joueur lance la création de 100 unité puis se déconnecte (timestamp = t0)
tu stockes en base :

100 unités lancées à t0 (table "encoursdecreation")

10 minutes plus tard il se reconnecte (timestamp = t1 = t0 + 10)

on regarde dans la base

on voit 100 unités / t0


tu fais
t1-t0 = 10
10 / 2 = 5 unités crées

tu positionnes les 5 unités en base au bon endroit
et tu update ta table "encoursdecreation"

=> au lieu de 100 / t0 tu arrives a 95 / t1

après il suffit d'élargir à du multijoueur, du multi temps de prod (fonction des unités), etc..


RE: Liste unités en cour création ? comment faire - Siko - 17-03-2009

Sauf que la le problème est que si une unité ce crée en 2 heures et que le joueur ce reconnecte au bout de 2h30 le temps restants sera tout de même de 2 heures.. et pas de une demie heure sur la seconde unité.

Car si le joueur lance a 00h00 2 unité qui dure deux heures.

il ce reconnecte a 2h30, on ajoute 1 unité dans sa base et on met a jour le timestamp a 2h30.. ah 4h01 il ce reconnecte logiquement il devrait avoir ces deux unité non ? sauf que ca fait que 01h31 que le timestamps a été mis a jour..


RE: Liste unités en cour création ? comment faire - Ter Rowan - 17-03-2009

et bien, il faut compter en valeur entiere :


à t0 on lance la prod de 100 unités (1 unité = 2h00)

à t1 = t0+5h on se reconnecte

conclusion 5h /2h = 2.5

==> 2 unités créées, la troisième a démarré au bout de 4h

==> en base t0 + 2*2h = t0+4h prod de 98 unités

le tout n'est pas de stocker le timestamp de connection mais le temps consommé pour finir une production


RE: Liste unités en cour création ? comment faire - Siko - 17-03-2009

Hum je voit le truc.. j'avais pas penser a ca mais maintenant ca me parait une évidence en fait ^^ Merci bien Wink


RE: Liste unités en cour création ? comment faire - Ter Rowan - 17-03-2009

de rien de rien ^^

je prends juste 50% de la redevance pub/ des allos pass/etc.. de ton site

bein sûr je te laisse 30% des dons et autres financement via goodies , etc...