mercredi 15 mai 2013

Un système d'aléatoire contrôlé pour gérer les combats dans les JDR de tout type de forum

Bonjour,

Je vais bientôt - je vous en parlerai - faire une petite intervention sur Paris sur les jeux de rôle par Forum.

Je vais parler notamment des jeux de rôle sur Google +, et j'étais en train de faire le pour et le contre. Le pour, c'est facile :
- super mise en page avec gras, italique...
- système de +1,
- intégration nickel des images

Et le contre, c'est que je n'avais aucun système pour faire des "jets de dés" fair-play.

Je ne suis pas fou des dés, mais l'aléatoire est le sel d'une aventure. Un héros souhaite franchir un terrible précipice ? Si le maître de jeu décide arbitrairement qu'il réussit ou non, cela laisse un goût de déterminisme qui ne plaît guère.

A présent, comment faire ? Demander au joueur de jeter les dés chez lui et d'inscrire le résultat ?

Je n'ai même pas confiance quand mes joueurs jettent les dés sous mes yeux, alors...

Dans un jeu de rôle sur un forum standard (comme 4chan, par exemple...), les posts sont numérotés. C'est intéressant, même si le post n'a qu'un faible numéro (19 ou 54 par exemple) car on peut se servir de la dernière unité pour faire une simulation de jet de dés.

Mais dans un jeu de rôle sur G+ ? Numéroter manuellement les posts est fastidieux.

Je me suis dit, il doit y avoir un moyen.

Alors je me suis creusé la tête, et j'ai trouvé un moyen :-)

Ce moyen, le voici, c'est une table de génération de résultats aléatoires mais "contrôlés". Ou semi aléatoire, je ne sais pas s'il existe un nom rigoureux.

Donc, vous allez ici : http://fibretigre.com/divers/tablegen.php

et vous allez avoir quelque chose du genre :



Un tableau de 6 cases sur 6.

Si ce tableau est aléatoire à chaque chargement, si on lui donne une "graine" fixée, les résultats sont aléatoires mais fixes, car liés à la graine. Ainsi le résultat :

http://fibretigre.com/divers/tablegen.php?seed=999

Donnera toujours et pour tout le monde le même résultat :



Le concept est le suivant : le nain Pithoplas et la guerrière Copterixa veulent découper un terrible TROLL en rondelles. (j'aime bien mettre le nom des créatures en caps, c'était la norme dans les LDVELH).

Pithoplas et Copterixa "lancent les dés", c'est à dire me disent deux chiffres entre 1 et 6, disons 3 et 3 pour Pithoplas et 2 et 5 pour Copterixa. Le maître de jeu tire les dés pour son troll, disons 1 et 1.

Ensuite, ils conviennent ensemble ensuite d'un nombre, n'importe lequel, disons 332511 (qui correspond à la concaténation des résultats arbitrairement donnés) qui sera la graine. Ils se rendent sur la page correspondante : http://fibretigre.com/divers/tablegen.php?seed=332511

Et regardent les coordonnées droite / bas du tableau (l'origine étant en haut).


Ainsi Pithoplas avec ses 3 et 3 fait un 2.
Copterixa avec son 2 et 5 fait un 5.
Le troll avec son 1 et 1 fait un 5.

Ainsi Copterixa tient tête à l'horrible créature, tandis que Pithoplas agite sa hache dans le vide.

Le fait que les tables soient fixes permettent également une lecture ultérieure et cohérente de la partie.



Mais le nain n'a pas dit son dernier mot...

9 commentaires:

  1. Brillant, merci pour le partage

    RépondreSupprimer
  2. Je n'ai absolument rien compris.

    RépondreSupprimer
    Réponses
    1. C'est des cordonnées avec une origine en haut à gauche.
      C'est vrai que d'habitude l'origine est placée en bas à gauche, sinon on à l'impression que ça part dans le négatif

      Supprimer
  3. On s'était posé la question avec @feelic et voici une autre solution :
    • chaque joueur prépare un tir en choisissant les dés qui le composent. Du genre, je tape 18 coup de rape à gruyère plus 1 soit 18d3+18.
    • une fois prêt, le joueur active le jet ce qui donne une url unique. Le tirage est fait mais invisible. il poste l'url
    • le mj active l'url ce qui révêle les résultats.

    Ce système permet d'être sûr que le tirage n'est pas vu avant d'être reçu par le MJ, minimise le temps de préparation pour ce dernier et reste relativement basique à implémenter.

    Une v2 pourrait être d'afficher le résultat sous forme d'image qui serait insérée en preview (à la facebook). Tant que le MJ n'a pas cliqué, l'image est un ??. Une fois activé, la preview devient le résultat, ce qui permet une lisibilité accrue.

    RépondreSupprimer
  4. Le système peut être détourné en choisissant ses jets et ses seeds à l'avance, puisqu'elles sont permanentes. Par exemple, je choisis la seed 332511 et je dis 3 et 1, ainsi je suis certain de faire un 11.
    Il suffit donc de noter quelques seeds et les positions des gros résultats pour faire des jest parfaits.

    RépondreSupprimer
  5. @Pigletwolf : alors, je prépare un système un peu dans ce style pour Aventures Infinies, mais pour le forum, ça a le désavantage de ne pas tout régler d'un seul coup. Avec la "table", je peux régler 30 coups de dés d'un seul coup !

    @anonyme : il y a un défaut sur l'arbitraire du choix de la table. On peut imaginer qu'elle peut-être par exemple la multiplication des minutes des dates des posts, ce qui donne une grande part d'aléatoire.

    RépondreSupprimer
  6. @fibre

    Ensuite l'idée c'est que ce soit les joueurs, et non toi, qui préparent les dés, le MJ n'a qu'à cliquer pour révéler.

    De plus, il n'y a pas de discussion non RP : je dis que je lance flammèche de foudre, je poste le lien, tu cliques, on n'a pas rompu le fil de l'histoire avec des détails techniques :)

    RépondreSupprimer
  7. Bonjour, c'est Pithoplas. (nosmi)

    Je tenais à dire que je n'ai jamais eu besoin de tricher pour tuer tous les démons du jeu.

    RépondreSupprimer
  8. Salut FibreTigre,

    Je ne comprends pas la méthode de choix de la table.

    Si elle se fait arbitrairement par le MJ ou les joueurs il y a risque de triche (on peut imaginer qu'on fasse tourner un programme d'optimisation sur toutes les grilles pour choisir par exmemple celle qui maximise min{scores des joueurs}).

    Si elle se fait par un critère de type numéro/heure de post alors il y a ce même risque théorique de joueurs qui optimisent leur post pour maximiser leur score, tout en ayant une "surcouche" compliquée (les tables). Il est également plus difficile de garantir que les valeurs obtenues resteront bien distribuées.

    Si le choix de la grille dépend des résultats des dés, alors comme on utilise deux fois le jet de dés et les valeurs otenues ne sont plus nécéssairemnt IID (exemple avec seulement un joueur jettant deux dés : si il choisit la grille xy où x est le résultat du 1er jet et y celui du second, il suffit que par malchance la case n° xy de chaque table soit toujours égale à 1 pour avoir un échec critique à chaque fois).

    Si on utilise un générateur aléatoire pour choisir la table pourquoi ne pas directement l'utiliser pour générer des jets de dés ?

    Enfin, tu peux peut-être envisager d'inverstir dans http://www.idquantique.com/component/content/article.html?id=97 :0

    RépondreSupprimer

Merci de lire mon blog