Report CDF 2019 - L'aventure OTD

Ma CDF 2019: l’aventure OTD

où l’on parle de la vertu du questionnement, de probabilités, de stratégie douteuse, de truffade et d’un certain 19 octobre à Clermont Ferrand...

Introduction

Ma CDF 2019 a commencé un peu plus d’un mois avant l'événement.

Lors d’un tournoi mensuel dans notre communauté Toulousaine, je sors Réanimator que j’apprécie sans être à fond, surtout pour évaluer l’impact du London mulligan sur le pack.

Lors de ce tournoi, je constate quelque chose que j’avais déjà remarqué par le passé: il arrive de temps en temps que le fait de ne pas emporter le toss et d’être on-the-draw (OTD) se révèle avantageux et permette de conserver une main de départ sans moteur de défausse.

  • T1: pioche, défausse d’une créature

  • T2: land, Lotus Petal ou Dark Ritual ou Simian Spririt Guide, sort de réanimation


À l’issue du tournoi je me pose cette question:

Quelle probabilité représentent ces mains de départ ?

(à savoir: un steak + un sort de réanimation + de quoi le lancer T2)

1ère partie: deckbuilding assisté par ordinateur

L’optimisation des mains de départ

Étant informaticien, je choisis de résoudre cette question par la voie de la simulation:

  1. Définir mes critères objectifs de mulligan,

  2. Tester des milliers de mains de départ,

  3. Calculer les probabilités de chaque critère.


J’aurais pu développer un programme un peu sale et spécifique à mon deck, mais je me laisse aller à développer un outil un peu plus générique qui pourrait être utile à d’autres (en fait tous les développeurs veulent faire un outil plus générique :) ).

Après quelques heures de travail, j’obtiens un outil capable de comprendre les critères de mulligan sous la syntaxe suivante:

Cool !


Je lui donne ma liste originale (V1), je lui fais faire des milliers de simulations aléatoires de mains de départ et j’obtiens les probabilités suivantes:

turn 1 imp 2,8%

turn 2 imp 8,4%

turn 2 looting 6,7%

turn 2 OTD 11,0%

turn 3 OTD 7,5%

looting to find last element 16,7%

probe to find mana source 2,7%

no match 44,2%


Maintenant j’ai ma réponse: avec cette liste, j’ai:

  • environ 18% de probabilités de réanimer T1 ou T3 (que je sois OTP ou OTD),

  • + 18,5% de probabilité d’avoir une main me permettant de réanimer T2 ou T3 si je suis OTD.

Choc. C’est beaucoup. Bien plus que je ne pensais…

Du coup naît une nouvelle question:

Et si jouer Réanimator OTD était une stratégie viable ?

on peut espérer être OTP environ une fois sur deux; un peu plus avec de la chance...

en revanche si ce qu’on veut c’est être OTD, ça on peut l’obtenir 95% du temps !

Grâce à cet outil, je tâtonne et fais évoluer ma liste pour améliorer mes probabilités de conservation de main de départ (44% de mulligan sur la liste V1 c’est pas ouf).

Je parviens à ces stats:


turn 1 imp 0%

turn 2 imp 10,1%

turn 2 looting 10,1%

turn 2 OTD 13,2%

turn 3 OTD 9,3%

looting to find last element 19,0%

probe to find mana source 3,8%

no match 34,6%

Avec cette liste (V2):


// mana

3 Simian Spirit Guide

4 Lotus Petal

4 Crumbling Vestige

5 Mountain

9 Swamp


// discard

4 Faithless Looting

3 Putrid Imp



// reanimation

4 Animate Dead

4 Exhume

1 Reanimate


// creatures

4 Hand of Emrakul

4 Greater Sandwurm

4 Ulamog's Crusher



// others

3 Dragon Breath

4 Gitaxian Probe

Quelques remarques:

  • Disparition des Dark Ritual en faveur des Simian Spirit Guide

  • Passage de 1 Crumbling Vestige à 4 et ajustement de la manabase

  • Changement de la 5ème unco: Reanimate à la place de Pathrazer of Ulamog

  • Passage de 10 moteurs de défausse à 7 (-2 Tormenting Voice, -1 Putrid Imp)

Le choix explicite d’une stratégie OTD permet de baisser ce nombre

  • Passage de 9 créatures réanimables à 12 !


