Garantir le fair-play en JcJ
La qualité d'un jeu de lettres dépend de celle de votre adversaire. Voici ce que nous faisons pour que cet adversaire ne soit pas un solveur.
Mis à jour le 17 avril 2026 · Par Kurt Bijl

Les coups sont vérifiés sur nos serveurs, pas sur votre téléphone
Les coups en ligne sur WordSalvo sont soumis via une transaction Firestore et traités par le même moteur Dart pur qui affiche votre plateau. Les règles de placement, les mots croisés, les multiplicateurs et la validité du dictionnaire sont tous appliqués côté serveur. Aucune information sur un score ou un mot provenant d'un client modifié n'est acceptée sans vérification.
Le dictionnaire est un DAWG (Directed Acyclic Word Graph) compilé à partir de la même liste de mots que celle de votre adversaire. L'anglais utilise des listes de la lignée SOWPODS ; le néerlandais utilise la liste de mots OpenTaal. Le fichier est identique au byte près sur le client et le serveur, donc l'excuse « ce mot n'est pas dans le dictionnaire » ne peut pas être un litige lié à l'appareil.
Les signalements de mots manquants ou discutables passent par une file d'attente de révision humaine — la Cloud Function `reviewWordReport` — et sont intégrés dans les mises à jour du dictionnaire.
Les parties JcJ terminées sont analysées pour détecter des schémas suspects
Lorsqu'une partie JcJ en ligne se termine, une Cloud Function analyse la partie terminée à la recherche de schémas suggérant l'utilisation d'un solveur externe. Ce contrôle fair-play vise à signaler les jeux suspects, pas à noter les parties d'entraînement ou la qualité du jeu.
Ce contrôle — la fonction `fairPlayAnalysis` — exécute 14 signaux pondérés. Parmi eux : une brillance ≥98 % sur une partie, des séries parfaites de sept coups ou plus, un coefficient de variation du temps de réflexion inférieur à 0,3 (les humains se situent au-dessus de ~0,5), des coups rapides et précis en moins de trois secondes avec une précision >80 %, et la perfection dans des situations complexes où le meilleur coup est trouvé parmi plus de 200 options légales. Les parties courtes de moins de huit coups sont pondérées par un multiplicateur de confiance de 0,2 à 0,8×, car les petits échantillons sont peu fiables.
Chaque signal n'est pertinent que par rapport à vous. WordSalvo maintient une référence glissante sur 20 parties par joueur et surveille les écarts. Dépasser votre propre moyenne de plus de 2,5σ attire l'attention ; être un joueur constamment fort, non.

De vrais joueurs par défaut — l'IA est toujours étiquetée IA
Le matchmaking en ligne puise dans une file d'attente Firestore avec une fenêtre de classement de ±200 points. L'adversaire proposé est un autre humain qui a rejoint cette file d'attente. Nous ne créons pas de faux comptes, nous n'utilisons pas de bots avec des noms humains, et nous ne gonflons pas le nombre de joueurs avec des figurants.
Il existe des adversaires IA à quatre niveaux de difficulté — facile, moyen, difficile et expert — et ils s'exécutent dans une Cloud Function (`onAiTurn`), ce qui implique deux choses. Premièrement : une partie contre l'IA nécessite une connexion réseau. Deuxièmement : chaque adversaire IA porte une étiquette explicite « IA » sur la fiche de la partie et le tableau des scores. Si la partie n'indique pas IA, ce n'est pas une IA.

