Archive

Archives pour 04/2009

Raté, essaie encore.

07/04/2009 3 commentaires
Fractale de Mandelbrot

Les probabilités sont la clé de voûte d’un nombre incalculable de jeux. Même dans les systèmes totalement déterministes où le hasard n’existe pas, et où les règles sont statiques, l’imprévu met presque toujours son nez. Je pense que l’on peut même dire que c’est la surprise qui constitue le plat de résistance de l’amusement. Comme jeu où tout est prévisible, il y a le morpion. Et ça n’est drôle que contre un adversaire qui ne sait pas jouer.

Et qui dit imprévu, dit probabilités. Il y a plusieurs façons de mettre en place un système non-déterministe. La plus commune est l’intervention d’un être humain. Nous sommes des merveilleuses créatures dotées d’un schéma de réflexion si complexe qu’il suffit presque que les règles laissent une toute petite place à l’imaginaire pour qu’un jeu à deux devienne stratégique. Presque, car encore faut-il qu’il n’y aie pas d’issue trop évidente.

Un exemple facile serait les Échecs. Une série de règles simples offrant un large éventail de combinaisons, un terrain de jeu limité, mais des adversaires imaginatifs. Et une quasi infinité de parties différentes.

Dans les MMORPGs, et plus encore dans les jeux solos, l’imprévu se manifeste souvent de façon artificielle, par le biais de la génération de nombre pseudo-aléatoires. Pour insuffler un peu de chaos dans les mécaniques trop bien rodées, on décide souvent de transformer nos valeurs en plages. Voir de faire intervenir l’imprévu encore plus directement, en évaluant de temps en temps des conditions aléatoires pour déterminer si le Sort est intervenu.

Un cas frappant est celui des coups critiques. Depuis D&D, on simule une action particulièrement glorieuse du joueur en la portant sur son niveau d’interaction : le jet de dés. Dans les jeux modernes, le principe de réussite critique est très souvent présent. Plus rarement celui d’échec critique, j’y reviens.

C’est une bonne chose : si tout est suffisamment aléatoire pour ne pas pouvoir monter une stratégie autour d’un événement imprévisible, et si l’événement imprévisible favorise un joueur. En revanche, à mon sens, c’est une très mauvaise chose lorsque l’imprévu désavantage le joueur alors qu’il affronte un ennemi virtuel (donc, pas un autre joueur).

N’oublions pas que l’intérêt de tout système de gameplay est de servir le plaisir du joueur. Être surpris de sa propre puissance, c’est fun. C’est encourageant. C’est positif. Être surpris de la puissance de l’adversaire, c’est parfois frustrant, mais lorsque l’adversaire est humain, le sentiment d’injustice est faible : ça aurait pu être nous.

Par contre, lorsqu’il s’agit d’un ordinateur, le sentiment d’être abusé est très rapidement atteint. Comme dans le cas d’une intelligence artificielle (ainsi que décrit dans un excellent article paru récemment sur Gamasutra), les adversaires virtuels sont très vite soupçonnés des plus viles intentions, et cela encore plus lorsqu’il s’agit de hasard, en étant eux même les gardiens.

Il y a pire encore : les ratés aléatoires. Il n’existe pas de situation où un joueur prenne du plaisir à rater son coup par hasard. Surtout pas lorsqu’il n’est pas l’instrument de ce hasard (s’il tire les dés, il peut au moins se dire que c’est un peu de sa faute). Et décidément jamais lorsque c’est l’adversaire qui détermine ce hasard. Félicitations, vous avez réuni toutes les conditions pour effectuer cette action, et … ah, non, vous échouez. Pas de chance. Très amusant.

C’est pourtant un système récurent dans les jeux vidéos. Un peu moins en jeux de plateau ou en jeu de rôle papiers (une question de survie pour le MJ, probablement). Oui, il est logique que si l’on peut réussir quelque chose particulièrement bien, l’on puisse aussi le merder particulièrement fort. Mais qui a envie de ça ?

J’irai encore plus loin. Dans des systèmes aléatoires positifs (comme les coups critiques), le hasard est bien souvent situé en avant-plan. Le joueur peut difficilement compter sur un coup critique, mais il souhaite en faire. Ce genre de sensation est également présente sur les systèmes de répartitions de butins (le loot, quoi). Un élément aléatoire, l’espoir du joueur.

En soit, il ne s’agit pas forcément d’un mauvais système, mais il a la particularité de devenir très vite frustrant. L’aléatoire à cela de particulier qu’il est impossible pour le joueur de le digérer lorsqu’il ne le sert pas. À partir du moment où un facteur chance existe, ce facteur devrait servir le joueur, et son absence, ne pas le désavantager. Et la plupart des systèmes aléatoires ne font pas cela.

Récemment, Blizzard a mis en place discrètement, lors de la sortie de Wrath of the Lich King, un système aléatoire pipé, dans le cadre de la mécanique de calcul du droprate des objets de quêtes dans son MMORPG World of Warcraft. C’est un système qu’ils avaient déjà utilisé, selon l’article, pour le calcul des coups critiques sur Warcraft 3.

Le principe est tout simple : plus on échoue, plus on a de chance de réussir. Jusqu’à, éventuellement, ne plus faire intervenir la chance. Je trouve ça absolument brillant. Et qu’on ne me sorte pas l’éternel couplet « Blizzard n’a rien inventé » ou « c’était juste évident » : ailleurs, ce n’est bien trop souvent pas le cas.

Une solution d’implémentation toute simple consiste à piper son aléatoire. Par exemple, lorsque l’on devrait tirer un nombre entre 0 et 99, on tire un nombre entre n et 99 où n est le nombre d’échecs de suite précédent ce jet. Un échec étant un jet qui ne favorise pas le joueur.

Avec cette solution, on augmente le nombre de réussites totales sur un grand nombre de jets de 1%. Par contre, on diminue le nombre d’échecs d’affilés d’environ 70% : au lieu de faire en moyenne 290 échecs de suite sur 1000 jets, on n’en fait plus que 95 en moyenne. Par contre, le nombre de réussites de suite ne change pas : environ 1. En réalité, il évolue selon la même courbe que le nombre d’échecs de suite, mais les réussites étant bien plus rares que les échecs, l’impact de l’évolution est beaucoup plus réduit.

Ce genre de système « mémorisant » la malchance de joueur pour la minimiser représente à mon sens une énorme évolution dans les systèmes aléatoire, car il permet de palier à leur principal défaut : le sentiment d’injustice.

Un exemple de calcul de probabilités est disponible ici, en Python.

Categories: Conception Tags: , ,