Avec cette liste et ces critères de mulligan on rejette 34,6% des mains. C’est à dire que l’on conserve quasiment ⅔ des mains lorsque l’on est OTD, avec de très bonnes chances de réanimer T2 ou T3.

Notez également qu’il y a 22,5% des mains où être OTD est favorable (réanimation T2).

C’est monstrueux.


A ce moment, je me dis qu’il faut creuser et tester cette stratégie.

Mais de très bonnes chances de réanimer T2 ou T3 c’est gentil mais pas assez précis.

Alors...

Quelle est la vitesse de cette liste ?

Quelle régularité ?

Peut-on l'améliorer ?


L’optimisation de la vitesse

Pour un deck de sortie comme Réanimator, le goldfish a du sens.

Je prends mon deck, je fais plusieurs dizaines de tests et je confirme que ça a l’air rapide et surtout assez stable.

Mais bon j’ai pas envie de me contenter d’impressions, et les tests manuels, ça va 5 minutes.


Adepte des coding games, développer un automate capable de piloter le deck en goldfish ne me semble pas insurmontable.

Après quelques heure de dév, j’obtiens:

  • Un outil (framework) générique capable de lancer des tests massifs en goldfish et de calculer des statistiques,

  • Un automate pour piloter mon deck qui reproduit assez fidèlement ma manière de jouer le pack.


Les 1ers tests donnent:

Important: ce que j’appelle win turn ici est en fait le 1er tour où je parviens à réanimer une créature. On est d’accord que ce n’est pas synonyme de victoire: c’est simplement ça que j’essaie modestement d’optimiser.


Comment lire ces résultats:

  • J’ai 65% de chances de conserver ma main de départ, ce qui me donne 18% de chances de réanimer T1 et 63% de chances de réanimer T2

  • Avec 1 mulligan (23% des simulations), mes chances de réanimer T1 se maintiennent à 15% et T2 passent à 50%

  • Avec 2 mulligans (8% des simulations), mes chances de réanimer T1 baissent à 7% et T2 résistent à 53%

  • Avec 3 mulligans (4%) les probabilités chutent drastiquement.


Pour des raisons de simplicité, l’outil propose aussi des valeurs synthétiques:

  • Average win turn, qui qualifie la vitesse moyenne (par nombre de mulligans pris et au global),

  • Ecart moyen, qui est un indicateur de dispersion (et donc qualifie la régularité).


Vers la liste finale

Je vous fais grâce de mon lent cheminement vers ma liste finale, mais je me suis énormément appuyé sur les outils que j’ai développés pour tester des listes et des micro-optimisations.

Ces outils m’ont permis notamment de répondre à la question :

Jusqu’à combien de mulligans je peux aller ?

L’outil me répond: 3.

C’est bien pratique des réponses comme ça: ça évite de se prendre la tête quand on joue.

Une autre question que j’ai eue:

Si je me fais gérer ma 1ere créature, quel est le tour moyen pour sortir une seconde créature?

L’outil me répond: OTD, tour 4,56 ±1,81 - assez grande dispersion mais la médiane est à tour 4

Bref, la liste indiquée plus haut (V2) est la meilleure que j’ai obtenue au regard de l’optimisation des mains de départ et de la vitesse, mais je choisis une liste légèrement différente (4 Putrid Imp / 3 Gitaxian Probe)

Très légèrement moins rapide mais je l’ai jugée un peu plus résiliente au control (7 moteurs de défausse ca me semblait vraiment peu, et Imp c’est bien face à du sacrifice et parfois ça permet de tourner autour d’une Faerie Macabre ou Relic of Progenitus si on joue Exhume et qu’on a une 2eme bête en main).

Bref, me voilà paré avec la liste finale:

Quelques mots sur le side:

  • Duress pour sonder et assurer mes sorties post-side

  • Apostle's Blessing plus ou moins pour les mêmes raisons mais contre des menaces différentes. Super effet de surprise quand on est fulltap et qu’on paye le 1 incolore avec un Simian Spirit Guide

  • Electrickery contre elfes qui peut droper suffisamment de créatures pour ne pas être particulièrement gêné par l’annihilator

  • Mind Rake contre les decks aggro linéaires (Slivo, MGA, éventuellement Elves) tout en servant mon plan de jeu

  • Shenanigans contre les Relic que je n’aurai pas pu chopper avec Duress

  • Darkness est un ajout de dernière minute pour éventuellement gagner un tour sur le big turn de decks qui peuvent faire la course avec moi, surtout si je les laisse OTP (ex: Elves et MGA)