Le Premium ne change rien à l'issue d'une partie
WordSalvo propose deux options payantes, et aucune ne touche au plateau de jeu. Un achat unique Ad-Free supprime la bannière du salon et l'interstitiel entre les parties. L'abonnement Word Master prévu débloquera une analyse post-partie plus approfondie, des essais illimités pour les défis quotidiens, le carnet de mots, le matchmaking prioritaire et des thèmes cosmétiques.
Ce que le Premium ne change pas : le tirage de vos lettres (le sac est mélangé par `tile_bag.dart` sans vérification de droits), le dictionnaire (le même DAWG pour chaque joueur dans cette langue), votre score (multiplicateurs calculés par le moteur, sans bonus caché), ou votre fourchette de matchmaking — la priorité n'affecte que la position dans la file d'attente, pas le classement de l'adversaire.
En d'autres termes : deux joueurs gratuits peuvent atteindre le sommet du classement d'une langue avec seulement l'application installée. 0 % des achats intégrés n'achètent une victoire.
Le chat a un filtre ; les joueurs peuvent bloquer, masquer et signaler
Chaque message de chat passe par la Cloud Function `onChatMessage`, qui applique un filtre de toxicité côté serveur avant que le message n'atteigne l'autre joueur. Le filtre n'est pas parfait — aucun filtre automatisé ne l'est — donc chaque message est également à un clic d'un signalement, blocage ou masquage.
Les signalements sont enregistrés dans Firestore et examinés par nos soins. Les blocages sont bidirectionnels : un joueur bloqué ne peut ni vous inviter, ni vous affronter, ni discuter avec vous. Les masquages sont locaux et discrets. Un joueur qui accumule des signalements confirmés est traité manuellement — nous ne bannissons pas automatiquement, et nous ne restons pas silencieux lorsque nous agissons.
Que se passe-t-il pour un joueur signalé ?
Le document de verdict fair-play (`games/{gameId}/analysis/fairPlay`) est verrouillé pour les Cloud Functions uniquement — les règles Firestore empêchent les clients de le lire, donc un joueur signalé ne peut pas voir son score et s'adapter en conséquence. Les références par joueur à `users/{uid}/fairPlayBaseline/{statsKey}` ne sont lisibles que par leur propriétaire.
Lorsqu'une partie est signalée avec une confiance élevée, le système fair-play donne à WordSalvo une base plus claire pour l'examen et l'action. Il est conçu pour renforcer la confiance en JcJ sans prétendre qu'un système anti-triche est infaillible.
Si vous pensez avoir été signalé à tort, contactez-nous via Paramètres → Aide. Nous conservons un historique par joueur suffisamment longtemps pour expliquer la décision.
Questions fréquentes
- qu'est-ce qui est considéré comme de la triche sur WordSalvo ?
- Utiliser un moteur externe, un solveur ou un outil d'anagrammes pour choisir ses coups. Partager un compte sur plusieurs parties classées. Se coordonner avec un adversaire pour perdre intentionnellement ou augmenter un classement. Exploiter un bug pour soumettre un plateau invalide. L'étude normale — lire un dictionnaire, s'entraîner contre l'IA, apprendre de l'analyse post-partie — n'est pas de la triche.
- comment détectez-vous l'utilisation suspecte de moteurs de jeu ?
- Grâce à une analyse des schémas suspects par partie, combinée à votre propre référence glissante. Le serveur examine la distribution de la brillance, les séries parfaites, la variance du temps de réflexion, le rapport vitesse/précision et la fréquence des scrabbles, puis se demande si cette partie est bien au-dessus de votre niveau de jeu habituel. Une seule partie brillante ne suffit pas.
- y a-t-il des bots qui se font passer pour des adversaires humains ?
- Non. Le matchmaking en ligne propose de vrais joueurs depuis une file d'attente Firestore avec une fenêtre de classement de ±200 points. Les adversaires IA existent aux niveaux facile, moyen, difficile et expert, et chacun d'eux porte une étiquette IA explicite sur la fiche du salon et le tableau des scores.
- et si je suis signalé par erreur ?
- Nous examinons manuellement les parties signalées avant de prendre toute mesure, et nous vous informons lorsque nous agissons — pas de bannissement silencieux. Si vous pensez que nous avons fait une erreur, contactez-nous via Paramètres → Aide. Les références sont glissantes, donc une seule partie exceptionnellement forte ne vous marquera pas.
- est-ce que payer pour le Premium me donne un avantage ?
- Non. Le Premium supprime les publicités, ajoute une analyse post-partie plus approfondie, offre des essais illimités pour les défis quotidiens, le carnet de mots et des thèmes cosmétiques. Il ne modifie ni le tirage des lettres, ni le dictionnaire, ni le score, ni la fourchette de niveau des adversaires. Un joueur gratuit peut atteindre le sommet d'un classement.
- le dictionnaire est-il le même pour tout le monde ?
- Oui. Chaque joueur dans une langue donnée joue avec la même liste de mots compilée en DAWG, fournie dans un fichier identique sur le client et le serveur. L'anglais utilise des listes de la lignée SOWPODS ; le néerlandais utilise OpenTaal. Les signalements de mots manquants ou incorrects sont examinés par un humain.