Tu peux aussi virer l'aléatoire, ce qui simplifie la compréhension du jeu, son code, et son équilibragge:
où Patients(T0) et T0 sont stockés dans la BDD (nb de patients à la date T0 passée), niveau_hopital est également stocké dans la BDD, K(niveau_hopital) est une fonction à déterminer qui définit le nb de patients rajoutés par seconde en fonction du niveau de l'hôpital (ie: c'est la fonction qui est le coeur de l'équilibrage de ton gameplay) et Patients(T) est le nombre de patients à l'instant T de visite de la page. Cette valeur Patients(T) n'a même pas besoin d'être sauvée en BDD (elle n'a besoin de l'être que si un patient a été traité ou tout autre évènment de ce style entre T0 et T comme un changement de niveau de l'hôpital).
Après, soit tu stockes ce nombre (Patients(T0)) en FLOAT ou DOUBLE, et tu l'arrondis à l'inférieur à l'affichage (ie: dans la BDD, on aura 1.75 patients, à l'affichage on n'en verra que 1, mais le prochain n'est pas loin), soit tu le stockes en INT mais tu ajuste le T0 pour ne pas perdre de patients lors de l'arrondis (je trouve que c'est se faire chier pour rien, la 1ere idée me semble meilleure).
Note qu'en jouant bien sur la fonction K(), tu peux ne pas faire du linéaire. Il te suffit d'une fonction strictement croissante (si tu ne veux pas "perdre" de patients par moments). Par exemple (n = niveau de l'hopital):
Je ne sais pas trop ce que cela donnera, mais c'est possible. L'idée là est d'avoir des heures "creuses" (quand sin(T/3600) ~= 0) et des heures "pleines" (quand |sin(T/3600)| ~= 1)
Code :
Patients(T) = Patients(T0) + K(niveau_hopital)*(T-T0)
où Patients(T0) et T0 sont stockés dans la BDD (nb de patients à la date T0 passée), niveau_hopital est également stocké dans la BDD, K(niveau_hopital) est une fonction à déterminer qui définit le nb de patients rajoutés par seconde en fonction du niveau de l'hôpital (ie: c'est la fonction qui est le coeur de l'équilibrage de ton gameplay) et Patients(T) est le nombre de patients à l'instant T de visite de la page. Cette valeur Patients(T) n'a même pas besoin d'être sauvée en BDD (elle n'a besoin de l'être que si un patient a été traité ou tout autre évènment de ce style entre T0 et T comme un changement de niveau de l'hôpital).
Après, soit tu stockes ce nombre (Patients(T0)) en FLOAT ou DOUBLE, et tu l'arrondis à l'inférieur à l'affichage (ie: dans la BDD, on aura 1.75 patients, à l'affichage on n'en verra que 1, mais le prochain n'est pas loin), soit tu le stockes en INT mais tu ajuste le T0 pour ne pas perdre de patients lors de l'arrondis (je trouve que c'est se faire chier pour rien, la 1ere idée me semble meilleure).
Note qu'en jouant bien sur la fonction K(), tu peux ne pas faire du linéaire. Il te suffit d'une fonction strictement croissante (si tu ne veux pas "perdre" de patients par moments). Par exemple (n = niveau de l'hopital):
Code :
K(n,T0,T) = n+sin²(T/3600)
Je ne sais pas trop ce que cela donnera, mais c'est possible. L'idée là est d'avoir des heures "creuses" (quand sin(T/3600) ~= 0) et des heures "pleines" (quand |sin(T/3600)| ~= 1)