Essa é uma revisão anterior do documento!
Tabela de conteúdos
Editor de Arenas
O editor de arenas do sBotics é uma das ferramentas mais complexas e poderosas do simulador, permitindo a criação e personalização de cenários detalhados para competições e atividades educacionais. Embora a interface possa exigir um período de adaptação, especialmente no controle da câmera, o editor oferece um controle preciso sobre a criação de arenas.
A base do editor é um cursor de ladrilhos, que se move nas coordenadas da arena para realizar alterações. Os comandos de movimentação são intuitivos: W
, A
, S
e D
para deslocamento lateral, e Z
e X
para movimentação vertical. Ao selecionar um ladrilho na barra inferior (ilustrada na imagem abaixo), ele é inserido na posição do cursor. Para manipulações adicionais, como rotação, elevação ou exclusão, posicione o cursor sobre o ladrilho desejado e utilize as teclas R
para rotacionar, +
ou -
para elevar ou descer, e delete
para remover.
Note: No vídeo acima é possível ver a câmera sendo rotacionada para melhorar a visibilidade de alguns pontos (já que a movimentação do cursor de edição de ladrilho não é tão livre quanto a câmera do simulador). Para girar a câmera no editor, basta utilizar as teclasC
eV
.
A segunda aba do editor se trata do Editor de Ladrilhos, uma outra interface com outra usabilidade e conceitos, e por esta razão não foi agrupada nesta página.
Configurações Avançadas
O editor de arenas também oferece configurações avançadas, permitindo um controle granular sobre o comportamento da arena e dos ladrilhos. Essas configurações são armazenadas em formato JSON, oferecendo flexibilidade e precisão na personalização.
Entendendo o Tipo JSON de Pontuação
O objeto JSON de pontuação é utilizado para configurar a pontuação dos ladrilhos e penalidades na arena. Ele segue o seguinte padrão:
{ "points": 0, "multiplier": 1, "attempt_points": [], "attempt_multipliers": [] }
“points”:
Define a pontuação base do ladrilho ou penalidade.
“multiplier”
: Define o multiplicador de pontuação.
“attempt_points”
: Permite definir pontuações diferentes para cada tentativa. Por exemplo, [5, 4, 3]
atribui 5 pontos na primeira tentativa, 4 na segunda e 3 na terceira. Tentativas subsequentes ignoram essa configuração.
“attempt_multipliers”
: Semelhante a “attempt_points”, mas para multiplicadores.
As propriedades “penalty” ilustradas abaixo, utilizam este mesmo objeto de pontuação, logo sendo necessário aplicar valores negativos de pontos (ou decimais de multiplicadores) para de fato representarem penalidades.
Configurações Avançadas de Arena
As seguintes configurações avançadas permitem personalizar diversos aspectos da arena. Objetos de pontuação (explicados acima) estão representados aqui como { … }
.
Dados Básicos:
"name": "Robocup Arena 12", // Nome da arena "description": "Arena", // Descrição da arena "time_of_day": "15:00", // Horário do dia (6:00 - 18:00), controla a posição do sol "time_limit_minutes": 5, // Limite de tempo em minutos "hard_evacuation_point": false, // Área de resgate difícil (falso: N1, difícil: N2)
Importante:
"stop_game_on_time_limit": true, // Jogo termina ao atingir o limite de tempo "path_arena": true, // Indica se a arena possui um trajeto definido "ignore_dead_victim_if_any_living_left": true, // Ignora pontuação das vítimas mortas se houverem vivas "advance_button": false, // Deixa o botão "Avançar" sempre habilitado, caso contrário vai usar o threshold "skip_path_threshold": 3, // Número de tentativas para habilitar o "pulo de trilha" (avançar) "end_on_endgoal": true, // Rotina termina ao atingir o ladrilho final "advance_penalty": 0, // Número de segundos que é preciso esperar depois de uma nova tentativa para clicar em "nova tentativa" "max_time_if_incomplete": true, // Rotinas incompletas levam o tempo máximo (5 minutos, 7, etc) "lack_of_progress": true, // Habilita penalidades por falta de progresso "scoring": true, // Habilita pontuação "force_advance": false, // Força o avanço para o próximo trajeto após o threshold "randomize_victim_position": true, // Randomiza a posição das vítimas "end_on_rescue_victims": false, // Rotina termina ao resgatar todas as vítimas "short_lack_of_progress_time": 10, // Tempo para o contador "leve" da falha de progresso "long_lack_of_progress_time": 50, // Tempo para o contador "grave" da falha de progresso "ramp_entrance_score": { ... }, // Pontuação ao entrar em qualquer rampa na arena "ramp_exit_score": { ... }, // Pontuação ao sair de qualquer rampa na arena "use_rescue_checkpoint_lack_of_progress_penalty": true, // Habilita penalidade por cada falha de progresso na rotina para deduzir do ladrilho final "end_goal_lack_of_progress_penalty": { ... }, // Valor da penalidade por cada falha de progresso para deduzir do ladrilho final "rescue_checkpoint_lack_of_progress_penalty": 0.025, // Valor da penalidade de multiplicadores por falha de progresso em trechos que contém sala de resgate "path_size_checkpoint_entrance_score": { ... }, // Pontuação que será atribuida ao entrar em um checkpoint pelo tamanho do trajeto que foi concluído. Valor padrão é 5,3,1 pois na primeira tentativa sera 5*numero de ladrilhos de um determinado trajeto "path_size_checkpoint_exit_score": { ... }, // Pontuação que será atribuida ao sair de um checkpoint pelo tamanho do trajeto anterior que foi concluído.
Pedagógico:
"change_position_in_routine": false, // Permite alterar a posição e depurar o robô durante a rotina "robot_constraints": { // Restrições do robô, permite que a arena limite os robôs para criar verdadeiros desafios "use_constraints": false, // Habilita restrições "constraints_violation_penalty": { ... }, // Penalidade por violar de restrições, pode ser 999 pontos ou qualquer valor escolhido "max_price": 50, // Preço máximo do robô, use -1 para ignorar restrição "max_weight": 100, // Peso máximo do robô, use -1 para ignorar restrição "max_ultrasonic": 10, // Número máximo de sensores ultrassônicos, use -1 para ignorar restrição "max_servomotor": 10, // Número máximo de servomotores, use -1 para ignorar restrição "max_light": 10, // Número máximo de sensores de luz, use -1 para ignorar restrição "max_buzzer": 10, // Número máximo de buzzers, use -1 para ignorar restrição "max_color": 10, // Número máximo de sensores de cor, use -1 para ignorar restrição "max_touch": 10, // Número máximo de sensores de toque, use -1 para ignorar restrição "max_camera": 10, // Número máximo de câmeras, use -1 para ignorar restrição "max_pen": 10 // Número máximo de canetas, use -1 para ignorar restrição }
Incompletos:
"use_medals": false, // Utiliza o sistema de medalhas para pontuar
Depreciado:
"start_with_rescue_kit": false, // Robô inicia com kit de resgate no início da rodada "starter_rescue_kit_score": { ... }, // Pontuação por entregar kit de resgate inicial "return_rescue_kits_with_robot": true, // Kits de resgate retornam com o robô em novas tentativas "randomize_safe_area": false, // Randomiza uma área de resgate (incompatível com múltiplas áreas de resgate) "multiplier_powered_by_victims_rescued": false, // Antigo cálculo para atribuição de multiplicadores "placeable_checkpoints": 0, // Número de checkpoints posicionáveis manualmente "placeable_checkpoint_entrance_score": { ... }, // Pontuação ao entrar em checkpoint posicionado manualmente "placeable_checkpoint_exit_score": { ... }, // Pontuação ao sair de checkpoint posicionado manualmente "placeable_checkpoint_margin": 0, // Margem de ladrilhos para posicionar outro checkpoint manualmente
Funções depreciadas não necessariamente não funcionam (a verdade é que todas elas funcionam se configuradas corretamente), apenas deixaram de serem utilizadas pela OBR e não oferecemos mais suporte.