Magic, Hearthstone, Netrunner... Comment mieux comprendre les contraintes de construction de deck grâce au code ?
Présentation de Gary Mialaret aux Human Talks Novembre 2015
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Gagner aux TCG grâce à l'informatique
1. GAGNER AUX TCG GRÂCE
À L’INFORMATIQUE
Hearthstone, Magic, et autres Yu-gi-oh! : que
peut-on résoudre avec du code
Gary « Tolki » Mialaret
2. Introduction
• Qui suis-je ?
• Ex consultant chez Octo Technology
• Actuellement Associate Producer chez Ubisoft
• Auteur pour Wizards of the Coast
• Commentateur de tournois eSports et youtubeur
• Magic, LoL, Starcraft 2
• Contenu régulier sur ogaming.tv de 2012 à 2014
• Blogueur débutant (tolkicasts.com)
3. TCG ?
• Trading Cards Game
• Regroupe en vrai tous les jeux de cartes
• Hearthstone (pas de trade)
• Netrunner (distribution non aléatoire des cartes)
• Point commun
• Structure de tour
• Système de resource
• Tirage aléatoire de cartes d’un deck
4. Pourquoi coder ?
• Répondre à des questions « simples »
• Combien de terrains jouer à Magic ?
• Comment tuer le plus vite avec un deck agressif ?
• Y répondre analytiquement
• HYPGEOMDIST(succès attendus; nombre de tirages; nombre de
succès; taille de la population)
• Calcul : avoir 2+ terrains en main plus de 90% du temps
• Jouer 26 terrains sur 60 cartes
• Contraire à l’expérience
5. Pourquoi coder ?
• Les décisions de jeu commencent très tôt
• Mulligan
• Objectifs (X terrains) atteints plus facilement
• À Magic : chaque mulligan a une carte de moins
• À Hearthstone : on peut mulligan une fois quelques cartes
• Influence forte et compliquée à représenter
• Modélisation informatique puis simulation !
• Inspiration : Frank Karsten sur channelfireball.com
6. Exemple 1 : terrains à Magic
• Deck agressif
• Majorité de cartes à 1 et 2 manas
• Veut absolument son deuxième terrain pour le « tempo »
• Question : combien de terrains jouer au minimum ?
• Règle de Mulligan
• Mulligan toutes les mains avec 0, 1, 5, 6, 7 terrains si on a 7 cartes,
0, 5, 6 sinon
7. Exemple 1 : terrains à Magic
• Code :
• Création d’un objet Deck pour simuler le tas de cartes
• Un champ pour représenter les types de cartes (dans notre cas, on a
terrain et non-terrain : 2 types)
• Création d’un objet Hand pour simuler la main du joueur
• Défini en abstract la fonction Boolean mulliganCheck() qui dépend de
notre problème
• Simulation de 100.000 mains pour chaque quantité de terrains (de
10 à 30)
• Combien de mains correspondent à notre contrainte (2 terrains) ?
• À partir de quelle quantité a-t-on 90% de chance de réussite ?
8. Exemple 1 : terrains à Magic
• Résultats :
• Il nous faut au grand minimum 19 terrains. Avec nos règles, on
mulligan X% des mains
• Si l’on change notre contrainte à 3 terrains (avec des règles
adaptées), on se retrouve à « devoir » en jouer 29 !
• Définition des besoins = cruciale
9. Exemple 2 : le meilleur deck aggro
• Faisons un deck à Magic dont le but est de tuer le plus
efficacement possible sans adversaire (goldfish)
10. Exemple 2 : le meilleur deck aggro
• Différences :
• Structure de tour
• Logique de jeu
• 5 classes de cartes
• Méthode :
• Jouer 100.000 parties avec chaque configuration possible
• Regarder à quel tour moyen l’on gagne
• Affinement en étudiant notre premier résultat et ses variations
11. Exemple 2 : le meilleur deck aggro
• Notre deck « parfait » contient :
• 16 créatures à 1 mana
• 11 créatures à 2 manas
• 13 sorts de dégâts directs
• 20 terrains
• cohérent avec notre première simulation !
• Article complet :
• http://www.channelfireball.com/articles/frank-analysis-finding-the-
optimal-aggro-deck-via-computer-simulation/
• S’en sert pour en retirer une règle de mulligan
• Regarde le kill moyen de la main (grâce à l’expérience)
• S’il est plus lent qu’une main avec X-1 cartes : mulligan
12. Conclusion
• On peut analyser des systèmes « inhabituels » avec un
peu de code et beaucoup de suppositions
• Il faut poser les bonnes questions, et comprendre ce que
signifie les réponses
• La vérité est ailleurs
• Guidelines != règles
• On peut aller beaucoup plus loin !
• Algorithmes évolutionnistes pour Starcraft 2 et les bases de mana
à Magic
• Là où l’énumération n’est pas envisageable
• Implémenter les algos avec des vraies cartes et règles de jeu