JeuWeb - Crée ton jeu par navigateur
Modifier la vitesse d'évolution - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Gameplay, gamedesign (https://jeuweb.org/forumdisplay.php?fid=48)
+--- Sujet : Modifier la vitesse d'évolution (/showthread.php?tid=962)

Pages : 1 2


Modifier la vitesse d'évolution - Jeckel - 21-12-2010

Hello,

Voilà, j'ai quelques petites questions qui s'adresseront en particulier (mais pas seulement) aux expérimentés de développement de jeu (mais pas spécialement technique).

Voici mon cas d'école :

Soit, un personnage que l'on nommera Arthur souhaitant apprendre le tir à l'arc.
Soit, la compétence tir à l'arc qui s'apprend en temps normale avec durée de 10 jours.
Soit, des modificateurs tels que livres, professeurs, potions d'intelligence, artefacts d'incompétence pouvant modifier les temps d'apprentissage.
Soit, la possibilité t'interrompre l'apprentissage, et le reprendre plus tard, sans perdre la progression déjà acquise.
Soit, le cumul des modificateurs réduit leurs effets de manière à ne jamais descendre à un temps d'apprentissage de 0 ou inférieur.

Exemple 1 :
Arthur a déjà passé 5 jours à apprendre le tir à l'arc, il s'arrête pour aller apprendre à cuisiner la tarte au pomme parce qu'il a la dalle un truc de dingue, et plus tard il doit pouvoir reprendre l'apprentissage du tir à l'arc et ne pas perdre les 5 jours déjà investis.

Exemple 2 :
Arthur possède 4 livres (différents, et sur le tir à l'arc), 5 profs, 12 potions d'intelligence et 1 artefact d'incompétence. Un livre permet de réduire le temps d'apprentissage de 10%, un prof permet de réduire le temps d'apprentissage de 20%, une potion permet de réduire le temps d'apprentissage de 2% un artefact d'incompétence permet d'augmenter le temps d'apprentissage de 15% (ben oui, c'est pas forcément utile), bref le cumul ne doit pas faire 100% (autrement dit, le cumul n'est pas une somme, mais une fonction un peu plus complexe).

Bon, déjà, sachez que ces paramètres ne sont pas négociables, c'est une version simplifiée ici, mais c'est grosso modo ce que le comportement que je cherche à obtenir (autrement dit, la solution de ne pas faire de cumul, ne me convient pas)

Après réflexion, voici la solution que je pense mettre en place, que je vous soumet afin d'avoir vos avis d'expertise... (ou pas d'expertise, mais vos avis quand même) :

1. Je définis la compétence Tir à l'arc comme valant 14400 points de recherche (24 * 60 * 10).
2. Je définis que, sans modificateurs, 1 point de recherche correspond à 1 minute que l'on nommera t. (ce qui correspond au calcul ci-dessus)
3. Ainsi lorsqu'Arthur, suspend son apprentissage du tir à l'arc, j'enregistre le nombre de point de recherche déjà obtenu, pour pouvoir reprendre ensuite.
4. Les modificateurs modifient la durée d'apprentissage d'un point de recherche
5. Le cumul des modificateurs... c'est là que mes cours de math sont un peu lointain... je dirait que pour faire une courbe correcte il faudrait que ce soit un truc du genre :
- Modification avec un livre (-10%) = t - 10% * t = 90% * t = 0.9 minutes
- Modification avec deux livres = (1 - 10%)^2 * t = 81% * t = 0.81 minutes
- Modification avec trois livres = (1 - 10%)^3 * t = 72.9% *t = 0.73 minutes
- Modification avec 5 profs = (1-20%)^5 * t = 32.768% * t = 0.33 minutes

Bon, la formule n'est pas simple, mais pas insurmontable non plus... mais je n'ai pas d'autres idées... (si quelqu'un a envie de calculer le modificateur de l'exemple 2...)


RE: Modifier la vitesse d'évolution - niahoo - 21-12-2010

hmm je le prendrais à l'envers

de base 1 minute = 1 point.

avec deux livres à -10% de temps => (si les livres se cumulent simplement => 20% de points en plus par minute (1.2 * 1pt/m), si le second livre s'applique par dessus le premier = 1.10 * 1.10 * 1pt/m (soit 1.21...)

et donc ben t'as plus qu'à compter le nombre de minutes jusqu'à la fin de l'effet du 1er livre, puis du second, puis à la fin de l'apprentissage de la skill)

donc pour avoir le tir à l'arc il faut faire : 14400 / 1.21 = 685.7 minutes soit 685 min et 42 sec soit 11h25m42s [edit: ici les deux livres durent pendant l'apprentissage entier]

Bon, ça na diffère pas trop de ce que tu as fait mais ça me semble plus simple à « dessiner dans la tête »


RE: Modifier la vitesse d'évolution - Globe - 21-12-2010

Bah y'a pas vraiment d'alternative, par contre ton système me semble un peu étrange. Enfin personnellement je ne ferais pas une fonction utilisant des pourcentages mais plutôt des valeurs fixes. Si tu ne dois apprendre une compétence qu'une seule fois (que tu ne peux pas l'améliorer) les pourcentages ça peut le faire, mais si tes compétences peuvent être boostées. Genre compétence tir à l'arc niveau 1 puis 2 puis 3... Je passerais avec des valeurs fixes. Plus on est mauvais plus c'est facile de s'améliorer donc pour ton niveau 1 tu as 14400 points de recherche et pour le niveau 2 tu en as plus, avec une valeur en pourcentage ton livre, ou ton prof va toujours affecter les pourcentages de la même manière. Donc en gros 5 profs qui divisent le temps par deux pour ton niveau 1 vont le diviser par deux pour ton niveau 5 par exemple. Si y'a pas plusieurs niveaux, une valeur en pourcentage est inutile, et si y'a plusieurs niveaux ça parait très peu réaliste d'utiliser des pourcentages. J'ai l'impression de m'être exprimé comme un macaque donc je sais pas si je me suis fait comprendre Tongue


RE: Modifier la vitesse d'évolution - Jeckel - 21-12-2010

@nihaoo : j'aime bien ta façon de retourner le problèmes ça me semble effectivement mieux, j'vais étudier ça en détail... par contre, 14400 / 1.21 = 11900.8 ....

@Globe : j'avoue que j'ai du mal à te suivre...

Dans mon cas, chaque compétence est unique, je ne gère pas de niveau sur les compétences pour la raison suivante : certains items augmentent la vitesse d'apprentissage pour une compétence précise (un livre sur la cueillette de champignon n'aura aucun impacte sur l'apprentissage du tir à l'arc), d'autre pour un ensemble de compétence (le maitre d'arme permet de booster le tir à l'arc et le combat à l'épée, mais pas la cueillette de champignon) et d'autre enfin pour toutes les compétences (potion d'intelligence).
Enfin, pour tir à l'arc niveau 1 et tir à l'arc niveau 2, par exemple, ce seront deux compétence différente, car ce n'est pas le même livre qui permettra d'apprendre...

