16-11-2013, 07:58 PM
(15-11-2013, 10:17 PM)Poubi a écrit : Salutations,
En fait, Ogame doit probablement pré-calculer toutes les ressources, je m'explique :
- Tu as 1000 planches de bois, et tu en gagne 50 planches de bois par heure. Tu sais donc dans une heure que tu auras 1050 planches de bois. Si la base de données est bien conceptualisée, concrètement tu as donc StockDeBois = 1000 et StockDeBoisHPlus1 = 1050.
- Imaginons, tu construis une maison en bois, qui te coûte 230 planches de bois, tu auras donc StockDeBois = 770 et StockDeBoisHPlus1 = 820.
- Une heure plus tard, tu écrases donc ton StockDebois par StockDeBoisHPlus1, ceci fait donc StockDeBois = 820 et StockDeBoisHPlus1 = 820. (Un simple UPDATE StockDeBois = StockDeBoisHPlus1 FROM Ressources dans SQL en mode transactionnel)
Visuellement, tout est géré par JavaScript, je pense qu'un peu de localstorage ou de cookie font l'affaire. Quelques variables dont un timer et un delta et le tour est joué. Imaginons que tu souhaites carrément indiquer ton stock de planches de bois par minute, le calcul est simple : 50/60 = 0.56, tu ajoutes ceci toute les minutes et tu affiches la valeur tronquée, le tour es joué.
Cordialement,
Poubi.
Je vois mal l'utilité d'une seconde cellule "HPlus1" qui encombre la DB alors que le calcul pour obtenir cette valeur est assez simple. A vrai dire, j'aurais plus vu un "LastUpdate" qui détermine la dernière mise à jour des données dans la DB, et à chaque load de page du joueur/achat/sonde ennemie (dans le cas d'un Ogame), les données de DB s'updatent en calculant le gain depuis la dernière Update.
Au niveau visuel, il est clair qu'il vaut mieux faire ça en local via JS.