un peu de probabilités de jeu de rôle de super héros, histoire de voir quelques statistiques, ça peut aider en game design et en tout cas c’est cool
Dans la plupart des jeux de rôle (et les jeux de rôle de super héros en particulier ne font pas exception), le hasard a une place plus ou moins importante dans le système de résolution.
probabilités de jeu de rôle de super héros pourquoi faire?
S’intéresser aux probabilités dans un jeu de rôle (de super héros ou pas d’ailleurs), c’est essayer de voir si les résultats des lancers de dés servent le propos du jeu que l’on est en train de construire (ou qui est déjà construit dans le cadre d’un jeu publié où c’est plus de la curiosité de s’intéresser aux statistiques sur les lancers de dés)
Prenons l’exemple de SuperSix : le jeu de rôle de super héros. Le propos c’est que les joueurs incarnent des êtres d’exception, des personnages hors du commun qui combattent le crime, protègent la veuve et l’orphelin.
Comment les probabilités peuvent servir ce propos? Et bien c’est simple, les personnages sont des êtres hors du commun, par conséquent ils faut que ça se ressente au niveau du système de résolution.
C’est pourquoi le joueur lance toujours entre 2 (minimum à la création) et 4 dés (maximum avec de l’expérience) et on garde le plus haut score. De plus, si une force s’applique on a encore la possibilité de relancer un dé au choix, bref sur le papier ça devrait marcher pas trop mal (dans les faits aussi) mais calculer les probabilités permet de s’assurer que ça marche à tous les coups (ou du moins un certain nombre de coups)
Statistiques avec AnyDice
Anydice c’est un site internet qui permet de créer des statistiques de lancers de dé de jeu de rôle, on le trouve ici
Il fonctionne de la manière suivante : on utilise un langage de programmation dédié mais relativement simple (pas besoin d’être un vrai informaticien pour l’utiliser) . Même si pour simuler le système de résolution de SuperSix ce n’est pas si simple et j’ai demandé de l’aide sur le forum casus no. Et on m’a donné la formule situé en fin d’article.
Ensuite il suffit de cliquer sur calculate et le site s’occupe de tout ! Avec pourcentages de chaque résultat demandé + possibilité de voir le graphique correspondant. Voici comment lire le graphique généré pour SuperSix :
Les résultats sont
0 : échec total
1 : réussite partielle
2 : réussite totale
On lance 1 dé , 2 dés, 3 dés ou 4 dés
Il y a plusieurs stratégies de relance :
pas de relance
relance prudente du plus haut (si faiblesse) : on relance le dé ayant obtenu le plus haut score mais uniquement si l’action était une réussite
relance imprudente du plus haut (si faiblesse) : on relance le dé ayant obtenu le plus haut score dans tous les cas
relance prudente du plus bas (si force) : on relance le dé plus plus faible uniquement si l’action était un échec total
relance imprudente du plus bas (si force) : on relance le dé le plus faible si l’action n’est pas une réussite totale
Code AnyDice pour SuperSix, Cliquez pour voir le code
function: reroll lower VALUES:s PRUDENT:n { \relance avec recherche de resultat maximal \
if 1@VALUES = 2 { \pas besoin de relancer\
result: 2
}
if 1@VALUES = 0 { \pas besoin de relancer\
result: 1d{0, 0, 0, 1, 1, 2}
}
if 1@VALUES = 1 {
if((#VALUES = 1) | (2@VALUES = 0)) { \si un seul 1 obtenu, on relance seulement si une strategie imprudente est adoptée\
if(PRUDENT) {
result: 1
}
else {
result: 1d{0, 0, 0, 1, 1, 2}
}
}
else { \si plusieurs 1 on relance et on garde un 2 si un 2 n’est pas obtenu\
result: [highest of 1 and 1d{0, 0, 0, 1, 1, 2}]
}
}
}
function: reroll higher VALUES:s PRUDENT:n { \relance avec recherche de resultat minimal\
if 1@VALUES = 0 { \sur un 0 pas besoin de relancer\
result: 0
}
if 1@VALUES = 2 {
if(#VALUES = 1) {
result: 1d{0, 0, 0, 1, 1, 2}
}
else {
result: [highest of 2@VALUES and 1d{0, 0, 0, 1, 1, 2}]
}
}
if 1@VALUES = 1 {
if(PRUDENT) { \strategie prudente : on cherche à éviter le 2\
result: 1
}
else {
if(#VALUES = 1) {
result: 1d{0, 0, 0, 1, 1, 2}
}
else {
result: [highest of 2@VALUES and 1d{0, 0, 0, 1, 1, 2}]
}
}
}
}
loop N over {1..4}{
output 1@Nd{0, 0, 0, 1, 1, 2} named « [N]D pas de relance «
output [reroll lower Nd{0, 0, 0, 1, 1, 2} 0] named « [N]D imprudent relance du plus bas »
output [reroll lower Nd{0, 0, 0, 1, 1, 2} 1] named « [N]D prudent relance du plus bas »
output [reroll higherNd{0, 0, 0, 1, 1, 2} 0] named « [N]D imprudent relance du plus haut »
output [reroll higher Nd{0, 0, 0, 1, 1, 2} 1] named « [N]D prudent relance du plus haut »