Methode pour faire des dégâts

Discussion ouverte sur la révision des sorts existants et du système de magie.
Avatar de l’utilisateur
Wiiip
Az disciple rebelle
Messages : 4426
Inscription : 11 mars 2004 12:46

Message par Wiiip » 18 nov. 2008 10:45

En fait, je n'avais pas fait attention, mais Khro avait tronqué mon idée à un seul produit.
1dX*1dInt

L'idée de base, c'était d'en faire plusieurs, pour augmenter l'effet d'exponentielle.
1dX*1dX*1dX .... Y fois.

Aza, dans la formule de Khro, l'intelligence est linéairement proportionnelle aux dégâts. Il y a pas d'effet de puissance. Celui qui a 2 fois plus d'int fait 2 fois plus de dégâts.
L'ajout d'un seul produit ajoute seulement une répartition un peu plus exponentielle. S'il avait écrit 1dINT*1dINT, là, effectivement, cela aurait mit l'intelligence au carré.

Enfin, si la moyenne obtenue est trop haute, tu peux simplement diviser le tout par une valeur fixe.
Le problème, c'est que 1D3, ca fait seulement 1, 2 ou 3. Mais si tu le divises par 3, ca fait 0.33 , 0.66 et 1. Du coup, tu peux utiliser la jolie répartition tout en l'équilibrant à ton aise.

N'empêche, une simple fonction carré n'était pas l'idée de départ ><
L'idée de départ, c'était de lancer un sort de zone qui faisait aucun dégât sur aucun monstre, sauf un 16 ou un 32 sur l'un des monstres. En moyenne ca fait pareil, sauf que lancer le sort tout seul y gagne un intérêt, et on peut réévaluer les dégâts sans craindre d'abus dus aux sorts de zones (abus = je lance le sort 10 fois et pouf ! Je tue 30monstres d'un coup, facile :p)
La même chose avait été faite pour la boule de feu en fait, sauf qu'en plus on choisissait la cible principale, et là, on ne la choisirait pas.

Voili.

(et moi aussi, je peux linéariser ma fonction pour avoir un truc tout lisse :
1D(1D2*1D2*1D2*1D2*..8 fois /2)
Ah ! >< )
Dilbert a écrit :- The key to happiness is to love who you are, not who others want you to be.
- Doesn't that make you a sociopath ?
- Yeah. I love that about me.
Avatar de l’utilisateur
zepliner
Membre de Avatars & Co, Filliale de M&Co
Messages : 209
Inscription : 01 sept. 2004 16:39

Message par zepliner » 22 nov. 2008 15:00

L'idéal serait que l'intelligence modifie l'effet d'un sort selon une courbe en S (type équation logistique) dont on peut discrétiser le résultat:

Très faible INT = faible bonus (réglable). Le magicien n'est pas assez Intelligent pour vraiment améliorer le sort

Int moyenne = en plein dans la phase d'accroissement, une augmentation de l'intelligence induit une augmentation conséquente des bonus (réglable en fonction de la pente). Le magicien a une intelligence qui lui permet d'appréhneder le sort, ce qui permet de l'améliorer à chaque augmentation.

Int élevée = arrivée à un plateau, quelque soit l'int du lanceur le sort ne peut pas être plus efficace.

Cette solution me semblerait assez logique.

Pour vous donner une idéee, voici la courbe de Hill utilisée en pharmacocinétique. Il suffit de remplacer "concentration" par "Intelligence" et "probabilité d'effet" par bonus au sort"

Image

Le profil de la courbe peut être rélé pour chaque sort.

Permet de créer des potion qui augmente l'int temporairement avec un effet interessant :)

Edit: on peut faire la même chose avec les ort indexé sur le niveau du joueur... Je vais essayer de faire quelques graphes avec une vrai formule pour voir :)
Elu - Mage
Rag - Guerrier nain
Buffalo - Cow-boy

Ex Blob le barbarre II (RIP)