Armé de cette liste impitoyable et de ma redoutable stratégie de commencer systématiquement OTD, je la teste en live le 30 septembre à Toulouse dans un tournoi où nous ne sommes que 8 (3 rondes). Je finis 1er en écrasant littéralement la concurrence et ne perdant pas une seule manche. Je fais même une sortie gaillarde T1 Ulamog Crusher + Dragon Breath.


À moi la coupe de France, je suis un génie de l’informatique doublé d’un pro-player en puissance :)

2ème partie: la Coupe de France

L’expédition

Je pars à Clermont avec 6 autres Toulousains: Mathieu (6sco), Yann (Mr Yann), Jean-Michel (VeloO), Sébastien (Abyssal), Benoît (SunTchou) et David (Donald).

Nous sommes tous bien décidés à en découdre même si nous n’y connaissons rien en couture ni en jeux de mots de qualité.

Nous arrivons le vendredi soir et optons pour une alimentation à base de truffade, chacun pour des raisons différentes mais toutes excellentes:

  • la nourriture locale pourrait-elle nous attirer les grâces des dieux Arvernes ?

  • un peu effarouchés par la proximité virile que nous promet ce week-end, certains espèrent que la truffade aurait un effet anaphrodisiaque comparable au bromure ?

  • du fromage avec des patates, c’est bon !


Repus, nous prenons un repos bien mérité avant la rude journée de demain.

Ronde 1 - lost

Joueur : Ugo, Nantes

Deck: Jeskai snow

Score: 1-2

G1 - win

Je garde ma main, réanime T2 un Annihilator (1 ou 2), Ugo n’a pas de gestion: je gagne

G2 - lost

Je ne sais pas ce qu’il va sider: +1 Shenanigans (contre une éventuelle Relic ?), -1 Probe

Je garde ma main, tente une rénimation T2 ou T3 (je ne sais plus) et me prends une Faerie Macabre sans pouvoir tourner autour (c’est faisable si le sort de réanimation est Exhume et qu’on a moyen de discard une autre créature après la résolution de Faerie)

Je re-tente une réanimation 2 tours + tard: re-Faerie Macabre

Ugo contrôle, je ne sais plus si on va au bout ou si je concède

G3 - lost

À la 2 j’ai vu pas mal de contres: +2 ou 3 Duress, -1 Shenanigans, -1 Probe.

Je sais que je ne peux rien faire contre Faerie Macabre, juste tourner autour comme décrit plus haut.

Fidèle à ma stratégie, je laisse le play à Ugo.

Je ne touche pas mon side mais touche une main qui peut win T2 (Imp + Exhume + Ulamog Crusher + Dragon Breath + tout ce qu’il faut pour caster tout ca)

T1: Swamp + Imp

