The sBotics arenas editor is one of the most powerful and complex tools in the simulator, allowing users to create and customize detailed scenarios for competitions and educational purposes. Although the interface may require some adjustment — especially camera control — the editor offers precise control over arena creation.
The core of the editor is a tile cursor that moves along the arena grid to make changes. The movement controls are intuitive: W
, A
, S
, and D
for horizontal movement, and Z
and X
for vertical movement. By selecting a tile from the bottom bar (as shown below), you can place it at the cursor position. For additional actions like rotation, elevation, or deletion, position the cursor over the desired tile and use R
to rotate, +
or -
to move up or down, and delete
to remove.
Note: In the video above, you can see the camera being rotated for better visibility (since tile editor cursor movement isn't as free as the simulator camera). UseC
andV
keys to rotate the camera in the editor.
The second tab of the editor refers to the Tile Editor, which has different usability and concepts, so it is not covered on this page.
The arenas editor also offers advanced settings, allowing fine control over arena behavior and tile properties. These settings are saved in JSON format, providing flexibility and precision.
The scoring JSON object is used to configure tile scores and penalties in the arena. It follows this structure:
{ "points": 0, // Base score of the tile or penalty "multiplier": 1, // Score multiplier "attempt_points": [], // Different scores per attempt (e.g., [5, 4, 3] gives 5 points on the first attempt, 4 on the second, and 3 on the third) "attempt_multipliers": [] // Similar to "attempt_points", but applies to multipliers }
“points”:
Defines the tile's base score or penalty.“multiplier”:
Defines the score multiplier.“attempt_points”:
Allows setting different scores for each attempt — for example, [5, 4, 3]
gives 5 points on the first try, 4 on the second, and 3 on the third. Attempts beyond this ignore the setting.“attempt_multipliers”:
Same as “attempt_points”, but for multipliers.
The following advanced settings customize various aspects of the arena. Scoring objects (explained above) are marked here as { … }
.
Basic Data:
"name": "Robocup Arena 12", // Arena name "description": "Arena", // Arena description "time_of_day": "15:00", // Time of day (6:00 - 18:00), controls sun position "time_limit_minutes": 5, // Time limit in minutes "hard_evacuation_point": false, // Rescue difficulty area (false: Level 1, true: Level 2)
Important Settings:
"stop_game_on_time_limit": true, // Ends the game when time runs out "path_arena": true, // Indicates whether the arena has a defined path "ignore_dead_victim_if_any_living_left": true, // Ignores dead victim scoring if there are still living ones "advance_button": false, // Enables the "Advance" button permanently; otherwise, it's limited by threshold "skip_path_threshold": 3, // Number of attempts required to enable "skip track" (advance) "end_on_endgoal": true, // Ends the routine when the final tile is reached "advance_penalty": 0, // Delay in seconds after a new attempt before the "new attempt" button can be clicked again "max_time_if_incomplete": true, // Incomplete routines are recorded with the maximum allowed time (5, 7 min, etc.) "lack_of_progress": true, // Enables penalties for lack of progress "scoring": true, // Enables scoring system "force_advance": false, // Forces track advancement after reaching the threshold "randomize_victim_position": true, // Randomizes victim positions "end_on_rescue_victims": false, // Ends the routine when all victims are rescued "short_lack_of_progress_time": 10, // Time for minor "lack of progress" counter "long_lack_of_progress_time": 50, // Time for severe "lack of progress" counter "ramp_entrance_score": { ... }, // Score given when entering any ramp in the arena "ramp_exit_score": { ... }, // Score given when exiting any ramp in the arena "use_rescue_checkpoint_lack_of_progress_penalty": true, // Applies a penalty for each progress failure, deducted from the final tile score "end_goal_lack_of_progress_penalty": { ... }, // Penalty per progress failure, deducted from the final tile score "rescue_checkpoint_lack_of_progress_penalty": 0.025, // Multiplier penalty per progress failure in rescue areas "path_size_checkpoint_entrance_score": { ... }, // Score granted when entering a checkpoint based on the completed path size. Default is 5,3,1 meaning 5×path length for first attempt. "path_size_checkpoint_exit_score": { ... }, // Score granted when exiting a checkpoint based on the size of the previous completed path.
Educational Settings:
"change_position_in_routine": false, // Allows moving and debugging the robot during the routine "robot_constraints": { // Robot restrictions, lets the arena limit robots to create real challenges "use_constraints": false, // Enables constraints "constraints_violation_penalty": { ... }, // Penalty for violating constraints — can be 999 points or any chosen value "max_price": 50, // Maximum allowed robot price; use -1 to ignore "max_weight": 100, // Maximum allowed robot weight; use -1 to ignore "max_ultrasonic": 10, // Maximum number of ultrasonic sensors; use -1 to ignore "max_servomotor": 10, // Maximum number of servomotors; use -1 to ignore "max_light": 10, // Maximum number of light sensors; use -1 to ignore "max_buzzer": 10, // Maximum number of buzzers; use -1 to ignore "max_color": 10, // Maximum number of color sensors; use -1 to ignore "max_touch": 10, // Maximum number of touch sensors; use -1 to ignore "max_camera": 10, // Maximum number of cameras; use -1 to ignore "max_pen": 10 // Maximum number of pens; use -1 to ignore }
Incomplete Features:
"use_medals": false, // Enables medal system for scoring
Deprecated Settings:
"start_with_rescue_kit": false, // Robot starts with a rescue kit at the beginning of the round "starter_rescue_kit_score": { ... }, // Score given for delivering the initial rescue kit "return_rescue_kits_with_robot": true, // Rescue kits return with the robot after a new attempt "randomize_safe_area": false, // Randomizes a rescue area (incompatible with multiple rescue areas) "multiplier_powered_by_victims_rescued": false, // Old multiplier calculation based on rescued victims "placeable_checkpoints": 0, // Number of manually placeable checkpoints "placeable_checkpoint_entrance_score": { ... }, // Score given when entering a manually placed checkpoint "placeable_checkpoint_exit_score": { ... }, // Score given when exiting a manually placed checkpoint "placeable_checkpoint_margin": 0, // Margin in tiles to place another manual checkpoint
Deprecated functions may still work if set up correctly — they are just no longer used by OBR and are not officially supported.