Enfants de T'ren
Avatar de l’utilisateur
SylverFox
Gros bill du forum
Messages : 1475
Inscription : 07 mai 2004 15:49
Localisation : Sundsvall
Contact :

Message par SylverFox » 23 nov. 2008 17:51

Sauf que là pour une valeur d'INT, tu as une valeur de bonus.
Jusque là l'idée c'était de garder un effet fortement aléatoire.

On pourrait considérer que la moyenne du bonus suit une fonction logistique (au lieu de suivre une fonction linéaire comme dans les cas précédemment cités).

Mais ça m'étonnerait qu'on y arrive en utilisant seulement le concept de "dé", et les opérateurs simples (+, -, /, *)....
SylverFox
Joueur de Turìn, Finrod et Thorïn.
Avatar de l’utilisateur
zepliner
Membre de Avatars & Co, Filliale de M&Co
Messages : 209
Inscription : 01 sept. 2004 16:39

Message par zepliner » 23 nov. 2008 23:41

On peut considérer qu'en fonction du niveau du magicien, la proba d'obtenir un bonus évolue selon une fonction logistique.

J'ai fait quelques graph sous exel. J'essaierai de les mettre en ligne demain :)
Elu - Mage
Rag - Guerrier nain
Buffalo - Cow-boy

Ex Blob le barbarre II (RIP)

Enfants de T'ren
Avatar de l’utilisateur
zepliner
Membre de Avatars & Co, Filliale de M&Co
Messages : 209
Inscription : 01 sept. 2004 16:39

Message par zepliner » 26 nov. 2008 01:15

Voici finalement quelques idées… En écrivant ce poste, je me rend compte que j’y suis peut être allez fort. Désolé d’avance pour les adeptes de la simplicité ;)

L’intérêt d’utiliser une fonction logistique, c’est en particulier qu’on peut définir simplement un plancher et un plafond avec une évolution non linéaire (comme le faisait remarquer Silver fox). J’ai pris l’équation la plus simple de sigmoïde.

Si on veut un résultats F(int) qui varie entre 0 et E, par exemple, on peut utiliser :

F(int)=( 1/(1+e^-P(int-int_inf)) ) * E

-> int = intelligence du joueur
-> int_infl = valeur d’intelligence à laquelle on souhaite que la courbe s’infléchisse
-> E = valeur du plafond (la valeur plancher est de 0). En arrondissant on, peut avoir une série d’entier
-> P = valeur qui permet de régler la pente de la courbe, à définir empiriquement


Par exemple, pour un résultat entre 0 et 100 (E =100), point d’inflexion 16, P = 0,7, on obtient :

Image

Ce qui peut être la probabilité d’obtenir un bonus prédéfini en fonction de l’intelligence du joueur. Ici, F(Int =16) = 50%. En dessous de 9 d’intelligence, jamais de bonus, au delà de 24 bonus systématique.

:idea: En réglant les 2 paramètres, Int_inf et P, on peut avoir tous les profils d’évolution que l’on désire.



On peut également imaginer une évolution en fonction du niveau, avec un résultat qui indique une valeur pour un lancé de dès. Par exemple 5Df(niv), ou f(niv)D5

Par exemple, pour un résultat entre 0 et 20 (le résultat est arrondi pour avoir un entier), point d’inflexion 20 et P= 0,2, on obtient :

Image

On peut imaginer comme Wiiip le proposait Dégât = 1D2^f(niv). On a un sort indexé sur le niveau.



Comme dernière exemple j’ai imaginé un sort :
Foudroiement Mathématique

Le magicien se lance dans une explication sur l’utilisation des sigmoïdes dans les souterrains. La cible ressent un profond sentiment d’ennuis et commence à s’automutiler :)

:arrow: La cible encaisse 2D10 + f(int) % de chance d’obtenir un bonus
:arrow: Bonus = 1D3*f(niv)+f(niv)
:arrow: f(int) et f(niv) sont les fonctions présentées avant.


Voici l’évolution des dégâts en fonction du niveau et de l’intelligence :

Image

