sBotics Wiki

Tutorial do Simulador usado pela OBR

Ferramentas do usuário

Ferramentas do site


editor_de_arenas

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
editor_de_arenas [2025/04/02 17:39] – criada admineditor_de_arenas [2025/04/15 16:34] (atual) – edição externa 127.0.0.1
Linha 2: Linha 2:
 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. 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, 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.+{{usando-editor.gif}} 
 + 
 +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. 
 + 
 +{{ seletor-ladrilhos.png?600 }} 
 + 
 +> **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 teclas **''C''** e **''V''**. 
 + 
 +------ 
 + 
 +**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 ===== ===== Configurações Avançadas =====
Linha 12: Linha 25:
 O objeto JSON de pontuação é utilizado para configurar a pontuação dos ladrilhos e penalidades na arena. Ele segue o seguinte padrã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:
  
-<code json>+<code javascript>
 { {
-"points": 0, +    "points": 0, 
-"multiplier": 1, +    "multiplier": 1, 
-"attempt_points": [], +    "attempt_points": [], 
-"attempt_multipliers": []+    "attempt_multipliers": []
 } }
 </code> </code>
  
-"points": Define a pontuação base do ladrilho ou penalidade. +  * ''"points":'' Define a pontuação base do ladrilho ou penalidade. 
-"multiplier": Define o multiplicador de pontuação. +  * ''"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_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. +  * ''"attempt_multipliers"'': Semelhante a "attempt_points", mas para multiplicadores. 
-As propriedades "penalty", embora utilizem esse objeto de pontuação, aplicam valores negativos, representando penalidades.+  As propriedades "penalty" ilustradas abaixoutilizam 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 ==== ==== Configurações Avançadas de Arena ====
  
-As seguintes configurações avançadas permitem personalizar diversos aspectos da arena:+As seguintes configurações avançadas permitem personalizar diversos aspectos da arena. **Objetos de pontuação** (explicados acima) estão representados aqui como ''{ ... }''.
  
