JeuWeb - Crée ton jeu par navigateur
Intégration de l'aléatoire - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Gameplay, gamedesign (https://jeuweb.org/forumdisplay.php?fid=48)
+--- Sujet : Intégration de l'aléatoire (/showthread.php?tid=7822)

Pages : 1 2 3 4 5


RE: Intégration de l'aléatoire - niahoo - 05-07-2017

Pas mal les vidéos. Honnêtement celle sur les bonnes idées de l'utilisation du random est sympa aussi.

Je dois être bouché mais je pige toujours pas pourquoi tu veux avoir un modèle avec une médiane qui fait du sous-marin sur les dégats d'une épée. Si ton épée est 50-60, tu peux faire 1000 tirages, ta médiane sera au milieu. Non ?

Ensuite si ton joueur monte en niveau, oui ça lui fait un bonus mais si tes combats n'ont pas de random c'est pareil …

Citation :Pour le côté "dogmatique", j'ai du mal à voir comment tu veux présenter cela autrement.
Cela ne m'étonne pas le moins du monde Wink. Peut être que « Dois-je mettre du random ou pas » n'est pas une bonne question. Peut être que l'utilisation du random se trouve plutôt dans : « Je voudrais que sur mes sangliers on loot des dents en or, mais pas trop, plutôt sur un sanglier sur cent » ou « Je voudrais que les cartes soient distribuées entre les joueurs de façon déséquilibrée et non prédictible ». Le random interviendra généralement quand il y a une notion de chance.


RE: Intégration de l'aléatoire - Xenos - 05-07-2017

Oui, si tu considères les tirages de dégâts d'une épée 50-60 (ou 55+/-5 c'est pareil), ta médiane sera à 55, de même que ta moyenne, car ce n'est *pas* de ce modèle dont je parle dans le premier exemple. Je ne parle pas du modèle "une épée au cours d'un combat".

Je parle du modèle "d'une entité au cours d'une suite d'actions, l'une se répercutant sur la suivante".

Dans le cas de ton épée, si chaque tirage est *totalement* indépendant des autres, alors tu n'auras pas ce soucis. Mais faire *totalement* indépendant, c'est très très difficile:
• L'issue du précédent combat a-t-elle influé sur le combat suivant? Si tu as gagné le précédent, tu as plus d'XP au suivant, ou une épée plus puissante (avec un intervalle aléatoire plus grand). Là, cela revient à regarde le 1er modèle comme non pas la suite des assauts d'un combat, mais la succession des combats d'une partie.
• L'issue de l'assaut précédent a-t-elle influé sur l'assaut suivant? Si tu as perdu de la vie, tu tapes moins fort? Le tirage précédent était-il défavorable et t'as fait perdre ton arme?

Le but du modèle géométrique est de montrer que même si tu équilibres parfaitement les chances pour 1 tirage (+/-5%: centré sur 0), alors il ne faut pas que la moindre influence transpire pour le tirage suivant, sinon, tu auras cet effet d'effondrement de la médiane (plus ou moins rapide suivant la largeur de l'intervalle de % ou le taux de "transpiration"). Sommairement, ceux qui auront de la chatte au départ auront un atout sur les autres qu'il sera compliqué de remonter, même en ré-ayant de la chatte ensuite.


>> Pour ton exemple de loot, dans ce cas, l'utilisation d'une fonction fixe pourra t'éviter des surprises par la suite (le MdJ n'aura pas d'incertitude, enfin disons plutôt qu'il peut les lever, mais il pourra la créer chez les joueurs).
>> Pour l'exemple des cartes, l'astuce est de se demander: "non prédictible pour qui? le joueur? ou le joueur ET le créateur?". Dans le cas des générateurs de planète, d'éclairs, etc par exemple, j'ai mis du random pour deux raisons: 1) le créateur (moi) ne veut pas créer tous les éclairs possibles, et j'ai donc une incertitude sur le résultat et 2) il est possible de tirer un autre éclair sans aucune influence de la part du précédent. Note aussi que c'est un "faux" aléatoire: avec le seed, tu peux retrouver l'exact même éclair. Appliqué aux cartes, tu peux soit injecter une incertitude au joueur et pas au MdJ, via par exemple un algo de mélange. Ou alors, te reposer sur le random classique, mais dans ce cas, le risque apparait d'avoir un joueur chanceux et un malchanceux: si le chanceux prend la meilleure carte du malchanceux, alors tu peux avoir l'effet de la médiane précédent.

Ce sera alors à la charge du skill de rétablir cette chance.

Mais bref: non, l'aléatoire, c'est franchement pas simple à "balancer", cela peut détruire un jeu très facilement, et si tu veux bien le comprendre et le maîtriser, il faut un sacré niveau de maths. Le plus aisé, sûr et facile est alors de ne pas l'intégrer, et de poser des formules carrés que tu pourras ajuster car les déséquilibres que le MdJ pourra observer ne seront pas des effets du sort. Sinon, suppose que tu partes avec des randoms "un peu partout" (ie: sur l'épée, les sangliers, la map, etc). Alors comment savoir si un joueur a tout niqué par son skill, ou par sa chance? S'il a looté des sangliers avec du bol, il est pété d'or. Du coup, tu réduis la proba de trouver de l'or? Sauf que peut-être a-t-il eu de la chance grâce à son épée, qui lui a permis de tuer plus de sanglier parce qu'il n'a tiré que des dégâts de 60. Etc.


Et perso, les vidéos d'Extra Credits sont très chouetes je trouve Smile J'en ai retenu (pour celles-là):

