Comprobar, empaquetar y publicar un cerebro
oa-tool brain pack y check, una partida sin interfaz y una traza, la comprobación de la Biblioteca y el registro del asiento, el tipo oabrain del catálogo y cómo ofrecer el paquete a Core Prime.
Este capítulo resume docs/brains/oabrain-standard.md, docs/brains/authoring.md y docs/playing-with-brains.md. Esos documentos son el texto normativo.
Empaquetar y comprobar
Un cerebro se empaqueta y se comprueba con oa-tool brain pack y oa-tool brain check. oa-tool pack y oa-tool check son los comandos para un .oamap o un .oamod. La ayuda de la guía lista los tres comandos de cerebro:
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.
Empaqueta desde fuera de la carpeta. check carga un .oabrain, o una carpeta cuya raíz tiene oabrain.yaml, contra un juego. Sienta el cerebro en un mapa plano suplente y no ejecuta ni un tick de esa partida. Una fase que no corrió dice not run. Estos dos comandos son la ejecución de la guía para Steady Commander, y el informe que siguió:
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
La comprobación sale con 0. result: ok es esa ejecución. fits: ok es el fits del script que devuelve true. --json imprime un objeto. --mod nombra una carpeta de mod. --level elige un identificador de nivel, y el primer nivel cuando se omite.
Qué rechaza pack
Si no dices más, pack escribe el identificador, un guion y la versión, y acaba en .oabrain. --force sustituye un archivo que ya está. --game-dir en brain pack es un error de uso. brain check acepta --game-dir. pack rechaza un manifiesto roto, un archivo fuera de la disposición, Lua que no es fuente, una red cuyos bytes no son la huella que nombra el manifiesto, y un icono que no es un PNG cuadrado dentro de los límites. El Lua se compila y no se ejecuta. Un archivo .oann se hashea y no se interpreta.
Una partida sin interfaz
--brain-match juega dos asientos de ordenador. Cada asiento es un identificador de cerebro instalado, una carpeta o builtin. Necesita --headless-check, --match-ticks y --brain-map. La partida de la guía, Steady Commander contra Classic, es:
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
Sale con 0. Cada línea empieza por brain match. winner none y reason time quieren decir que los dos asientos aún tenían unidades cuando se agotó la cuenta de ticks. En esa partida de Classic el número de construidas de Steady Commander es 6. status playing quiere decir que todavía se llamaba al cerebro. La misma carpeta contra el jugador de ordenador integrado, cuyo número de construidas de Steady Commander es 7, es la ejecución cuya traza muestra las órdenes propias del 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
Una traza
--brain-trace y --brain-record van sobre una partida. Los dos necesitan --headless-check y --match-ticks. La traza de la partida contra el jugador de ordenador integrado empieza:
brain log 1
tick 0 seat 0 brain
call fits
tick 0 seat 0 brain
call start
Un temporizador es una línea call timer. Report seat 1 es log seat 0. own-draw es brain.random. Steady Commander nunca llama a brain.record, así que su archivo de record no tiene línea de muestra.
COMPROBAR CON ESTE MOD, y el registro
COMPROBAR CON ESTE MOD es un botón de un cerebro instalado en la Biblioteca, y se muestra cuando hay un veredicto. Carga esa copia y ejecuta fits. No sienta el cerebro. Está desactivado durante una partida y mientras corre la comprobación.
La aplicación escribe el registro del asiento en logs/brains/seat- y el índice del jugador más uno, bajo la carpeta de datos de la cuenta. El archivo empieza de nuevo por cada cerebro sentado ahí. La primera línea es el nombre del manifiesto, la versión, el identificador, el nivel, el asiento y la semilla de la partida. Una línea impresa se añade como el tick y el texto. El archivo se detiene en 1 MiB.
El tipo oabrain del catálogo
En Core Prime el tipo del catálogo es oabrain. El paquete se instala en Brains/ y el identificador. Un juego que no conoce un tipo del catálogo se salta esa entrada, así que un juego más antiguo no lista el paquete. La sección Mejoras de IA de este sitio sigue marcada como Próximamente hasta que el catálogo sirva el tipo.
Ofrécelo a Core Prime
La biblioteca de contenido de Core Prime se publica desde la máquina de un mantenedor: el catálogo se firma con una clave que nunca sale de ella. Para que un cerebro aparezca:
- Abre una incidencia en el repositorio de Open Annihilation con el .oabrain (o un enlace), su autor y su licencia.
- Un mantenedor ejecuta las comprobaciones contra la carpeta de juego y lo añade a los registros de paquetes de la biblioteca.
- La siguiente publicación sube el archivo bajo su hash, firma el nuevo catálogo y sube su secuencia.
- Minutos después está en la Biblioteca de cada jugador y, cuando este sitio liste el tipo, en este sitio.
Un paquete de mapas, un mod o un mutador se ofrece igual. Mira Publicar en Core Prime.