(et j'ai en plus une gestion de pré-requis assez poussée... genre tir à l'arc niveau 2 n'est possible que si on a tir à l'arc niveau 1, cueillette de champignon niveau 24, et rencontré l'elfe danseur nu dans la forêt de Rambouillet)


RE: Modifier la vitesse d'évolution - niahoo - 21-12-2010

hum... je me demande ce que j'ai bien pu taper pour arriver à ce résultat dans ma division Smile


RE: Modifier la vitesse d'évolution - Globe - 21-12-2010

Mais donc si chaque item n'a qu'une seule utilisation pourquoi ne pas simplement transmettre à ta fonction l'id de la compétence concernée et la quantité de points de recherche que cela ajoute, ça t'éviterais tout une phase de calculs non ? Sans rentrer dans ton système de prérequis tu pourrais simplement avoir ta table pour les compétences des joueurs, définir le total de points de recherche à avoir et le nombre de points que le joueur à débloqué. Quand tu appelles ta fonction tu transmet l'id de la compétence et le nombre de points que l'objet rajoute tu vires l'objet de l'inventaire et tu augmentes le nombre de points débloqué dans la table non ? Ça t'éviterais de passer par des pourcentages.


RE: Modifier la vitesse d'évolution - Ter Rowan - 21-12-2010

je rejoins un peu le principe de niahoo :

1) chaque élément modifiant l'apprentissage correspond à un % de modification => 100% = pas de modification, 50% = moitié de temps, 200% = doublement du temps

2) la modification complète est égal au produit des modificateurs

t = t0 * modif 1 * modif 2 * modif 3 * ...

ainsi pas de problème de temps négatif

exemple dans le cas