1) Incertitude != Aléatoire, on peut amener l'incertitude par d'autres moyens:
► Variables cachées de tous: seul le MdJ les connais
► Variables inconnues: ce joueur précis n'y a pas accès, les autres y ont accès, par exemple un piège tendu par le joueur A au joueur B, ou tendu par le MdJ)
► Variables ignorées: ce joueur connaît la donnée, mais choisit de ne pas en tenir compte (pensant qu'elle a peu d'imapct)
► Variables externes au jeu: aspect humain du jeu, ou influence d'un élément réel sur le jeu (par exemple, si le jeu reprend les évènements de l'actualité à venir); l'aléatoire est éventuellement l'une de ces variables
► Nouveautés rajoutées au gameplay

2) Incertitude pour qui? Joueur? MdJ?
► Pour le joueur, c'est souvent bien, car cela donne du rebondissement
► Pour le MdJ, cela peut être bien (génération procédural) mais c'est souvent à éviter (génération de salles closes, d'objectifs impossibles, etc)

3) Manier les probabilités, c'est chaud
► Il faut vraiment faire des maths; sinon, c'est comme faire un jeu et dessiner les graphismes, en étant "nul en dessin" (ou en n'aimant pas cela)
► Elles ne sont pas répétables (il faut donc stocker le résultat de chaque tirage pour pouvoir faire des analyses à postériori)
► Elles ne sont pas prédictibles: on ne fait que des estimations statistiques, mais la réalité peut donner tort
► Elles ne sont fiables que sur de grands ensembles: or les joueurs ont plutôt une expérience de jeu "par partie" (ils comprennent qu'un dé est équilibré, mais quand il sort "1" plusieurs fois de suite, c'est chiant)
► Même un faible intervalle aléatoire peut avoir de larges conséquences (si répété souvent ou sur le long terme, ou si l'équilibre est fragile)

D'où ma conclusion de virer les randoms de mes jeux, de le garder sur mes autres générateurs (avec un seed si possible pour la répétabilité), et de ne l'envisager éventuellement pour les "positions de départ" de certains jeux (ie: cartes, donc procedural generation).


RE: Intégration de l'aléatoire - niahoo - 07-07-2017

Mouais, ça me semble un peu trop simpliste comme vision en fait. Que tu utilises du random ou non pour déterminer la récompense à la fin d'un combat, le resultat influera de toutes façons sur les combats suivants.

Pour pallier ça, on pourrait imaginer que le gain d'XP ou la qualité de loot dépende de la performance lors du combat. J'aime bien l'idée mais ce n'est pas plus simple à implémenter, et un joueur plus skillé sera plus avantagé et progressera plus vite, là ou contrairement à ce que tu dis le random aura tendance à niveler la progression de tout le monde. Bon, ensuite, j'ai rien personellement contre un gameplay qui récompense le skill ; au contraire.

Mais c'est pour ça que je dis "simpliste", car à mon sens, selon l'angle d'approche de l'analyse de ton gameplay tu peux voir des choses contradictoires.

Comment mettrais-tu en place un système de loot avec des chances de tirer plus ou moins de bon cristaux d'une mine par exemple, sans utiliser le random ?


RE: Intégration de l'aléatoire - Xenos - 07-07-2017

Ouep, le but n'étant pas de supprimer l'influence d'un combat à l'autre, mais de faciliter les maths du MdJ qui souhaiterait maîtriser l'équilibrage de son jeu.

Perso, quand j'ai besoin d'utiliser du "random", soit je m'en passe (j'initialise les mines, éventuellement au pif, ou craftées pour équilibrer les choses, ce qui me crée une "grande table de définition de mines" que j'insère côté serveur), soit je me rabats sur des relations causales (il y a Cristal = Quantité de roches * Densité cristal; mais cela repousse parfois le problème ["d'où sortent les deux valeurs de droite dans l'équation?"], jusqu'à temps d'atteindre une constante de jeu, qui peut alors avoir été craftée comme dans la 1ere méthode), soit je me base sur une fonction faussement aléatoire mais totalement arbitraire (type "assemblage de sinusoïdes", d'où le générateur correspondant https://toile.reinom.com/sinusoide-aleatoire/ ).

Après, ça, c'est si le gamedesign m'intéresse: sur le moment, pour le Yack, j'en n'avais rien à cirer donc j'ai balancé du random. Perso, je trouve que c'est parfois plus facile d'implémenter du non-random (ie: on n'a pas besoin de sauver le résultat du tirage, cela me permet s de faire des "vues" SQL dans Isometry ou Eclerd, sans devoir sauver le résultat). Parfois, c'est kiff-kiff (le Yack). Mais dans tous les cas, le random est "mentalement plus simple" à balancer, sauf qu'il pousse à ne pas réfléchir... Ou, quand on veut vraiment réfléchir sur ses conséquences, là, cela devient plus difficile (à poser sur papier, à calculer, et à maîtriser) que du non-random.

Bref, non-random ou random, c'est similaire en difficulté d'implémentation avec un léger atout pour le non-random. En revanche, le random permet d'avoir un résultat grossier sans réfléchir. Mais si on veut réfléchir dessus, il devient rapidement un obstacle.

PS: je parle souvent de "sinusoïde", mais des tas d'autres fonctions peuvent être utilisées: modulo, triangle, carré, etc; l'avantage de SIN, c'est qu'elle est généralement implémentée dans tous les langages, que sa moyenne est strictement 0 (pour peut qu'on s'arrête sur une période) et comprise entre -1 et 1. Pour le random, même si la moyenne d'une fonction aléatoire est 0, rien ne garantira à l'exécution qu'on sera à 0 de moyenne, sans compter toutes les influences des médianes, sigmas et tout le bazar des probas.

PPS: Il y a, sur youtube, pas mal de vidéos sur les maths et les probas, mais celles que j'avais trouvé sympa et abordables sont celles des "Maths expliquées à mon chat". ^^