====== Editor de Ladrilhos ======
No sBotics, o editor de ladrilhos oferece a capacidade de personalizar cada ladrilho da arena, permitindo um controle minucioso sobre o ambiente de simulação. Além disso, é possível importar e exportar ladrilhos para arquivos ''sTiles'' ou ''json'', para utilizar em outras arenas. Cada ladrilho possui um conjunto de configurações padrão, que podem ser ajustadas para criar cenários únicos e desafiadores.
{{ editor-ladrilhos.png?750 }}
As configurações padrão de um ladrilho são representadas em formato ''JSON'', conforme o exemplo abaixo:
==== Dados Básicos: ====
"image": "https://cdn.sbotics.net/connector?_token=wdwMzUKdhGpNJIO6QRcFSKbCIh4RyDEa5LzDsYAw&cmd=file&target=fls2_VGlsZXMvc3RyYWlnaHQtbGluZS5wbmc", // Imagem do ladrilho
"markable": false, // Permite checkpoints manuais (depreciado)
"has_checkpoint": false, // Indica se o ladrilho possui checkpoint
"is_ramp": false, // Indica se o ladrilho é inclinado/rampa
"is_endgoal": false, // Indica se o ladrilho é o objetivo final
"rescue_zone": false, // Indica se o ladrilho faz parte de uma sala de resgate
"enter_score": { ... },
"exit_score": { ... },
"random_type": "none" // Tipo de aleatorização (none, straight, curve)
* ''"image"'': URL da imagem do ladrilho.
* ''"markable"'': Permite a criação de checkpoints manuais (depreciado).
* ''"has_checkpoint"'': Indica se o ladrilho possui um checkpoint.
* ''"is_ramp"'': Indica se o ladrilho é uma rampa/inclinado.
* ''"is_endgoal"'': Indica se o ladrilho é o objetivo final da arena.
* ''"rescue_zone"'': Indica se o ladrilho faz parte de uma sala de resgate.
* ''"exits"'': Define as saídas do ladrilho, controlando a direção em que o robô pode se mover **(ler mais sobre abaixo)**.
* ''"enter_score"'': [[Editor de Arenas#entendendo_o_tipo_json_de_pontuacao|Objeto de Pontuação]] da pontuação ao entrar no ladrilho pela primeira vez.
* ''"exit_score"'': [[Editor de Arenas#entendendo_o_tipo_json_de_pontuacao|Objeto de Pontuação]] da pontuação ao sair do ladrilho pela primeira vez.
* ''"random_type"'': Determina se o ladrilho pode ser substituído por outro tipo durante a aleatorização da arena (usando o botão de "dado"). Os valores possíveis são ''"none"'' //(padrão/desativado)//, ''"straight"'' e ''"curve"''.
==== Saídas do Ladrilho ====
{{ saídas-ladrilho.png?300}}
No arquivo JSON de configuração do ladrilho, existe uma configuração **extremamente importante** para arenas com percurso/caminho: As saídas do ladrilho. As saídas do ladrilho informam aonde o simulador deve buscar o próximo ladrilho para seguir o percurso.
Todo ladrilho tem 4 lados de entrada e 5 saídas possíveis: **''a''**, **''A''**, **''b''**, **''B''** e **''blocked''** (sem saída naquele lado).
"exits": {
"side_a": "exit_A",
"side_b": "blocked",
"side_A": "exit_a",
"side_B": "blocked"
},
**No sBotics, a linha formada pela arena começa pelo ladrilho final em direção a "ladrilhos-checkpoint", sendo o último checkpoint encontrado o ladrilho que o robô vai iniciar.**
> Desta forma, os ''"side_"'' representam o lado do ladrilho que o robô deve sair e ''"exit_"'' o lado que o robô é suposto de entrar para sair daquele lado (já que a referência side e exit começam "ao contrário").
Em um exemplo clássico deste sistema, é possível ver como um beco sem saída deve ser configurado pelo simulador:
{{ beco.png?400 }}
Pode parecer confuso pensar que entrando por ''"A"'' se sai em ''"a"'' no ladrilho antes do beco, porém considerando que estamos seguindo a linha ao contrário faz bastante sentido.
> **Aviso:** No Ladrilho de Início, todos os ''"side_"'' devem ser ''"blocked"'';
===== Objetos =====
{{ painel-objetos.png?250}}
{{ objetos.png?250}}
Além das configurações de ladrilhos, o editor também permite adicionar objetos à arena. Esses objetos podem ter diferentes tipos, pontuações de resgate e a capacidade de servir como pontos de evacuação (''evacuation_bonus'').
As propriedades dos objetos incluem:
* **Material (''m'')**: Define a cor do objeto, utilizando as cores disponíveis no sBotics:
* ''Branco'', ''Cinza'', ''Cinza Escuro'', ''Preto'', ''Verde'', ''Lima'', ''Verde-azulado'', ''Ciano'', ''Azul'', ''Roxo'', ''Magenta'', ''Rosa'', ''Vermelho'', ''Marrom'', ''Laranja'' e ''Amarelo''.
* **Tipo (''t'')**: Define o formato do objeto.
* **Peso (''w'')**: Define a massa do objeto (objetos com massa diferente de 0 são afetados pela gravidade).
* **Reiniciar Posição**: Permite ativar se o objeto será reiniciado a sua posição inicial a cada nova tentativa (válido apenas para objetos não estáticos).
* **Posição (''X'', ''Y'', ''Z'')**: Define a posição do objeto na arena.
* **Rotação (''X'', ''Y'', ''Z'')**: Define a rotação do objeto (em graus).
* **Escala (''X'', ''Y'', ''Z'')**: Define o tamanho do objeto.
* **Pontuação de Resgate**: Define a pontuação por resgatar o objeto.
> //Se o objeto for do tipo "Evacuation Point" (área de resgate), é possível especificar bônus para alguns tipos de resgate usando um [[Editor de Arenas#entendendo_o_tipo_json_de_pontuacao|Objeto de Pontuação]] para cada tipo de objeto a ser bonificado dentro de "evacuation_bonus"//:
>
> //Exemplo abaixo retirado da área de resgate vermelha de arenas OBR://
>
"evacuation_bonus": {
"ObjectDeadVictim": {
"points": 0,
"multiplier": 1.4,
"attempt_points": [],
"attempt_multipliers": []
}
}
Para referenciar tipos de objetos a serem resgatados, utilize o esquema de nomeação do nome do objeto em inglês, com as iniciais em maiúsculo, precedido por "Object": ''ObjectCuboid'', ''ObjectRescueKit'', ''ObjectLiveVictim'', etc...
Se o objeto for de qualquer outro tipo, é possível definir uma pontuação que será concedida por resgatar o objeto em qualquer área de resgate, utilizando um [[Editor de Arenas|objeto de pontuação]]:
"rescue_score": {
"points": 0,
"multiplier": 1,
"attempt_points": [],
"attempt_multipliers": []
}
--------
**Para alterar arenas como um todo, veja [[Editor de Arenas]].**