Citation :Arthur possède 4 livres (différents, et sur le tir à l'arc), 5 profs, 12 potions d'intelligence et 1 artefact d'incompétence. Un livre permet de réduire le temps d'apprentissage de 10%, un prof permet de réduire le temps d'apprentissage de 20%, une potion permet de réduire le temps d'apprentissage de 2% un artefact d'incompétence permet d'augmenter le temps d'apprentissage de 15% (ben oui, c'est pas forcément utile), bref le cumul ne doit pas faire 100% (autrement dit, le cumul n'est pas une somme, mais une fonction un peu plus complexe).

t = t0 * 0.9 ^4 (les bouquins) * 0.8^5 (les profs) * 0.98^12 (les potions) * 1.15 (l'artefact)

de là si tu estimes qu'il faut un temps de base t0 de 10 jours , le temps pour le type en question est

10jours * 0.9 ^4 * 0.8^5 * 0.98^12 * 1.15


(pas le temps de faire le calcul, je quitte le boulot, hihi)


RE: Modifier la vitesse d'évolution - Jeckel - 22-12-2010

@Globe : c'est un possibilité, mais dans ce cas, je ne gère pas la suspension de l'apprentissage... je voudrais que, par exemple, lorsque le joueur commence à apprendre avec un livre, on tient compte de l'effet du livre, il suspend l'apprentissage, reprend plus tard, mais cette fois-ci il n'a plus le livre... dans ce cas, le livre ne dois avoir eut qu'un effet "partiel"... Ou alors il faut que je recalcule la part de l'effet du livre en fonction de la part de l'apprentissage réalisé avec celui-ci par rapport à la part réalisé sans, etc... ça ne me semble pas plius simple.

@Ter Rowan : c'est en gros la même chose que ce que j'ai proposé non ? quand je dis -10% c'est la même chose que 90% du temps prévu, non ?

Bon, sinon, j'ai réfléchis cette nuit, et je pense m'orienter pour l'instant sur la proposition de Niahoo qui a en plus l'avantage de prendre le temps comme référence... et lorsque l'on rafraichis la page, pour calculer l'avancement, on se base bien sur le temps écoulé entre deux rafraichissements... bref, ça me semble pas mal adapté, et semble répondre à toutes mes contraintes.

Mais si vous avez d'autres idées, n'hésitez pas hein ;-)


RE: Modifier la vitesse d'évolution - Roworll - 22-12-2010

Je reviens sur la remarque de Globe. Tout comme lui, le fait de passer uniquement par des pourcentages me dérange un peu.

Dans l'absolu, lire un livre ou suivre un enseignement donne directement des points de compétences en échange du temps passé à étudier. On a ici une conversion plus directe temps<->apprentissage

A contrario, une potion d'intelligence ou un médaillon de crétinisme influeront sur la qualité de l'enseignement reçu. Cette partie peut être exprimée par un pourcentage.

Donc au lieu de calculer le temps nécessaire pour terminer d'apprendre la compétence, pourquoi ne pas simplement tracer le total de points de compétence accumulés ?

Par exemple, en passant 2H avec un Prof, il est possible d'apprendre directement 5000 pts de compétence (valeur au pif) alors qu'en temps normal, cela ne correspondrait qu'à 120 pts. 1H de lecture peut ramener 1000 pts (autre valeur au pif) au lieu des 60 pts de base. On peut même imaginer des profs nuls (3000 pts pour 2H), confirmés (5000 pts pour 2H) ou performant (7000 pts pour 2H). Même chose pour les ouvrages.

L'apprentissage serait donc découpé en phases d'apprentissages plutôt qu'amalgamé dans un gros calcul de pourcentage. Les seuls pourcentages qui subsistent sont ceux des éventuels bonus/malus permettant de booster les résultats. Par exemple, à supposer que l'élève boivent une potion d'intelligence lui donnant un bonus de 10% sur l'apprentissage de compétences avant d'aller en cours avec son prof confirmé, il gagnerait alors 5500 pts en 2H.

Il est libre ensuite d'interrompre ses études pour aller jouer au pâtissier ou s'épanouir quelques temps dans l'élevage de caprins car le cumul des points nécessaires est déjà mis à jour.

Avec un tel système de tâches, il est possible de faire un véritable planning de progression alternant période d'apprentissage et de pause tout en prenant en compte le bonus/malus d'éléments extérieurs. Par exemple
Jour 1
- Deux heures d'apprentissage avec un prof confirmé : 5.000 pts
- Deux heures supplémentaires avec un prof performant - utilisation d'une potion d'intelligence (+10%) : 7.000 +700 = 7700 pts
- Total apprentissage : 12.700 pts
Jour 2
- Deux heures de lecture avec deux ouvrages sur les techniques de bases : 2000 pts
- 4 heures d'entraînement solo : 240 pts
- Total apprentissage : 14.950 pts
Jour 3
- Une heure de lecture avec un ouvrage avancé : 1500 pts
- Total apprentissage : 16.450 pts
Etc

Donc, on ne prends plus comme base de calcul le temps d'apprentissage mais l'objectif à atteindre.


RE: Modifier la vitesse d'évolution - Jeckel - 22-12-2010

@Roworll : Haaaaaa !!! J'ai pigé !
En effet, vu comme ça, le système est intéressant et le calcule simplifié.