La trajectoire d'une session est reconstituée de bloc cassé en bloc cassé, dans l'ordre chronologique des logs CoreProtect. Un pas de plus de 4 blocs est considéré comme un déplacement sans minage (marche en grotte, chute, téléportation) : il coupe la continuité mais ne compte pas comme un virage.
Les petits cubes gris sont la roche cassée : ils dessinent la forme des tunnels. Le fil relie les blocs dans l'ordre où ils ont été cassés. Les cubes colorés sont les minerais, une couleur par famille ; le minerai surveillé est affiché plus gros (⭐). Le panneau de filtres en haut à gauche permet d'afficher ou de masquer chaque couche, ou tout d'un coup.
Le sélecteur Affichage bascule entre cubes et points. Les points masquent beaucoup moins ce qu'il y a derrière : c'est le mode à préférer pour lire la forme générale d'un réseau dense, ou pour rester fluide sur une très grosse session.
Survol : passer la souris sur un cube donne le bloc, ses coordonnées et l'heure de la casse ; passer la souris sur le fil, entre deux cubes, donne la distance parcourue et le temps écoulé entre ces deux blocs — utile pour repérer un déplacement qui n'est pas du creusage.
Navigation : glisser pour tourner, molette pour zoomer, clic droit (ou Maj + glisser) pour translater, double-clic — ou le bouton « Recentrer » — pour recadrer sur la fenêtre affichée.
Combien de blocs du minerai surveillé le joueur trouve pour 100 blocs creusés — seules les casses en phase de creusage comptent (pas ≤ 2 blocs entre casses consécutives) : les minerais ramassés en marchant dans une grotte, exposés et visibles, n'entrent pas dans ce rendement. Un strip-mineur légitime à Y-59 trouve environ 0,3 à 0,8 diamant pour 100 blocs ; au-delà de 3, le rendement n'est plus explicable par la chance. Les bornes s'adaptent au minerai choisi (trouver 5 fers / 100 blocs est banal, 5 diamants ne l'est pas).
Longueur du chemin réellement miné entre deux filons successifs, divisée par la distance à vol d'oiseau. 1× = ligne parfaitement droite de filon en filon. Un joueur légitime quadrille et retombe sur les filons par hasard (≥ 3×) ; un x-rayeur va presque tout droit (≤ 1,4× déclenche l'alerte, en pratique ~2,5× à cause du tunnel de 2 de haut qui zigzague bloc à bloc). Seuls les filons atteints en creusant comptent, et une paire traversée par un pas de marche est ignorée : marcher droit vers un minerai visible en grotte n'est pas suspect.
À chaque changement de direction, la nouvelle direction rapproche-t-elle du prochain filon pas encore découvert (et atteint en creusant) ? Un virage au hasard rapproche environ 1 fois sur 2 (50 %). Viser juste presque à chaque virage trahit une information que le joueur ne devrait pas avoir.
Les casses du minerai cible sont regroupées en filons quand elles sont à moins de 2 blocs les unes des autres. « Blocs entre filons » compte les blocs minés entre la fin d'un filon et le début du suivant : c'est le « combien je creuse avant de trouver ».
Longueur moyenne (en blocs) des tronçons parcourus sans changer de direction, séparés en horizontal et vertical. Attention : le minage en tunnel de 2 de haut alterne un pas avant / un pas vertical, ce qui écrase cette moyenne pour tout le monde (~1 bloc) — métrique à affiner.
Fréquence des changements de direction pour 100 pas, et part des pas dont le mouvement dominant est vertical (plongées et remontées vers des cibles).
Chaque indicateur est normalisé entre 0 et 1 par une rampe bornée (sous la borne basse : 0, au-dessus de la borne haute : 1 — les jauges du panneau montrent cette valeur normalisée), puis combiné : 40 % rendement, 30 % détour, 30 % virages. Verdicts : ≥ 60 fortement suspect, ≥ 30 à surveiller, sinon RAS. Si un indicateur est incalculable (moins de deux filons par exemple), il est retiré et les poids sont renormalisés.
C'est une heuristique V1 calibrée sur la connaissance du jeu, pensée pour être remplacée par un modèle entraîné dès qu'un corpus étiqueté suffisant existera. Le score porte toujours sur la session entière : la fenêtre temporelle filtre la scène, pas l'analyse.
Un second regard, indépendant du score : un Isolation Forest (modèle non supervisé) entraîné sur les sessions de la vraie base mesure à quel point la session s'écarte d'une session typique du corpus, sur 13 features à la fois — y compris celles que le score V1 n'utilise pas (forme du chemin, part creusée…). La jauge est normalisée 0-100 : 50 = seuil de contamination (le repère sur la barre) ; au-delà, la session est plus atypique que l'immense majorité du corpus d'entraînement. « Tiré par » indique la feature qui contribue le plus à l'écart.
Atypique ne veut pas dire tricheur. Le modèle n'a aucune étiquette : il dit « cette session ne ressemble pas au corpus », rien de plus. Une session très haute sur cette jauge mais RAS au score V1 mérite une inspection visuelle, pas une sanction. Voir readmeAnalyse.md pour la méthode (features, imputation, directionnalité, limites).
Sessions par tranche de 5 points — échelle verticale logarithmique (la masse RAS écraserait tout en linéaire)
Un point par session, couleur = verdict — cliquer un point ouvre la session dans la scène 3D