28-03-2017, 02:59 PM
Hello !
@Ter Rowan : l'idée est intéressante si le champ random est actualisé par les actions utilisateurs (et après on applique ce % lors de la mise à jour globale) mais ça ne peut pas fonctionner dans le cas présent car tous les enregistrements auront la même valeur.
@Metallique : d'après ce que je comprends de ce que tu souhaites, je pense que la solution de Xénos est appropriée dans ton cas car tu as besoin d'un traitement dédié à chaque enregistrement. Du coup tu es obligé de faire plein de requêtes, les passer en procédures stockées te permettra d'économiser des temps de transfert et certains calculs intermédiaires entre la base et l'application.
N'étant pas très fan des procédures stockées je te propose une autre approche, pas forcément mieux mais différente.
Tu dois probablement pouvoir faire un gros SELECT qui te ressort toutes les ressources disponibles ensuite c'est un problème algorithmique. Si tu connais ta population totale, tu sais combien de ressources de chaque type tu attends, il est alors facile de savoir si tout le monde est satisfait.
Après je pense qu'il faut prioriser les populations à nourrir en premier.
Ex : avec 40 serfs, 40 artisans et 20 bourgeois. Si tu en nourris 80, la répartition peut être 30 / 35 / 15 (-20% pour tout le monde) ou 40 / 40 / 0 (-20% pour 1/5 et +20% pour 4/5), la répartition du moral ne sera pas la même.
C'est vrai que c'est assez général mais c'est une idée.
Tu peux ajouter un champ aux personnages indiquant l'heure de récupération des ressources au moment de l'attribution. Ensuite tu comptes le nombre d'entre eux (par population) qui n'ont pas été mis à jour. Mais, de toutes façons, tant que tu as un rand() individuel à appliquer, tu auras forcément un update par personnage.
@Ter Rowan : l'idée est intéressante si le champ random est actualisé par les actions utilisateurs (et après on applique ce % lors de la mise à jour globale) mais ça ne peut pas fonctionner dans le cas présent car tous les enregistrements auront la même valeur.
@Metallique : d'après ce que je comprends de ce que tu souhaites, je pense que la solution de Xénos est appropriée dans ton cas car tu as besoin d'un traitement dédié à chaque enregistrement. Du coup tu es obligé de faire plein de requêtes, les passer en procédures stockées te permettra d'économiser des temps de transfert et certains calculs intermédiaires entre la base et l'application.
N'étant pas très fan des procédures stockées je te propose une autre approche, pas forcément mieux mais différente.
Tu dois probablement pouvoir faire un gros SELECT qui te ressort toutes les ressources disponibles ensuite c'est un problème algorithmique. Si tu connais ta population totale, tu sais combien de ressources de chaque type tu attends, il est alors facile de savoir si tout le monde est satisfait.
Après je pense qu'il faut prioriser les populations à nourrir en premier.
Ex : avec 40 serfs, 40 artisans et 20 bourgeois. Si tu en nourris 80, la répartition peut être 30 / 35 / 15 (-20% pour tout le monde) ou 40 / 40 / 0 (-20% pour 1/5 et +20% pour 4/5), la répartition du moral ne sera pas la même.
C'est vrai que c'est assez général mais c'est une idée.
Tu peux ajouter un champ aux personnages indiquant l'heure de récupération des ressources au moment de l'attribution. Ensuite tu comptes le nombre d'entre eux (par population) qui n'ont pas été mis à jour. Mais, de toutes façons, tant que tu as un rand() individuel à appliquer, tu auras forcément un update par personnage.
Keltaïnen