Accueil › Infos modding › Vérifier, empaqueter et publier un cerveau
Chapitre 11

Vérifier, empaqueter et publier un cerveau

oa-tool brain pack et check, une partie sans interface et une trace, la vérification de la Bibliothèque et le journal du siège, le type oabrain du catalogue, et comment proposer le paquet à Core Prime.

Ce chapitre résume docs/brains/oabrain-standard.md, docs/brains/authoring.md et docs/playing-with-brains.md. Ces documents sont le texte normatif.

Empaqueter et vérifier

Un cerveau s'empaquette et se vérifie avec oa-tool brain pack et oa-tool brain check. oa-tool pack et oa-tool check sont les commandes d'un .oamap ou d'un .oamod. L'aide du guide liste les trois commandes de cerveau :

oa-tool brain pack FOLDER [--out FILE] [--force]
    Pack a brain folder as a .oabrain.
oa-tool brain check FILE --game-dir DIR [--mod FOLDER] [--level LEVEL] [--side N] [--json]
    Load a brain against a game and report how it started.
oa-tool brain net MODEL.onnx --calibrate DATA [--out FILE] [--weights int8|int16] [--max-difference X] [--force] [--json]
    Convert an ONNX model to a .oann.

Empaquetez depuis l'extérieur du dossier. check charge un .oabrain, ou un dossier dont le sommet porte oabrain.yaml, contre un jeu. Il met le cerveau en siège sur une carte plane de remplacement et ne fait jamais avancer cette partie d'un tick. Une phase qui n'a pas tourné dit not run. Ces deux commandes sont l'exécution du guide pour Steady Commander, et le rapport qui a suivi :

build/oa-tool brain pack brains/examples/steady-commander --out /tmp/brain-scratch/steady-commander.oabrain
build/oa-tool brain check /tmp/brain-scratch/steady-commander.oabrain --game-dir "$OA_GAME_DIR"
brain: steady-commander 1.0 level easy
game: totala
mod: none
load: ok, 0 instructions
fits: ok, 0 instructions
start: ok, 15 instructions
lua: 1231655 bytes
networks: 0 bytes
result: ok

check se termine sur 0. result: ok est cette exécution. fits: ok est le fits du script qui renvoie true. --json imprime un objet. --mod nomme un dossier de mod. --level choisit un identifiant de niveau, et le premier niveau quand il est omis.

Ce que pack refuse

Sans autre indication, pack écrit l'identifiant, un tiret et la version, pour finir en .oabrain. --force remplace un fichier déjà là. --game-dir sur brain pack est une erreur d'usage. brain check prend --game-dir. pack refuse un manifeste cassé, un fichier hors de la disposition, du Lua qui n'est pas du source, un réseau dont les octets ne sont pas l'empreinte que le manifeste nomme, et une icône qui n'est pas un PNG carré dans les limites. Le Lua est compilé et non exécuté. Un fichier .oann est pris en empreinte et non interprété.

Une partie sans interface

--brain-match fait jouer deux sièges ordinateur. Chaque siège est un identifiant de cerveau installé, un dossier, ou builtin. Il exige --headless-check, --match-ticks et --brain-map. La partie du guide, Steady Commander contre Classic, est :

open-annihilation --skip-intro --mute --headless-check --game-dir "$OA_GAME_DIR" \
  --user-folder /tmp/brain-user --data-dir /tmp/brain-scratch/data \
  --brain-match brains/examples/steady-commander,brains/classic \
  --brain-levels medium,medium \
  --brain-map "Painted Desert" --seed 4242 --match-ticks 1800 \
  --brain-record /tmp/brain-scratch/record.txt

Elle se termine sur 0. Chaque ligne commence par brain match. winner none et reason time veulent dire que les deux sièges avaient encore des unités quand le nombre de ticks a été épuisé. Dans cette partie Classic, le nombre construit de Steady Commander est 6. status playing veut dire que le cerveau était encore appelé. Le même dossier contre le joueur ordinateur intégré, dont le nombre construit pour Steady Commander est 7, est l'exécution dont la trace montre les ordres propres du script :

open-annihilation --skip-intro --mute --headless-check --game-dir "$OA_GAME_DIR" \
  --user-folder /tmp/brain-user --data-dir /tmp/brain-scratch/data \
  --brain-match brains/examples/steady-commander,builtin \
  --brain-levels medium,hard \
  --brain-map "Painted Desert" --seed 4242 --match-ticks 2400 \
  --brain-trace /tmp/brain-scratch/trace-play.txt \
  --brain-record /tmp/brain-scratch/record-play.txt

Une trace

--brain-trace et --brain-record accompagnent une partie. Les deux exigent --headless-check et --match-ticks. La trace de la partie contre le joueur ordinateur intégré commence :

brain log 1
tick 0 seat 0 brain
call fits
tick 0 seat 0 brain
call start

Un minuteur est une ligne call timer. Report seat 1 est log seat 0. own-draw est brain.random. Steady Commander n'appelle jamais brain.record, donc son fichier d'enregistrement n'a pas de ligne d'échantillon.

VÉRIFIER AVEC CE MOD, et le journal

VÉRIFIER AVEC CE MOD est un bouton sur un cerveau installé dans la Bibliothèque, affiché quand un verdict est posé. Il charge cette copie et lance fits. Il ne met pas le cerveau en siège. Il est inactif pendant une partie et pendant que la vérification tourne.

L'application écrit le journal du siège à logs/brains/seat- et l'index du joueur plus un, sous le dossier de données du compte. Le fichier repart à neuf pour chaque cerveau mis en siège là. La première ligne est le nom du manifeste, la version, l'identifiant, le niveau, le siège et la graine de la partie. Une ligne imprimée est ajoutée comme le tick et le texte. Le fichier s'arrête à 1 Mio.

Le type oabrain du catalogue

Sur Core Prime, le type du catalogue est oabrain. Le paquet s'installe dans Brains/ et l'identifiant. Un jeu qui ne connaît pas un type du catalogue saute cette entrée, donc un jeu plus ancien ne liste pas le paquet. La section Améliorations IA de ce site reste marquée bientôt disponible tant que le catalogue ne sert pas ce type.

Proposez-le à Core Prime

La bibliothèque de contenu de Core Prime est publiée depuis la machine d'un mainteneur : le catalogue est signé avec une clé qui ne la quitte jamais. Pour faire lister un cerveau :

  1. Ouvrez un ticket sur le dépôt Open Annihilation avec le .oabrain (ou un lien vers lui), son auteur et sa licence.
  2. Un mainteneur lance les vérifications contre le dossier de jeu et l'ajoute aux fiches de paquets de la bibliothèque.
  3. La publication suivante téléverse le fichier sous son empreinte, signe le nouveau catalogue et incrémente sa séquence.
  4. Quelques minutes plus tard, il est dans la Bibliothèque de chaque joueur et, dès que ce site liste le type, sur ce site.

Un pack de cartes, un mod ou un mutateur se propose de la même façon. Voyez Publier sur Core Prime.