Rends un jeu personnalisé gatable
Un jeu auto-hébergé tourne et vérifie dès que tu pointes game-src vers lui. Mais pour l'utiliser comme gate de jeu, où un visiteur doit le réussir pour passer, Caputchin doit être capable de re-dériver le résultat lui-même, pas de faire confiance au navigateur. C'est à ça que sert l'artefact de rejeu. À la fin de ce tutoriel, ton jeu personnalisé sera éligible au gate.
C'est la récompense du déterminisme : parce que ton jeu enregistre une trace et dérive tout de la graine, le serveur peut exécuter une copie headless de ta logique contre la même graine et la même trace et atteindre le même verdict indépendamment.
Ce qu'est l'artefact de rejeu
L'artefact est un petit bundle JavaScript autonome de juste ta logique de jeu, sans rendu, sans DOM et sans réseau. Le serveur le charge dans un bac à sable isolé et l'exécute pour produire un verdict à partir de (seed, trace). Ce n'est pas ton jeu jouable ; c'est le juge headless de ton jeu jouable.
Deux propriétés sont requises :
- Autonome. Il ne peut rien importer que l'isolat ne puisse résoudre ; intègre tout. Le téléversement est plafonné à 2 Mo, ce qui est bien au-dessus d'un bundle de logique typique.
- Déterministe et en accord avec le jeu en direct. Étant donné la même graine et la trace que ton jeu en direct a émise, il doit atteindre le même verdict que le jeu en direct a revendiqué. S'ils sont en désaccord, de vrais joueurs reçoivent de faux rejets.
1. Enregistre le jeu personnalisé
Si tu ne l'as pas déjà fait, enregistre le jeu sur le tableau de bord pour qu'il ait un id et un endroit où loger l'artefact. Sur la page Jeux d'une clé de site (ou de l'équipe), utilise le champ Jeu personnalisé dans le panneau Ajouter un jeu : saisis ton id et clique Définir. Vois jeux personnalisés pour cette étape et le schéma que tu définis.
2. Téléverse l'artefact
Sur l'onglet Paramètres du jeu enregistré, téléverse le bundle de rejeu. Il est envoyé comme un seul fichier ; Caputchin le hache par contenu (réuploader les mêmes octets est sans effet) et exécute immédiatement une auto-vérification.
3. L'auto-vérification
L'auto-vérification exécute ton artefact téléversé dans l'isolat de rejeu contre une graine synthétique (et ton échantillon de trace livré, si tu en fournis un) et enregistre s'il a produit un verdict propre :
- Réussit → l'installation devient éligible au gate. Le badge Non rejouable s'efface, et tu peux maintenant activer exiger un jeu avec ce jeu dans le pool.
- Échoue → l'artefact est quand même stocké (pour que tu puisses inspecter l'erreur), mais l'installation reste non éligible au gate. Corrige la logique et réuploade.
Une auto-vérification échouée est le système qui te dit que le juge headless n'est pas d'accord avec lui-même ou n'a pas pu tourner ; c'est exactement le désaccord qui aurait causé de faux rejets en production, attrapé avant qu'un seul visiteur ne le touche.
4. Active le gate
Une fois l'auto-vérification réussie, le jeu est dans le pool de gate de la clé. Active Exiger un jeu sur la page Sécurité de la clé (ou le plafond de jeu forcé de l'équipe), et Caputchin servira ton jeu personnalisé, prendra la trace du joueur, et réexécutera ton artefact côté serveur pour décider chaque vérification.
Garder les deux synchronisés
Le jeu en direct (chargé via game-src) et l'artefact de rejeu sont deux builds de la même logique. Quand tu changes quoi que ce soit qui affecte le résultat, reconstruis et réuploade l'artefact pour que les deux soient encore d'accord. S'ils dérivent, l'auto-vérification ou le rejeu en production se mettra à rejeter de vraies victoires. Construire les deux à partir d'un seul module de logique partagé est le moyen fiable de les garder identiques.
Voir aussi
- Bâtir un jeu auto-hébergé : produire la trace que cet artefact rejoue.
- Jeux et le gate de jeu : activer le gate et l'exigence de rejouabilité.
- Jeux personnalisés : enregistrer et le badge Non rejouable.
- Référence du schéma du tableau de bord : les champs que le jeu lit depuis son contexte de fabrique.