mai
2009
Pas eu trop le temps de coder sur BeloteMaster ces derniers jours… mais ça n’empêche pas de gamberger !
Basiquement, les instances de BeloteJoueur devront répondre aux questions de l’ordonnanceur, en fonction de la phase de jeu, les deux principales étant:
– Est ce que je prend à l’atout en cours? Est ce que j’attends le tour suivant pour proposer une autre couleur, prendre sans atout ou tout atout?
– Quelle carte jouer?
Pour répondre à ces questions, BeloteJoueur va devoir s’en poser d’autres. Exemple: Quelles sont mes cartes à l’atout? A quelle position suis je dans le tour de jeu? Quel est le score? Qui a joué quoi? Mon partenaire est il maître dans le tour courant? etc…etc…
Et pour répondre à ces questions plus précises, l’IA va devoir combiner des éléments de logique (« j’ai valet et 9 à l’atout, je prend » ; « mon partenaire a coupé, je peux me défausser » par exemple) mais aussi des éléments quantitatifs permettant la prise en compte du risque (calcul de la probabilité que le joueur suivant ait cette carte, calcul de la probabilité que mon partenaire possède la carte qui me manque par exemple).
La base de connaissance du joueur pourrait prendre plusieurs formes:
– une forme statique, qui constituerait l’ensemble des règles indépendantes du contexte du jeu (roi et dame à l’atout me donne belote = + 20 points)
– une forme dynamique, qui pourrait s’adapter en fonction d’un niveau de risque calculé à partir des évènements passés, comme par exemple, la mise en mémoire des pourcentages de fois où un évènement s’est produit ( du type, » 78% des fois où mon partenaire a pris à pique, il avait le valet »)
Bien sûr, tout cela paraît idéal quand on le décrit avec des mots, et c’est l’implémentation de tout cela qui va poser problème.
Une des premières choses à faire est bien entendu de trouver les règles les plus simples et les plus génériques et pour cela, il faut à la fois observer les bons joueurs de belote mais aussi essayer d’identifier des raccourcis « mathématiques » qui permettront de donner un comportement à peu près réaliste, sans être trop gourmand en temps de calcul, tout en restant relativement invisible pour un joueur lambda.
Pour la décision de « prise » par exemple, il va me falloir trouver un moyen de calculer un estimateur de gain que BeloteJoueur produira avant sa prise de décision. Je pense pondérer les décisions par un facteur « risque » qui sera le comportement face à la prise de décision: au lieu d’avoir une décision binaire basée sur des seuils, il pourrait y avoir un tirage aléatoire de chiffre combinant le facteur de risque acceptable / risque réel calculé (exemple: p = 0.3 de réussir le contrat, p = 0.5 de prise de risque dans ces conditions, c’est à dire que le joueur prend une fois sur deux la décision d’aller contre son estimation et de prendre le risque lorsque sa proba de réussite est estimée à 0.3 (30% de chances de succès, ça serait une sorte de tête brûlée celui là :D). Cela donnera plus de flexibilité au joueur et moins de répétitions apparentes (les comportements types qu’on finit par identifier lorsqu’on joue beaucoup).
Bref, l’œuvre s’annonce gargantuesque !
Je crois qu’il en existe déjà pas mal. J’en ai testé que un ou deux, l’IA était pas terrible mais c’était il y a longtemps !
Sinon ce qui me pousse, c’est la curiosité
Existe t’il déjà des simulations de belote (avec IA) ?
Des bons ? des mauvais ?
Qu’est-ce qui te pousse à en développer un mis à part le fait que tu aimes ce jeu et que c’est toujours instructif de faire les choses par soi même ?