T2: Ugo n’a qu’un land untap (plains): je tente une réanimation Annihilator 2 avec haste : je me prends un Swords To Plowshares :(

Je continue inlassablement à tenter d’autres réanimations et me prends tout le side (Faeries Macabre, Tormod’s Crypt)

Pourquoi tant de hate ?

GG

Bilan

Je ne connaissais pas le pack, personne ne le joue encore à Toulouse.

Avec le recul je pense que c’est un exemple où j’aurai peut-être dû déroger à ma règle de jouer OTD, et commencer la game 3… Trop de side en ma défaveur pour passer OTD.


Ronde 2 - win

Joueur : Quentin, Paris

Deck: UR pyro

Score: 2-0

G1 - win

Je ne me rappelle plus si j’ai gagné le toss ou pas, en tous cas chaque fois que cela s’est produit j’ai laissé le play à mon adversaire, lisant l’incompréhension sur son visage…

Sur cette game j’ai exactement la main où être OTD est favorable:

T1 je pioche et discard un steak fin de tour

T2: réanimation (un Annihilator 1)

mon adversaire n’a pas de quoi gérer, ça prend un peu de temps (qui me permet de voir un peu son deck) mais je vais au bout. Je réanime même un 2eme steak avant qu’il ne concède

G2 - win

Toujours pareil: dans le doute +1 Shenanigans (contre une éventuelle Relic ?), -1 Probe

Là je découvre un main excellente mais avec Reanimate et Hand of Emrakul (CCM 9) me feraient perdre 9 points de vie. Face à un jeu avec du burn je le sens pas et je mulligan.

Je garde ma 2eme main et commets un missplay T1:

Quentin a Terramorphic Expanse en jeu, je land Mountain, caste Faithless Looting, il fetch Island et me Daze alors que j’avais une Lotus Petal en main. J’ai perdu mon moteur de défausse et n’ai pas pu mettre de créature dans mon cimetière :’(

Mais je chatte sur T2: topdeck Putrid Imp, land Swamp, cast Imp, défausse une créature, Petal + un sort de réanimation qui passe

Quentin pose une relic le tour suivant… trop tard

Il ne gérera pas ma bête


Ronde 3 - win

Joueur : Eddy, Lyon

Deck: Affinity Atog

Score: 2-1

G1 - win

Je fais 1 mulligan et garde la 2eme main.

Je réanime un Ulamog Crusher T2 mais il a fait une grosse sortie comme seuls Elves et Affinity peuvent faire, il a beaucoup de permanents qui lui permettent de tempo.

Il ne pioche pas vraiment de solution et le temps joue pour moi. Il finit par double Galvanic Blast mon Ulamog Crusher mais je l’avais senti venir et avais posé un 2ème Putrid Imp pour finir les derniers points de vie (mon graveyard est plein, ils ont le seuil).

G2 - lost

Là je commets une erreur en gardant une main greedy (un seul land) que mon algorithme aurait rejetée sans regret

J’attends une source de mana rouge quelques tours. Quand je la touche je Faithless Looting puis réanime avec Animate Dead, mais me prends un Ray Of Revelation (du side).

Par le suite je ne touche qu’un 2ème Animate Dead qui ne demande qu’à se faire empaler par Ray Of Revelation en flashback...

G3 - win

Encore un fois je laisse le play à mon adversaire et tombe sur ces 20% de mains de départ favorables.

T1 je pioche et discard un steak fin de tour

T2: réanimation (un Annihilator 1 ou 2)

J’ai pas tout noté mais la manche était épique, beaucoup d'interactions, du skill. Eddy résiste avec un Atog et une brochette d’artos mais je gagne à l’Annihilator. Cette partie était un régal.


Ronde 4 - win

Joueur : Stéphane, Chambéry

Deck: Boggles

Score: 2-1

G1 - win

Encore un fois j’ouvre une main où être sur le draw est favorable (22,5% d’après les simulations)

T1 je pioche et discard un Ulamog Crusher fin de tour

T2: réanimation

Stéphane a quand même eu le temps de sortir un crapaud simic. Boggles !

G2 - lost

Boggles c’est chaud. L’explosivité du pack peut me prendre de vitesse. Je side Darkness (un fog noir) pour annuler une attaque létale, -1 Probe.

Je garde une nouvelle main dans les 22,5%, mais la bête est un Greater Sandwurm. Ca peut ne pas mettre assez de pression face à Boggles mais je garde.

T1 je pioche et discard Greater Sandwurm fin de tour

T2 je réanime mon wurm

En face Stéphane me sort un Boggle avec Cape de Tatou

Il n’a pas encore assez d’enchant et regagne moins de PV qu’il n’en perd mais ce n’est qu’une question de temps et sans l’Annihilator je ne mets pas assez de pression.

Ne voyant pas de solution arriver, je choisis d’enchanter mon wurm avec Dragon Breath pour faire les quelques PV qui manquent pour gagner un tour plus tôt.

Sur son tour létal, je Darkness

À moi de jouer: Stéphane a 9 PV, j’ai un wurm équipé de Dragon Breath et une source de mana rouge. Il me manque un R pour achever, je suis sur le topdeck

Je ne le touche pas et le laisse a 1. Il me tue ensuite.

G3 - win

+2 Duress, -2 Probe

Je mulligan 2 fois et garde une main sans sort de réanimation mais avec Imp, une créature et un Duress

T1 Imp

T2 Duress: je prends Cape de Tatou

Il joue une relique mais short mana il n’a pas de quoi l’activer

Je topdeck un Exhume

Je tourne autour de relique (simplement en défaussant une carte inutile) et réanime un Ulamog Crusher + Dragon Breath


Ronde 5 - lost

Joueur : Amaury - Nantes

Deck: Faeries

Score: 0-2

G1 - lost

Je garde ma 1ere main qui n’est pas idéale.

Lorsque je comprends que j’affronte un deck Faeries, je fonds en larmes (intérieurement). C’est mon pire matchup. Les contres sont déjà chiants mais avec un peu de chance je peux passer avec mes mana gratuites (Petal et Simian Spirit Guide) si j’ai 2 sorts de réanimation. Le pire dans ce matchup c’est Snap et autres bounces.

Je réanime T3 une créature avec Annihilator qui passe.

Je mets Amaury à 7 PV, il n’a plus de cartes en main

Il topdeck Snap, et je ne peux pas repartir.

G2 - lost

Face à la difficulté du matchup je déroge à ma stratégie de jouer OTD et je prends le play. Ma seule option c’est une sortie ultra rapide.

+2 Duress +2 Apostle’s Blessing, -3 Probe -1 Greater Sandwurm

Je garde une main sans sort de réanimation mais avec 2 Looting

Dans les tours qui suivent, je joue mes 2 Looting, j’en trouve un 3ème, je crache toute ma mana pour jouer les 3 en flashback (je vois donc 12 cartes en plus de mes pioches) mais ne trouve pas de sort de réanimation :(

Je finis par trouver 1 sort de réanimation mais je sais que ca n’est pas suffisant car il garde toujours 2 Iles untap.

J’attends patiemment le 2eme et je tente de réanimer

Il laisse passer et me Snap avant la phase de combat

Je joue le 2eme: Spellstutter

GG

Bilan

Pas grand chose à dire: ce matchup est quasiment ingagnable.

Je regrette d’être passé si près à la 1 mais de toutes façons j’ai très peu de chances post side.


Ronde 6 - lost

Joueur : Yann - Toulouse

Deck: Jace Top

Score: 1-2

Nous sommes venus à 8 Toulousains, et il y a eu pendant cette CDF beaucoup de duels fratricides.

Notamment Matthieu (6sco) qui enchaîne ses 2 premières rondes contre des Toulousains.

Rencontrer Yann c’est un peu triste mais en même temps c’est un classique: nous nous affrontons toujours en tournoi à Toulouse ! :D

Je le connais extrêmement bien (sur le plan MTG je veux dire - ne nous méprenons pas), c’est un excellent joueur, spécialisé dans le deck Jace Top (je ne l’ai vu qu’une fois faire des infidélités à son pack mais je pense qu’il avait pris des psychotropes).

Jace Top est un deck combo assez lent mais stable et qui - piloté par un bon joueur comme Yann - arrive à temporiser tout en déroulant son plan de jeu.

On se souhaite une bonne partie et on démarre.

G1 - win

Je garde une bonne main, Yann ne pose pas de land T2, et moi je réanime T2

Yann concède

G2 - lost

J’ai beaucoup parlé de mes travaux et de ma stratégie de jeu à mes camarades Toulousains.

Il me donne le play (coquinou!) et je le vois sider comme un sagouin (6 ou 7 cartes).

Je connais à peu près son side: Relic et Echoing Truth

Je side + 3 Duress -3 Probe

J’ouvre une main sans Duress où être OTD m’aurait permis de réanimer T2 (j’ai tout sauf le moteur de défausse). Je fais le choix difficile de la garder, ne rien jouer T1 et discard T2 EOT pour réanimer T3.

Mais T1 Yann joue une Relic et douche mes espoirs de sortir T3

La partie est longue, Yann est prudent et avisé de l’être. Je cherche en vain un moteur de défausse et n’en trouve juste pas.

Yann finit par assembler la combo.

G3 - lost

Je suis OTD, je garde une main sans sort de réanimation mais avec Looting

Même scénario qu’à la 2 mais cette fois je recherche désespérément un sort de réanimation.

Je le trouve beaucoup trop tard, Yann contrôle, il a la main gavée de Echoing Truth et va au bout.

Bilan

C’est clairement la partie où mon deck a le moins bien fonctionné. Post side Yann est très bien mais il m’est déjà arrivé de le prendre de vitesse malgré tout. Les manches 2 et 3 sont désespérantes, j’attends un truc qui ne vient jamais et Jace Top est un deck où tu vois ta mort arriver inexorablement à 2 km/h.


Ronde 7 - win

Joueur : Alexis - Clermont

Deck: blue meule

Score: 2-1

G1 - win

Je garde une bonne main avec Probe

T1 Probe me montre 1 Counterspell et 2 Mana Leak. Chaud !

J'attends d’avoir 2 sorts de réanimation pour tourner autour

EOT T2: je recycle Greater Sandwurm

T3 1 sort de réanimation contré, le 2eme passe

Alexis n’a pas de quoi gérer la bête et je vais au bout

G2 - lost

Avec la quantité de contres que j’ai vus, je side des Duress

Je sors super lent et Alexis me sort rapidement 2 Tormod et 1 Relic

G3 - win

Encore une fois je déroge à ma stratégie de jouer OTD et je prends le play. J’espère toucher mes Duress pour lui défausser son side.

Je garde une bonne main avec tout ce qu’il faut + Duress.

Moi idée était bonne (ou chanceuse?): mon Duress T1 me permet de discard son Duress, qui m’aurait pris mon Reanimate (seul sort de réanimation en main). Je ne vois rien d’autre dans sa main.

Fin de son T1 Alexis joue Thought Scour: je mets les 2 cartes du dessus de mon deck dans mon cimetière: Ulamog Crusher + Dragon Breath ! Merci (sans ça j’avais Imp et Greater Sandwurm en main, mais ca aurait été moins rapide).

T2 Reanimate: Alexis concède

Bilan

Je termine 38eme à 4-3-0.

Un peu déçu par le résultat mais ravi par cette super journée de compétition et les gens que j’ai croisés.


Statistiques

Pour boucler la boucle, quelques statistiques:


simulation tournoi

0 mulligan 65% 84% (16/19)

1 mulligan 23% 11% (2/19)

2 mulligans 8% 5% (1/19)


simulation tournoi

réanimation T1 16% 0% (0/19)

réanimation T2 58% 63% (12/19)

réanimation T3 15% 11% (2/19)


Ma stat de réanimation T1/T2 est assez nettement inférieure à la simulation mais ma stat de conservation de main de départ est au dessus.

Pourtant j’ai scrupuleusement appliqué les critères que je me suis fixés (j’ai même rejeté une main qui passe les critères contre UR pyro car je ne voulais pas perdre 9 PV avec Reanimate).


Critique de ma stratégie

Avec le recul, je suis convaincu que ma stratégie de jouer Réanimator OTD est bonne dans tous les cas sur la game 1 (j’ai gagné toutes les manches n°1 sauf contre Faeries).

Néanmoins en fonction du matchup il faut peut-être déroger à cette règle sur les manches suivantes.

Je regrette en particulier de ne pas l’avoir fait à la 1ere ronde (contre Jeskai Snow).


Le repos des guerriers

Après cette journée bien dense, nous assistons au top 8 et au triomphe des Clermontois.

Bien joué nestalim !


Ensuite avec une petite bande de gens adorables nous nous abreuvons de bières, nous restaurons à base de truffade (oui, parce qu’en fait nous suivons un régime à base de gras) puis nous re-abreuvons de bières jusqu’à une heure avancée.

De gauche à droite: Denis (papaoursdelux), Manu (Manu34), Xavier, Marc (BladeLF), Sébastien (Abyssal), Jérémy (zombie33), votre serviteur (pismy), Yann (Mr Yann)

Derrière le portable: Maxime (zebigcoconut)

3ème partie: les outils

Tout mon code est en Java (désolé, c’est pratiquement ma langue natale, je le parle mieux que le Français).

Le code est dispo sur GitHub sous license Apache 2.0: https://github.com/pismy/perfect-deck

Si vous avez des compétences en Java, n'hésitez pas à l’essayer, le faire évoluer, me proposer des Pull Requests.

Lors des semaines précédant la CDF j’ai développé quelques automates pour d’autres decks.


Infect

Le code est étonnamment très simple.

Règles de mulligan:

  • je garde une main si j'ai au moins une créature infect + de quoi la caster + au moins 2 boosts

  • on va jusqu’à 3 mulligans max

Code de l’automate:

  • on commence par caster une créature

  • ensuite à chaque tour on joue tous les sorts de boost possibles sur la créature

  • s’il reste de la mana en fin de tour, on caste les créatures qui nous restent en main


Cet automate sait gérer la plupart des cartes présentes dans les decks infect.

Cela m’a permis de comparer en goldfish la version Invigorate (désormais bannie) et la version Scale Up.

Intéressant de voir qu’en goldfish la liste Scale Up tient carrément la route.

En fait elle est même sensiblement plus rapide que la version Invigorate, mais la contrepartie c’est qu’elle est moins résiliente:

Guillaume jouait 3 Mental Misstep et 4 Apostle’s Blessing (contre 2 Apostle’s Blessing pour Manau) qui sont des cartes mortes en golfdfish, mais redoutablement fortes pour résister aux decks contrôle.

Remarque: Manau joue dans sa liste 4 Groundswell, qui peut être meilleur ou moins bon que Giant Growth selon que l’on land ou pas. En remplaçant simplement les Groundswell par des Giant Growth on constate qu’on a nettement moins de kills T2 mais en revanche on réduit sensiblement la dispersion (donc win turn plus régulier). Quelle est la meilleure option ? C’est au builder de décider mais en tous cas l’outil nous donne ces informations et permet de faire ses choix en connaissance de cause.


Burn

Je ne vais pas trop m’étendre car j’ai envie de finir ce report un jour et je ne suis pas encore très satisfait de mon automate.

L'algorithme en particulier est nettement plus complexe dans le séquencement optimal des spells.

Exemple de cas complexes:

  • il est préférable de jouer Monastery Swiftspear avant les spells non-créature

  • il faut avoir blessé l’adversaire avant de jouer les sort pour leur coût de spectacle ou Needle Drop

  • quand choisir de recycler Forgotten Cave ?

  • Fireblast ne se joue à priori que pour le big turn

  • jouer Ghitu Lavarunner est mieux si il a le haste ou si on est capable de lui donner avant la phase de combat

  • ...

Un cerveau humain fait ça assez naturellement (“quelle merveilleuse machine” aurait dit Alan Turing), mais le mettre sous forme de programme est rudement complexe. Tant et si bien que la seule option que j’ai trouvé pour l’instant c’est d’essayer tous les sorts dans tous les ordres possibles et retenir l’ordre qui fait le plus mal. Mais du coup le test goldfish de cet automate est 100 fois plus lent que les autres.


What’s next ?

Le prochain automate que je vais développer, c’est MGA.

J’ai l’impression que le code sera à peine plus complexe que Infect. En tous cas certainement plus simple que Burn.

Côté framework je n’en suis qu’au début et je pense rajouter pas mal de fonctions pour effectuer certaines routines très récurrentes dans les automates.


Ex:

if(canPay(cost)) {

produce(cost);

cast(spell, cost);

}

Si ca vous amuse et vous intéresse, n’hésitez à proposer des contributions et évolutions.

Développer un automate c’est très semblable à faire des coding games.


Conclusion, ce que j’ai appris

Ce que je vais dire est sans doute une évidence, mais lorsque l’on tente de mettre en algorithme notre façon de jouer, on comprend très clairement qu’il y a 3 facteurs pour optimiser une liste en vitesse (goldfish):

  1. les critères de mulligan (des critères trop stricts vont occasionner trop de mulligans, des critères trop lâches des sorties trop molles),

  2. la manière de jouer le deck (l’automate),

  3. la liste elle-même (a un impact à la fois sur les probabilités de conservation de main et sur le goldfish).

Ces 3 facteurs sont importants et ont un impact réel sur nos chances de gagner rapidement.

On peut aussi noter que jouer OTP ou OTD a aussi un impact sur la vitesse en goldfish, mais ce n’est que rarement un facteur sur lequel on a une prise puisque dans l’écrasante majorité des cas on souhaite être OTP. Réanimator ou The Rack sont 2 rares contre-exemples.

Les outils que je propose permettent d’avoir un guide mathématique objectif pour réaliser ces optimisations.

Une autre vertu de mettre en algorithme notre façon de jouer c’est qu’une fois qu’on est parvenu à des critères de mulligan et à un automate que l’on juge optimaux, on peut les appliquer mécaniquement lorsque l’on joue sans trop se poser de question et en ayant confiance dans le fait que ce sont les choix statistiquement les meilleurs.