les pointillés sont les mini (tous le monde pareil) et maxi. Le trait plein la moyenne.

Le perso avec int = 8 n’évolue pas dans le temps
Le perso avec int = 16 fait de plus en plus de dégâts dans le temps
Les courbes vertes représentent le joueur qui augmente son Int dès qu’il le peut. On voit qu’il est intéressant d’acheter des points d’intelligence supplémentaires. Arrivé au lvl 38 avec 24 d’intelligence, le sort ne peut plus être amélioré.

Concernant la distribution des dégâts, j’ai repris la formule de Silver pour le bonus.


Pour une int de 8, ca donne une distribution des dégâts classique 2D10 :

Image
classe = dégâts

Pour une int de 16, au lvl 40 ca donne un truc vaguement bimodal du au 50% de chance d’avoir le bonus

Image
classe = dégâts

Pour une int de 24, au lvl40

Image
classe = dégâts

Voilà voilà, facile non ?
Et ne me dite pas que c’est compliqué pour pas grand chose (même si c’est vrai ^^)

Et puis en manipulant quelques paramètres, on a directement un profil. Ca évite de coder :
If lvl >0 and <=4 then …
if lvl>5 and <=8 then…
etc…

Ca a au moins le mérite d’être élégant ;)
Elu - Mage
Rag - Guerrier nain
Buffalo - Cow-boy

Ex Blob le barbarre II (RIP)

Enfants de T'ren
Calinnor
Client régulier
Messages : 50
Inscription : 03 déc. 2005 15:39

Message par Calinnor » 27 nov. 2008 09:56

Cette solution peut en effet paramétrer tous les facteurs utilisables, mais cela va nécessiter une refonte totale du code si on cherche à les adapter aux sorts existant non ?
Comme la proposition précédente d'ailleurs...
Le soucis, je dit cela car je ne l'ai pas vu, c'est que si l'on veux juste "améliorer" les formules d'aujourd'hui, il faudrait les connaitre.

Maintenant, ces deux bases de travail peuvent vraiment servir pour les sorts de niveau supérieur, et, plus tard être adaptées aux sorts existant.

Je ne suis pas assez calé pour proposer des fonctions équivalentes, malgré tout j'ai compris celles présentées, et, je dois dire, bon boulot.
Sur ce coup, je ne peux que vous encourager ^^.
Avatar de l’utilisateur
Moslinko
Membre de Avatars & Co, Filliale de M&Co
Messages : 2169
Inscription : 29 juil. 2004 10:16
Contact :

Message par Moslinko » 27 nov. 2008 10:04

Dr zepliner, vous êtes fou...

dire qu'on était ami...

intello !
---Contre les lieux protégés---
Leodrielle, Ghurdil, Coyote furtif.
Enfant de T'ren.
Avatar de l’utilisateur
zepliner
Membre de Avatars & Co, Filliale de M&Co
Messages : 209
Inscription : 01 sept. 2004 16:39

Message par zepliner » 27 nov. 2008 12:28

Moslinko a écrit :Dr zepliner, vous êtes fou...

dire qu'on était ami...

intello !

T'inquite, j'apprécie toujours une bonne cuite et raconter n'imporque quoi :)

Et je n'y connais toujours rien en économie :P
Elu - Mage
Rag - Guerrier nain
Buffalo - Cow-boy

Ex Blob le barbarre II (RIP)

Enfants de T'ren
Avatar de l’utilisateur
azaghal
Site Admin
Messages : 5390
Inscription : 28 juil. 2003 13:50

Message par azaghal » 27 nov. 2008 15:23

zepliner a écrit :
Moslinko a écrit :Dr zepliner, vous êtes fou...

dire qu'on était ami...

intello !

T'inquite, j'apprécie toujours une bonne cuite et raconter n'imporque quoi :)

Et je n'y connais toujours rien en économie :P
c'est dans l'ignorance que l'on fait les meilleurs experts

Az pas développeur pour un sou, qui code delain :wink:
Az
Répondre