CLI
O turian-cli executa o pipeline de build e de runtime do Turian sem janela: o mesmo compilador, importador, exportador e renderizador do Studio. Use-o em scripts, na CI e para verificar um projeto sem abrir o editor.
turian-cli --help # todos os comandos
turian-cli <comando> --help # as opções de um comando
turian-cli --version
Os comandos que recebem um projeto aceitam a pasta do projeto; o padrão é o diretório atual.
Criando e compilando
| Comando | O que faz |
|---|---|
new <caminho> |
Cria um projeto em uma pasta nova ou vazia: cena inicial, configurações e Globals.cs. |
compile [projeto] |
Reimporta os assets e compila os scripts em .Cache/bin/CLI/. Falha em erros de compilação. |
export [projeto] [-c Debug\|Release] |
Gera um jogo autocontido em <projeto>/Output/ (Release por padrão). |
play [projeto] |
Compila uma versão de depuração do jogo e a abre em uma janela. |
turian-cli new MeuJogo
turian-cli compile MeuJogo
turian-cli export MeuJogo
./MeuJogo/Output/MeuJogo # MeuJogo.exe no Windows
Executando e inspecionando cenas sem interface
Estes comandos aceitam --scene <id ou caminho do asset> (padrão: a cena inicial), --reimport para importar os assets antes, e --load-usercode para compilar e carregar seus scripts, para que seus componentes rodem em vez de serem carregados como marcadores.
| Comando | O que faz |
|---|---|
scene |
Carrega uma cena e informa seus nós, componentes e quantas malhas foram resolvidas. |
screenshot |
Renderiza uma cena em PNG: --out, --width, --height, --camera <nome do nó> ou --position x,y,z --yaw --pitch, --headlight, --gizmos, --locale. |
playmode |
Executa uma sessão por --frames quadros, como o botão Play do Studio; --out salva o último quadro, --locale força um idioma. |
pick |
Informa o que um clique em --x, --y através de --camera selecionaria — para diagnosticar a seleção. |
turian-cli screenshot MeuJogo --camera "Main Camera" --width 1920 --height 1080 --out shot.png
turian-cli playmode MeuJogo --load-usercode --frames 300 --out depois-de-5s.png
A renderização sem interface precisa de um driver Vulkan; em máquinas sem GPU, o driver por software do Mesa (lavapipe) funciona.
Documentos de interface
ui renderiza um documento .ui em PNG sem GPU nem cena, vinculando JSON como dados (inline ou @arquivo.json):
turian-cli ui --file Assets/UI/menu.ui --out menu.png --data '{"Title":"Menu principal"}'
Pacotes de assets (OAP)
Um jogo exportado leva os assets em um Open Asset Package. O oap gerencia esses arquivos:
| Comando | O que faz |
|---|---|
oap pack [projeto] <saída> |
Empacota os assets importados de um projeto. --name, --store (sem compressão), --key <senha> (criptografia ChaCha20), --target <alvo de build>, --requires <pacote>. |
oap list <pacote> |
Uma linha por asset: id, tipo, codecs, tamanhos e caminho virtual. |
oap inspect <pacote> |
Resumo do cabeçalho e manifesto. |
oap validate <pacote> |
Verifica o cabeçalho e o CRC-32 de cada asset; sai com 1 em caso de falha. |
oap unpack <pacote> <pasta> |
Extrai todos os assets. |
Uso na CI
Compile o jogo a cada push com a imagem de contêiner, que inclui o SDK do .NET e um driver Vulkan por software:
# .github/workflows/build.yml
jobs:
build:
runs-on: ubuntu-latest
container: ghcr.io/mass4org/turian-cli:latest
steps:
- uses: actions/checkout@v4
- run: turian-cli export .
- uses: actions/upload-artifact@v4
with:
name: game-linux
path: Output/
Os códigos de saída são diferentes de zero em caso de falha, então um script quebrado ou a falta de cena inicial fazem o job falhar.