Liste de fonctions qui pourront vous servir dans votre jeu, l’avantage d’une fonction sur un code étant le bagage calculatoire que les permettent (dérivées, résolution analytique, optimisation, etc).

Maîtriser un peu les maths sera indispensable si vous voulez créer un jeu intéressant et équilibré.

f(x) = (1-x)^n*(1+n*x)

La courbe est un dôme partant de 1 (en x=0) et descendant comme un flan de colline jusqu'à 0 (en x=1).
Demi-dôme, plus n est grand, plus la pente est raide
  • n vitesse de “chute” du dôme
  • x ∈ [0..1] → [0..1], f(0) = 1, f(1) = 0
  • f'(x) = -n * (n+1) * x * (1-x)^(n-1), f'(0) = f'(1) = 0

f(x) = (1-x)^n * (1+n*x), n ∈ [0;1]

Graphique de la fonction
Différentes valeurs de n (n→0 en jaune, n=1 en bleu, n>1 en vert)
  • x ∈ [0;1] → [0;1], f(0) = 1, f(1) = 0
  • f'(x) = [ (1-x)^n*(1+n)*n*x ] / (x-1)
  • f'(0) = 0, ∀n, f'(1) = +∞, n<=1, f'(1) = 0, n>1
  • max(f'(x)) = f'(1/n)

f(x) = 1/2 * (x^n + x^(1/n) )

La courbe présente un plat, plus marqué à mesure que n croît.
Plus n > 1 est grand, plus le plat est marqué
  • x ∈ [0..1]
  • f'(x) = (n²*x^n + x^(1/n)) / (2*n*x) (non dérivable en x=0)

f(x) = (P/100)*(1/M)*exp(1-x/M)*x

La courbe de la fonction La courbe de la fonction pour différentes valeurs de M La courbe de la fonction pour différentes valeurs de P
Maximale en x = M, et f(M) = P/100
  • f(0) = 0, f(M) = P%, f(x!=M) < P%
  • f'(x) = (P/100) * (1/M) * exp(1-x/M) * (1 - x/M)
  • f'(M) = 0, f'(0) = (P/100) * (1/M) * exp(1)

f(x) = 0.5 * ( tan(2*k*x-k)/tan(k) + 1 )

La fonction présente un 'plat' en x=½, de plus marqué si k s'approche de Pi/2
  • De k=0 (pas de plat) à k≈Pi/2 (courbe très plate)
  • x ∈[0..1] → [0..1], f(0) = 0, f(1) = 1
  • a > b ⇔ f(a) > f(b) (croissance stricte)
  • x n’apparait qu’une fois dans f(x) (pratique si x vaut rand())

f(x) = ln(cosh( (x-a)/b )) + x/c

La courbe présente deux asymptotes linéaires en +∞ et -∞ Pour a=b*ln(2) et c=b, f est 'plate' de -∞ à 0, et linéaire au-delà de 0. Plus b est grand, plus la pente est raide.
La fonction présente deux asymptotes; la valeur de b en détermine la pente.
  • f'(x) = 1/b * tanh( (x-a)/b ) - 1/c
  • f(-∞) = a/b - ln(2) (si b=c)
  • f(+∞)/x ≈ 1/b - 1 (pour a = b*ln(2))

Complétez ces fonctions avec vos propres suggestions dans les commentaires!

Annexe des exotismes

Ces fonctions sont plus destinées à la curiosité des mathématiques, qu’à servir un jeu web. En effet, elles sont souvent trop complexes pour réellement apporter quelque chose à un jeu. Mieux vaut souvent leur privilégier des fonctions plus “informatiques” (des function ($x) { return $x > ... ? (1-$x) : $x; }) qui seront difficiles à analyser mathématiquement, mais bien plus simples à utiliser informatiquement (et souvent plus rapides à calculer).

Triangle approché

f(x, k<1, n€N*) = 1-(2*(x^k - 0.5))^(2*n), k = ln(0.5)/ln(A), 0.5>A>0
f(x, k>1, n€N*) = 1-(2*((1-x)^(1/k) - 0.5))^(2*n), k = ln(1-A)/ln(0.5), 1>A>0.5
Le dessin sur GraphCalc
Une fonction “à peu près” en triangle sur x ∈ [0..1], maximale en x=A, f(A)=1. demandée par niahoo sur JeuWeb