Home › Info modding › Controllare, impacchettare e pubblicare un cervello
Capitolo 11

Controllare, impacchettare e pubblicare un cervello

oa-tool brain pack e check, una partita headless e una traccia, il controllo della Libreria e il log del posto, il tipo oabrain del catalogo e come offrire il pacchetto a Core Prime.

Questo capitolo riassume docs/brains/oabrain-standard.md, docs/brains/authoring.md e docs/playing-with-brains.md. Quei documenti sono il testo normativo.

Impacchetta e controlla

Un cervello si impacchetta e si controlla con oa-tool brain pack e oa-tool brain check. oa-tool pack e oa-tool check sono i comandi per un .oamap o un .oamod. L'aiuto della guida elenca i tre comandi dei cervelli:

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.

Impacchetta da fuori della cartella. Check carica un .oabrain, o una cartella che in cima ha oabrain.yaml, contro un gioco. Mette il cervello al posto su una mappa piatta sostitutiva e non esegue neanche un tick di quella partita. Una fase che non è girata dice not run. Questi due comandi sono l'esecuzione della guida per Steady Commander, e il rapporto che è seguito:

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

Il controllo esce con 0. result: ok è quell'esecuzione. fits: ok è il fits dello script che restituisce true. --json stampa un oggetto. --mod nomina una cartella di mod. --level sceglie un identificativo di livello, e il primo livello quando si omette.

Che cosa rifiuta pack

Senza altro, pack scrive l'identificativo, un trattino e la versione, e finisce in .oabrain. --force sostituisce un file che c'è già. --game-dir su brain pack è un errore d'uso. brain check accetta --game-dir. Pack rifiuta un manifesto rotto, un file fuori dal layout, Lua che non è sorgente, una rete i cui byte non sono il digest che nomina il manifesto, e un'icona che non è un PNG quadrato entro i limiti. Il Lua viene compilato e non eseguito. Un file .oann viene sottoposto a hash e non interpretato.

Una partita headless

--brain-match gioca due posti computer. Ogni posto è un identificativo di cervello installato, una cartella o builtin. Gli servono --headless-check, --match-ticks e --brain-map. La partita della guida, Steady Commander contro Classic, è:

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

Esce con 0. Ogni riga inizia con brain match. winner none e reason time significano che entrambi i posti avevano ancora unità quando il conteggio dei tick si è esaurito. In quella partita contro Classic il numero di costruzioni di Steady Commander è 6. status playing significa che il cervello veniva ancora chiamato. La stessa cartella contro il giocatore computer integrato, il cui numero di costruzioni di Steady Commander è 7, è l'esecuzione la cui traccia mostra gli ordini propri dello 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 traccia

--brain-trace e --brain-record stanno su una partita. A entrambi servono --headless-check e --match-ticks. La traccia della partita contro il giocatore integrato inizia:

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

Un timer è una riga call timer. Report seat 1 è log seat 0. own-draw è brain.random. Steady Commander non chiama mai brain.record, quindi il suo file di record non ha una riga di campione.

CONTROLLA CON QUESTO MOD, e il log

CONTROLLA CON QUESTO MOD è un pulsante su un cervello installato nella Libreria, mostrato quando c'è un verdetto. Carica quella copia ed esegue fits. Non mette il cervello al posto. È spento durante una partita e mentre il controllo è in corso.

L'app scrive il log del posto in logs/brains/seat- e l'indice del giocatore più uno, sotto la cartella dati dell'account. Il file ricomincia per ogni cervello messo al posto lì. La prima riga è il nome del manifesto, la versione, l'identificativo, il livello, il posto e il seme della partita. Una riga stampata viene accodata come il tick e il testo. Il file si ferma a 1 MiB.

Il tipo oabrain del catalogo

Su Core Prime il tipo del catalogo è oabrain. Il pacchetto si installa in Brains/ e l'identificativo. Un gioco che non conosce un tipo del catalogo salta quella voce, quindi un gioco più vecchio non elenca il pacchetto. La sezione Miglioramenti IA di questo sito resta segnata Prossimamente finché il catalogo non serve il tipo.

Proponilo a Core Prime

La libreria dei contenuti di Core Prime viene pubblicata dal computer di un manutentore: il catalogo è firmato con una chiave che non lo lascia mai. Per far elencare un cervello:

  1. Apri una issue sul repository di Open Annihilation con il .oabrain (o un link), l'autore e la licenza.
  2. Un manutentore esegue i controlli contro la cartella di gioco e lo aggiunge ai record dei pacchetti della libreria.
  3. La pubblicazione successiva carica il file con il suo hash, firma il nuovo catalogo e ne alza la sequenza.
  4. Pochi minuti dopo è nella Libreria di ogni giocatore e, una volta che questo sito elenca il tipo, su questo sito.

Un pacchetto di mappe, una mod o un mutatore si propone allo stesso modo. Vedi Pubblicare su Core Prime.