Aller au contenu

Jeux, hasard, plaisir et arnaques


Messages recommandés

Invité Filcro
Invité Filcro Invités 0 message
Posté(e)

Bonjour à tous !

Suite à une discussion, il est apparu qu'il serait pertinent d'ouvrir un topic dédié aux sofwares de jeux. Si je ne m'abuse, nous pourrions poser le problème ainsi : comment générer un hasard qui semble être un véritable hasard ? Comment utiliser un programme pour tricher contre des joueurs (et dans quel but le faire) ? Comment utiliser une expérience acquise auprès des joueurs pour paramétrer un programme de jeu ? Il y en a sûrement d'autres, je n'ai pas tout en tête.

Partager ce message


Lien à poster
Partager sur d’autres sites
Annonces
Maintenant
azad2B Membre 3343 messages
Le prendre au sérieux, nuit gravement à la santé‚
Posté(e)

Excellente idée de poser la question dans cette rubrique tout à fait appropriée car on pourra y développer des idées sur la structure d'un programme, en l'occurence un vidéo Poker qui aura pour but de plumer au maximum ses utilisateurs tout en leur laissant croire que vraiment, seule la malchance est contre-eux. Je vais donc préparer un préambule pour vous montrer quelle méthode j'ai choisie. Et cela dés demain.

Partager ce message


Lien à poster
Partager sur d’autres sites
azad2B Membre 3343 messages
Le prendre au sérieux, nuit gravement à la santé‚
Posté(e)

Avant de commencer, un peu d’histoire.

Dans les années 1982 est née une machine de Casino et de Cercles de jeux appelée Jolly Card. Cette machine était équipée d’un micro-processeur 6502 très performant à l’ époque et équipant un grand nombre de jeux vidéo très célèbres. Élle était un des premiers Vidéo Poker à l’ époque, le tout premier qui l’avait précédé était une machine Américaine (Summit) équipée du premier micro-processeur, un 4004 issu de la firme, jeune à l’ époque, Intel et ancêtre des 4040 puis 8080, la suite est connue.

Le 4004 était un micro-processeur à 4 bit doté de 2000 transistors, ne riez pas !

Le 6502 un 8 bit était infiniment plus puissant et équipait entre autres, les ordinateurs Attari, Commodore et … l’ Apple //. Il portait en germe les µprocesseurs modernes du type RISC (jeu d’instruction réduit) n’ayant que quelque 60 instructions de disponible, à comparer aux quelques centaines d’un 8080 infiniment moins puissant.

Bref le jeu Jolly Card eut un succès foudroyant. Songez qu’ à cette époque on pouvait gagner jusqu’à 44 000 francs en misant 40 francs et en obtenant le jeu maximum, rêve de tous les joueurs, le célèbre Five qui consistait en un Carré quelconque accompagné du Joker. Soit un carré doté de cinq cartes, d’où son nom. Plus de 4 000 000 d’anciens Frans en 1982, avouez que cela excitait bien des convoitises chez les joueurs. Et aussi d’ailleurs chez les fabricants de jeux sollicités de toutes part car un jeu Jolly Card était vendu à l’ unité (et plus ou moins, sous le manteau) plus de 25 000 Francs !

Donc tout le monde s’y est mis, mais dans la hâte aucun programme n’égalait celui de la Jolly Card issu de l’invention d’un programmeur génial. (Autrichien, je crois)

Vous pouvez vous faire une idée de l’aspect du jeu en tapant « Jolly Card » sur votre moteur de recherche. Et même en télécharger une version très approximative ici :

https://jolly-card.fr.uptodown.com/android/telecharger

version qui tourne sur un téléphone Android.

Vous constaterez que le graphisme des cartes était rudimentaire, presque comique en fait.

Face à cela l’idée m’est venue (pur challenge à l’origine) de développer à mon tour un programme qui simulerait parfaitement le jeu commercialisé de telle sorte que le joueur pourrait avoir l’ illusion de jouer sur le Jolly Card original, dont voici une représentation conforme trouvée sur YouTube

https://www.youtube.com/watch?v=C_GThF3liXA&frags=pl%2Cwn

