Tabela de conteúdos
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.
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”
: Objeto de Pontuação da pontuação ao entrar no ladrilho pela primeira vez.“exit_score”
: 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
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:
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
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
eAmarelo
.
- 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 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 objeto de pontuação:
"rescue_score": { "points": 0, "multiplier": 1, "attempt_points": [], "attempt_multipliers": [] }
Para alterar arenas como um todo, veja Editor de Arenas.