Linguagem esotérica de domínio específico para criação de pixel art estática e animada.
Arquivos Azulejo têm extensão .azlj. O runtime é gerenciado pela LÖVE2D.
DSL declarativa para desenho em grade de pixels. Cada programa descreve uma cena visual (ou animação) usando comandos simples. Não é Turing-completa — e nem precisa ser.
love source/ caminho/para/arquivo.azlj| Tipo | Descrição | Exemplo |
|---|---|---|
int |
Inteiro positivo | 16, 255 |
coord |
Par de coordenadas | 2,4 |
color |
Hex RGB ou RGBA | #FF0000, #FF0000FF |
size |
Dimensão do canvas | 16x16 |
size LARGURAxALTURA
Obrigatório. Deve ser o primeiro comando. Define tamanho da grade.
background #RRGGBB
Preenche fundo com cor sólida. Padrão: branco.
color #RRGGBB
Define cor ativa para todos os comandos de desenho seguintes.
pixel x,y
Pixel único em x,y.
line x1,y1 x2,y2
Linha de (x1,y1) até (x2,y2).
rect x1,y1 x2,y2
Retângulo vazio.
fill x1,y1 x2,y2
Retângulo preenchido.
circle x,y r
Círculo com centro (x,y) e raio r.
Azulejo suporta animações frame-a-frame. Comandos de metadados vão antes do primeiro @frame. Comandos de desenho antes do primeiro @frame são executados em todos os frames (útil para background e elementos fixos).
type animation
Declara arquivo como animação. Padrão: image.
framerate N
Frames por segundo. Padrão: 1.0. Deve ser > 0.
loop true
loop true N
loop false
Ativa loop. N opcional define número de repetições (>= 1). Sem N: loop infinito.
@frame
Marca início de um novo frame. Cada bloco entre marcadores é um frame independente.
-- animacao.azlj
size 16x16
type animation
framerate 8
loop true
background #1a1a2e -- executado em todos os frames
@frame
color #e94560
fill 4,4 8,8
@frame
color #e94560
fill 8,8 12,12
@frame
color #e94560
fill 4,8 8,12
Comandos antes do primeiro
@framerodam como um conjunto de comandos fixos antes da execução de cada frame.
Se não houver nenhum@frame, o arquivo inteiro é tratado como imagem estática.
-- hello.azlj
size 16x16
background #1a1a2e
color #e94560
fill 4,4 12,12
color #ffffff
pixel 6,7
pixel 10,7
line 6,10 10,10
-- comentário de linha
Comentários podem aparecer no final de qualquer linha.
azulejo/
├── README.md
├── source/
│ ├── main.lua # entry point LÖVE2D
│ ├── tokenizer.lua
│ ├── parser.lua
│ ├── draw.lua
│ ├── state.lua
│ └── debug.lua
└── examples/
├── hello.azlj
└── ...
-
repeat/ blocos de repetição -
sprite/stamp(sprites reutilizáveis)