-<code json> +**Dados Básicos:** 
-{+ 
 +<code javascript>
 "name": "Robocup Arena 12", // Nome da arena "name": "Robocup Arena 12", // Nome da arena
 "description": "Arena", // Descrição 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_of_day": "15:00", // Horário do dia (6:00 - 18:00), controla a posição do sol
-"advance_button": false, // Habilita o botão "Avançar" +"time_limit_minutes": 5, // Limite de tempo em minutos 
-"path_arena": true, // Indica se a arena possui um trajeto definido +"hard_evacuation_point": false, // Área de resgate difícil (falsoN1difícil: N2) 
-"start_with_rescue_kit": false, // Robô inicia com kit de resgate +</code> 
-"return_rescue_kits_with_robot"true, // Kits de resgate retornam com o robô + 
-"use_medals"false, // Utiliza medalhas na pontuação+**Importante:** 
 +<code javascript>
 "stop_game_on_time_limit": true, // Jogo termina ao atingir o limite de tempo "stop_game_on_time_limit": true, // Jogo termina ao atingir o limite de tempo
-"change_position_in_routine": false, // Permite alterar posição do robô durante a rotina +"path_arena": true, // Indica se arena possui um trajeto definido 
-"max_time_if_incomplete": true, // Define tempo máximo para rotinas incompletas +"ignore_dead_victim_if_any_living_left": true, // Ignora pontuação das vítimas mortas se houverem vivas 
-"hard_evacuation_point": false, // Ponto de evacuação difícil+"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 "lack_of_progress": true, // Habilita penalidades por falta de progresso
 "scoring": true, // Habilita pontuação "scoring": true, // Habilita pontuação
-"force_advance": false, // Força o avanço para o próximo trajeto +"force_advance": false, // Força o avanço para o próximo trajeto após threshold
-"placeable_checkpoints": 0, // Número de checkpoints posicionáveis +
-"placeable_checkpoint_margin": 0, // Margem para posicionamento de checkpoints +
-"end_on_endgoal": true, // Rotina termina ao atingir objetivo final +
-"randomize_safe_area": false, // Randomiza a área segura+
 "randomize_victim_position": true, // Randomiza a posição das vítimas "randomize_victim_position": true, // Randomiza a posição das vítimas
 "end_on_rescue_victims": false, // Rotina termina ao resgatar todas as vítimas "end_on_rescue_victims": false, // Rotina termina ao resgatar todas as vítimas
-"ignore_dead_victim_if_any_living_left": true, // Ignora vítimas mortas se houver vivas +"short_lack_of_progress_time": 10, // Tempo para o contador "leveda falha de progresso 
-"advance_penalty": 0, // Penalidade por avançar para o próximo trajeto +"long_lack_of_progress_time": 50, // Tempo para o contador "grave" da falha de progresso 
-"skip_path_threshold": 3, // Limite para pular ladrilhos no trajeto +"ramp_entrance_score": { ... }, // Pontuação ao entrar em qualquer rampa na arena 
-"time_limit_minutes": 5, // Limite de tempo em minutos +"ramp_exit_score": { ... }, // Pontuação ao sair de qualquer rampa na arena 
-"short_lack_of_progress_time": 10, // Tempo para falta de progresso leve +"use_rescue_checkpoint_lack_of_progress_penalty": true, // Habilita penalidade por cada falha de progresso na rotina para deduzir do ladrilho final 
-"long_lack_of_progress_time": 50, // Tempo para falta de progresso grave +"end_goal_lack_of_progress_penalty": ... }, // Valor da penalidade por cada falha de progresso para deduzir do ladrilho final 
-"end_goal_lack_of_progress_penalty": { ... }, // Penalidade por falta de progresso no objetivo 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 
-"ramp_entrance_score": { ... }, // Pontuação ao entrar na rampa +"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 
-"ramp_exit_score": { ... }, // Pontuação ao sair da rampa +"path_size_checkpoint_exit_score": { ... }, // Pontuação que será atribuida ao sair de um checkpoint pelo tamanho do trajeto anterior que foi concluído. 
-"use_rescue_checkpoint_lack_of_progress_penalty": true, // Habilita penalidade por falta de progresso em checkpoints de resgate +</code> 
-"rescue_checkpoint_lack_of_progress_penalty": 0.025, // Valor da penalidade por falta de progresso em checkpoints de resgate + 
-"placeable_checkpoint_entrance_score": ... }, // Pontuação ao entrar em checkpoint posicionável +**Pedagógico:** 
-"placeable_checkpoint_exit_score": { ... }, // Pontuação ao sair de checkpoint posicionável +<code javascript> 
-"path_size_checkpoint_entrance_score": { ... }, // Pontuação ao entrar em checkpoint de tamanho de trajeto +"change_position_in_routine": false, // Permite alterar a posição e depurar o robô durante rotina 
-"path_size_checkpoint_exit_score": { ... }, // Pontuação ao sair de checkpoint de tamanho de trajeto +"robot_constraints": { // Restrições do robô, permite que a arena limite os robôs para criar verdadeiros desafios 
-"starter_rescue_kit_score": { ... }, // Pontuação por kit de resgate inicial +    "use_constraints": false, // Habilita restrições 
-"multiplier_powered_by_victims_rescued"false, // Multiplicador baseado no número de vítimas resgatadas +    "constraints_violation_penalty": { ... }, // Penalidade por violar de restrições, pode ser 999 pontos ou qualquer valor escolhido 
-"@1": "Robot Constraints", // Indica início das restrições do robô +    "max_price": 50, // Preço máximo do robô, use -1 para ignorar restrição 
-"#1": "Use -1 to ignore specific constraint.", // Instrução para ignorar restrições +    "max_weight": 100, // Peso máximo do robô, use -1 para ignorar restrição 
-"robot_constraints": { // Restrições do robô +    "max_ultrasonic": 10, // Número máximo de sensores ultrassônicos, use -1 para ignorar restrição 
-"use_constraints": false, // Habilita restrições +    "max_servomotor": 10, // Número máximo de servomotores, use -1 para ignorar restrição 
-"constraints_violation_penalty": { ... }, // Penalidade por violação de restrições +    "max_light": 10, // Número máximo de sensores de luz, use -1 para ignorar restrição 
-"max_price": 50, // Preço máximo do robô +    "max_buzzer": 10, // Número máximo de buzzers, use -1 para ignorar restrição 
-"max_weight": 100, // Peso máximo do robô +    "max_color": 10, // Número máximo de sensores de cor, use -1 para ignorar restrição 
-"max_ultrasonic": 10, // Número máximo de sensores ultrassônicos +    "max_touch": 10, // Número máximo de sensores de toque, use -1 para ignorar restrição 
-"max_servomotor": 10, // Número máximo de servomotores +    "max_camera": 10, // Número máximo de câmeras, use -1 para ignorar restrição 
-"max_light": 10, // Número máximo de sensores de luz +    "max_pen": 10 // Número máximo de canetas, use -1 para ignorar restrição
-"max_buzzer": 10, // Número máximo de buzzers +
-"max_color": 10, // Número máximo de sensores de cor +
-"max_touch": 10, // Número máximo de sensores de toque +
-"max_camera": 10, // Número máximo de câmeras +
-"max_pen": 10 // Número máximo de canetas +
-}+
 } }
 </code> </code>
 +
 +**Incompletos:**
 +<code javascript>
 +"use_medals": false, // Utiliza o sistema de medalhas para pontuar
 +</code>
 +
 +**Depreciado:**
 +<code javascript>
 +"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
 +</code>
 +
 +> //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.
editor_de_arenas.1743615550.txt.gz · Última modificação: 2025/04/15 16:34 (edição externa)