Aussitôt dit, aussitôt raté !

Ecrire un programme qui affiche 5 cartes toutes différentes pour une première donne, qui permet d' en sélectionner un nombre quelconque et de remplacer dans une deuxième donne celles qui ne sont pas sélectionnées et qui en fonction du jeu affiché alors cherche s'il y a une combinaison gagnante et qui dans ce cas incrémente un compteur "crédit" en fonction de la combinaison trouvée et de la mise est trivial. Faire comme dans la Jolly Card une proposition de choix de cartes à garder lors de la première donne en vue d'avoir plus de chance pour la donne suivante (sorte d'aide au joueur, qui d'ailleurs s'en moque éperdument), n'est pas trop compliqué. Imiter les polices, les couleurs, la vitesse d' affichage du jeu d' origine pour que le résultat soit bluffant, ne l' est guère plus . D'autant plus qu' ayant à ma disposition plusieurs de ces machines, je pouvais copier l'intégralité des objets graphiques (cartes, fond d' écran ... ) pour les intégrer à mon programme.  L' ennui, c'est que cela ne marche absolument pas ! Présentée telle quelle à un joueur elle entrainera immédiatement la ruine ..... de l'exploitant. 

Pourquoi, cela ? Simplement parce que les gains payés pour chacune des combinaisons gagnantes est beaucoup trop élevé ! S'il existe un joueur connaissant les probabilités de sortie d'un jeu donné au Poker traditionnel ( attention avec 53 cartes, donc un Joker en plus, au lieu de 52 cartes, on est dans un tout autre monde !) il va être immédiatement tenté de jouer, et convaincu qu'il est face à un bug exceptionnel, dont il devient urgent de profiter avant que la machine ne sorte du réseau de distribution par faillite programmée. C'est là le premier écueil.

Alors pas désarmé pour un sou, le programmeur se lance dans le rétro-enginering, technique qui consiste à lire le code de la carte ( en assembleur 6502, donc). Ce code est écrit dans une des trois mémoires mortes (ROM) de la carte Si les deux contenant l'aspect visuel du jeu peuvent facilement être désassemblée et rendues compréhensibles, il n'en n'est pas de même de la ROM n° 1, contenant le programme. Celle là est totalement illisible ! Bien sûr, elle contient des données, mais rien qui ressemble à un code 6502 attendu. Après examen j'ai finalement compris le système de protection, mais hélas pas trouvé le moyen de le contrer. Ce qui me rassure, c'est que personne d' autre ne l'a trouvé non plus. on pourrait, bien sûr, mais la débauche de moyen technique et de temps pour y parvenir rendrait l'opération peu rentable, mieux vaut acheter une carte fonctionnelle au fabricant, elle sera remboursée en moins d' un mois d' exploitation. Et toutes les versions (et elles sont nombreuses) de programmes simulants la Jolly Card souffrent du même défaut : l' algorithme du jeu en est différent.

Les programmeurs ont tous des tas de projets en cours, quelques-uns, urgents, sont bouclés très vite, d'autres murissent des années et certains que l'on tient en réserve et qui sont comme des pierres dans leurs jardins, viennent les titiller de temps en temps. Holly Card, pour moi était de ceux-là. Et finalement il ne restait qu'une seule solution acceptable : se mettre dans la peau du concepteur, et tenter de raisonner comme lui. Et je crois y être parvenu.

Mais je disposais de quelques avantages sur certains car j'avais à ma disposition plusieurs Jolly Card fonctionnelles. Le meilleur test, et je l'ai exécuté des dizaines de fois, était de prendre une machine d' origine, de lui injecter du crédit pendant plusieurs semaines consécutives et de la faire jouer automatiquement nuit et jours. Et de faire dans le même temps la même chose avec la simulation qu'on a programmé soit même. Quand le crédit tombait à zéro, on en réinjectait et le test continuait. C'était là un paramètre intéressant : à partir de quel gain un joueur moyen décidait d' encaisser et de cesser le jeu ? A la fin du test, on regarde les statistiques de chacune des machines à savoir, nombre de jeux gagnants sortis, hauteur de ces jeux, etc etc et en dernier lieu pourcentage de redistribution de chacune des machines. En faisant varier des dizaines de paramètres sur la copie, j' ai fini par trouver un dosage qui finit par faire fluctuer les résultats entre les deux machines de façon à tolérer la part de hasard que contient toute tentative de modélisation.

