Moteur de jeu déterministe

reverse-optcgsim

Année

2025-2026

projet

02

écran principal2025-2026
reverse-optcgsim

Vue d’ensemble

Port Python du simulateur OPTCG pour debug de replays et expérimentations IA : état déterministe, assets cartes réels, runs MCTS/PPO/AlphaZero et graphes de diagnostic.

PythonPyTorchRich TUIPygameReplay paritypytest

Détails techniques

Parité

L’entraînement commence par un moteur déterministe

Problématique

Un run AlphaZero ne vaut rien si le simulateur Python peut diverger du moteur Unity/C#. Une seule branche fausse dans le combat, le ciblage ou la résolution d’effet apprendrait au modèle un jeu qui n’existe pas.

Résolution

Le moteur Python est d’abord traité comme un port de parité, puis seulement comme un socle IA. Le comportement C# reste la source de vérité, les méthodes et champs d’état sont conservés, le RNG est centralisé et la couche ML consomme uniquement un état rejouable.

Flux système

  1. 01Le comportement Unity décompilé est documenté phase par phase avant l’écriture du code Python.
  2. 02Les matchs seedés, les logs recorder/player et les scénarios rejouent les mêmes inputs sur des snapshots déterministes.
  3. 03La couche ML ne reçoit l’état via OptcgEnv qu’une fois le filet replay/parité validé.

Détails d’implémentation

EngineRng est la seule surface d’aléatoire ; les imports random sauvages sont bloqués par test.

Les snapshots replay utilisent un JSON canonique et les scénarios couvrent blockers, replacements, coûts, power, silence et flux DON.

La couverture des verbes protège les champs V3 et legacy pour qu’une mécanique de carte ne disparaisse pas silencieusement.

Vue générale01
Terminal d’entraînement, diagnostics et viewer replay réunis dans une capture.

Terminal d’entraînement, diagnostics et viewer replay réunis dans une capture.

Preuve replay02
Viewer replay rendu depuis une trace réelle, avec état du plateau et assets cartes.

Viewer replay rendu depuis une trace réelle, avec état du plateau et assets cartes.

Clip replay03

Court extrait du viewer replay avec état du tour, actions légales, plateau et journal.

Diagnostics entraînement04
Graphe de diagnostic généré depuis un metrics.csv AlphaZero.

Graphe de diagnostic généré depuis un metrics.csv AlphaZero.

Problème

Une erreur de règles, de RNG ou de replay suffit à entraîner le modèle sur un faux jeu.

Approche

Traiter le moteur comme un port de parité avant tout : comportements C# documentés, snapshots déterministes, logs recorder/player et visualisation des matchs.

Résultat

Environnement stable pour tester MCTS/AlphaZero, vérifier les replays et localiser rapidement les divergences moteur ou training.

Suivant2025-2026

SaaS communautaire OPTCG

Sharedeck

Application web One Piece TCG avec publication de decks, profils, collections, listes d’échange, chat temps réel, tournois et simulateur de match connecté à un moteur Python.

Laravel 13InertiaVue 3TypeScript
SaaS communautaire OPTCG2025-2026
Sharedeck