← Blog OutilsIA

Les 3 patterns qui gagnent au Dragon — extraits de 5000 parties IA

22 avril 2026 · OutilsIA.fr · ~7 min de lecture · Article 8 de la série Dragon Labyrinth

On a logué 5000 parties Oracle-X1 sur Dragon Labyrinth. Puis on a fait tourner un n-gram miner sur les séquences de mouvements. Le résultat est plus brutal que prévu : les mouvements répétés gagnent, attendre tue. Une leçon universelle pour les agents en observabilité partielle.

Le setup

Pour chaque partie loguée, on enregistre la séquence des mouvements du chevalier : up, down, left, right, pass. Sur 5000 parties, ça donne environ 400 000 mouvements en tout, répartis par cluster de labyrinthe (voir l'article précédent sur les 8 clusters topologiques).

On compte tous les trigrammes (triplets de mouvements consécutifs) et on mesure leur win rate : proportion de fois où ce triplet apparaît dans une partie gagnante vs perdante. Seuils : trigramme doit apparaître au moins 5 fois pour être comptabilisé.

Top 5 des patterns qui gagnent

TrigrammeWin rateObservations
up → up → up29 %939
left → left → left28 %582
up → left → left31 %198
up → up → left24 %887
down → down → left21 %1150

Baseline Oracle-X1 : 14 % WR sur l'ensemble. Ces patterns gagnent 1.5× à 2× la moyenne. Ce n'est pas subtil — c'est deux fois plus.

29 % WR — foncer tout droit, 3 fois de suite

Top 3 des patterns qui tuent

TrigrammeWin rateObservations
down → pass → right0 %20
down → up → down0 %21
left → down → pass0 %10
pass → left → left0 %8
right → up → pass0 %8
Deux patterns universellement mortels : tout trigramme contenant pass, et les oscillations down-up-down ou left-right-left. 0 victoire sur des dizaines d'observations. Le chevalier qui hésite ou attend meurt.
0 % WR — hésiter et changer de direction

Pourquoi les patterns répétés gagnent

Deux explications coexistent :

Le pass est particulièrement catastrophique parce qu'il donne un tour au dragon sans rien accomplir. Le dragon se rapproche. Le chevalier n'a gagné que du temps — qu'il n'a pas.

Différence entre clusters de labyrinthes

Tous les clusters ne se ressemblent pas. Le cluster 3 (labyrinthes denses, trésor proche du camp) a des patterns top à 30-32 % WR. Le cluster 6 (très fragmenté, dead-ends) plafonne à 8-10 % WR sur les mêmes patterns.

ClusterTopologieWR baselineMeilleur patternWR pattern
0Ouvert, trésor loin~20 %up-up-up20 %
1Modéré, ouvert~29 %up-up-up29 %
3Dense, trésor proche~25 %up-left-left32 %
6Fragmenté, dead-ends~8 %down-left-down10 %

L'environnement domine la tactique. Même les meilleurs patterns ne sauvent pas un agent dans un labyrinthe mal foutu. Réciproquement, les mauvais patterns (avec pass) sont universellement mortels — aucun cluster ne les rend viables.

La leçon qui dépasse le Dragon

Persévérance directionnelle > tactique fine.

Un agent qui s'engage dans une direction et la tient 3 coups de suite gagne 2× plus qu'un agent qui hésite ou attend. Ce résultat n'est pas spécifique à Dragon — il se retrouve dans tout POMDP avec un adversaire qui avance pendant que vous réfléchissez.

Applications immédiates :

Et maintenant ? Intégrer ces patterns dans Oracle-X1

Maintenant qu'on connaît les patterns gagnants, on peut biaiser Oracle-X1 pour les privilégier :

Hypothèse : Oracle-X3 devrait gagner 2-4 points de WR supplémentaires. Si l'ensemble X1+X2+X3 se comporte comme X1+X2 (21.5 % en ensemble), on pourrait atteindre 25-28 % WR — largement au-dessus du plafond humain expert.

Reproduire l'analyse

Le code est dans le repo Dragon Labyrinth. pattern_miner.py prend en entrée le log des parties (dlb_games_log.jsonl) et les clusters (wiki_clusters.json), et sort wiki_patterns.json. Environ 30 secondes sur un CPU moyen pour 5000 parties.

Formule du score :

score = win_rate × sqrt(total_observations)

C'est un compromis entre qualité (win rate) et robustesse statistique (nombre d'observations). Un pattern avec 80 % WR sur 3 observations passe loin derrière un pattern à 25 % WR sur 1000 observations.

Hardware pour scaler à 50 000 parties

CPU multi-core
Ryzen 9 7950X
16 cœurs = 16 parties Oracle-X1 en parallèle, logging inclus.
GPU brute force
RTX 4080 Super 16 Go
Scaler à 50K parties = 10 minutes en CUDA.
Stockage
SSD NVMe 4 To
50K parties avec trajectoires complètes = ~8 Go de logs.
Théorie
Livres POMDP & théorie des jeux
Fondements pour comprendre pourquoi persévérer bat hésiter.

Verdict

Le pass est mortel à 0 % WR. Les mouvements répétés gagnent 2× la moyenne. Sur Dragon Labyrinth comme dans beaucoup de POMDP avec adversaire actif, la persévérance directionnelle bat la tactique fine. Oracle-X1 à 14 % peut probablement passer à 16-18 % en intégrant ces patterns comme biais explicite.

FAQ

Pourquoi les n-grammes de taille 3 et pas 2 ou 4 ?

On a testé n=2 : signal trop bruité (beaucoup de patterns communs, peu différenciants). n=4 : pas assez d'occurrences par pattern unique pour avoir de la significativité. n=3 est le sweet spot : assez riche pour capturer des tactiques cohérentes, assez fréquent pour être fiable.

Est-ce qu'un humain expert utilise ces patterns ?

Informellement oui. Observé sur 30 parties jouées par un humain expert : proportion de pass proche de 0, streaks de 3+ mouvements dans la même direction fréquents. L'intuition humaine converge naturellement vers ce que les données prouvent.

Le pattern miner marche-t-il sur Pac-Man ?

Oui. On va l'appliquer à Pac-Man Symmetric dès qu'on aura logué 5000 parties. Hypothèse : les patterns gagnants seront probablement "rester mobile" (up-up-up, left-left-left) et les patterns perdants "oscillation" et "longue pause en intersection".

Peut-on reproduire le résultat ?

Oui, le code pattern_miner.py est minimal (87 lignes) et les 5000 parties d'entraînement sont reproductibles avec les seeds 0 à 4999. Lancez python3 pattern_miner.py dlb_games_log.jsonl wiki_clusters.json wiki_patterns.json 3.

Articles liés de la série

Publié le 22 avril 2026 par OutilsIA. Source : wiki_patterns.json (5000 parties Oracle-X1, 8 clusters k-means, ~400 000 mouvements). Code : pattern_miner.py, 87 lignes.