Voilà, l' état des lieux, maintenant je suis prêt à répondre aux questions que vous vous posez. Et s'il y a des gens intéressés je vous signale que je viens d' avoir l'idée de transposer mon code assembleur en une version pour Windows de façon à en donner l' accès (en pièce jointe) à ceux qui voudront s' amuser avec une "presque vraie Jolly Card" sur leur PC. Une semaine ou deux devraient suffire pour cela.

Note, Comme vous pouvez le constater sur la vidéo, il y a un jeu, dans le jeu : Après la seconde donne, s'il y a un jeu gagnant, le joueur peut opter pour une option supplémentaire : Quitte ou double. Alors il choisit, petite ou grande. Petite pour toute carte allant de 1 à 6 (l'as étant le 1) ou Grande pour les cartes allant de 8 à Roi. Une carte est alors tirée et si elle correspond au choix du joueur, il double son gain, sinon, il perd tout. Il put toutefois ne risquer que la moitié de son gain. Imaginez un joueur qui vient de sortir un carré avec une mise de 1 €, il gagne 40 €, il double, gagne alors 80, puis 160, 320, 640 etc. Et certains doublent jusqu'à 8 fois de suite, bloquant ainsi le jeu qui impose le payement du joueur au delà de quelques 2200 €. Un joueur qui an doublant ainsi et qui atteint 2100 € peut donc encore doubler une fois et gagner 4400 €. Et croyez-moi, cela est fréquent. Moins toutefois que la perte de tout son gain !

 

Modifié par azad2B

Partager ce message


Lien à poster
Partager sur d’autres sites
azad2B Membre 3343 messages
Le prendre au sérieux, nuit gravement à la santé‚
Posté(e)

Alors, comment fait la machine, pour blouser le joueur ?

1- Il faut garder à l’esprit que le joueur sur Vidéo Poker est aussi un joueur traditionnel et il joue donc souvent des parties entre amis. Et pour cela, il revient donc a un jeu traditionnel sans Joker. Dans ces jeux, il est fréquent que pendant 5, 6 voire 8 ou 10 donnes, il ne touche aucun jeu pouvant l’inciter à participer activement à une donne en suivant les mises. Cela est tellement courant qu’il ne s’ en inquiète pas, il attend, tout simplement. Et, sauf bien sûr si c’ est à son tour de « blinder », cette inaction ne lui coûte strictement rien. Face à un jeu vidéo, chacune des mauvaises donne lui coûte une blinde. S’il vient de toucher deux brelans consécutifs soit un gain de 6 pour une mise de 2 lors il suffit de 4 jeux nuls pour que le gain dû aux 2 brelans soit entièrement annulé.

Du coup, le jeu nul devient la première arme de la machine. Pour elle il suffit de lever un drapeau avant la première donne, ce drapeau lui indique que s’il y a un jeu gagnant lors de la première donne, il faut refaire celle-ci. On recherche donc la teneur d’une donne sitôt qu’elle est distribuée, et avant de l’ afficher à l’ écran. S’ il y a un jeu gagnant, on refait un nouveau tirage avec toujours le drapeau levé. Chaque tirage d’ un jeu ne durant que moins de 2 ou 3 milli-secondes, le joueur ignore totalement que la machine a tiré plusieurs donnes avant de lui afficher celle qui a passé le test. On peut aussi, selon la nature du drapeau levé, laisser un jeu très petit, voire moyen à la première donne. Jeu qui rassure le joueur qui ignore que cette fois le drapeau agira sur la deuxième donne en lui interdisant toute amélioration de la donne n°1.

Cette première méthode à elle seule permet de maintenir la moyenne en cours aux alentour des 79 / 82 % selon le réglage des préférences de la machine. Et cela suffit pour que le joueur y laisse sa chemise. Mais ça n’est pas tout. A suivre.

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement

×