Routster Docs
Open Routster

Parameter guide

Fine-tune every map generation job via JSON.

When you trigger a map generation job, you pass a JSON config that controls how the algorithm finds and grades routes. Every parameter has a sensible default — only set the ones you want to override. The full reference for each mode is below.

When does my map appear?

Generated maps are private by default until you publish them. Processing can take a while, so don't worry if your map isn't visible immediately — once it finishes, you can review every generated route before deciding to share it.

Route Game

Focuses on finding the shortest legal path between two points, with optional alternatives.

Discovery

ParameterDefaultDescription
num_random_points3000Grid-sampled candidate start points (500–10 000). Higher values surface more route variety at the cost of compute time.
candidate_min_dist200Minimum allowable straight-line distance between the start and finish controls (in pixels). Legs shorter than this are discarded.
candidate_max_dist2500Maximum allowable straight-line distance between the start and finish controls (in pixels). Caps the maximum leg length.
max_candidate_pairs20000Maximum number of candidate control pairs scored before random downsampling. Increase this if your pool is exhausted before reaching the desired number of output routes.
num_output_routes20Target number of successful route legs to generate and upload per job.
min_score15.0Minimum hardness score (0–100). Higher values ensure only complex, difficult route choices are kept, filtering out trivial legs.

Pathfinding

ParameterDefaultDescription
m_alts1Number of alternative routes to generate per leg. Capped at 3 (so up to 4 routes total). Each alternative requires an additional pathfinding pass.
max_pairwise_overlap0.70Maximum proximity overlap between two routes (0–1). If a new alternative overlaps an existing route more than this, it is discarded. Enforced for all non-first alternatives (i.e. Route 2+).
min_separation_px0Minimum geographic separation between routes in pixels. 0 disables. At 1:4000/508 DPI, ~50 px ≈ 10 m.
min_divergence_fraction0.25Fraction of each route that must be at least min_separation_px apart. E.g. 0.25 means 25% of the route must genuinely diverge. This prevents routes sharing the same entry/exit corridors from passing with only a tiny detour.
min_length_diff0.0Minimum relative length difference. Ensures an alternative isn't nearly identical in length to the optimal route (e.g. 0.05 requires a 5% longer route).
max_length_diff0.0Maximum relative length difference. Discards alternatives that are uncompetitively long compared to the optimal route (e.g. 0.4 discards routes > 40% longer).
inflate_obstacles1Erodes the passable area by this many pixels before pathfinding. This creates a buffer zone around impassable terrain so routes don't unrealistically shave tight corners.
penalty_factor8.0Cost multiplier for the 'penalty band'. When finding alternatives, pixels along previously accepted routes become more expensive. This forces A* to find genuinely different paths.
penalty_radius20Radius of the penalty band (px) around accepted paths where penalty_factor is applied.
penalty_trim0.35Fraction of each path excluded from the penalty band at each end, allowing routes to naturally converge at controls.
attractor_radius50Cost discount corridor. Discovery graph routes are first LOS-smoothed to match passable terrain, then receive a 20% cost discount within this radius, biasing pathfinding to stay topologically grounded.
default_cost1.0The default traversal cost assigned to pixels whose color doesn't match any explicit mapping rules. 1.0 is standard open terrain.

Rendering

ParameterDefaultDescription
line_alpha0.65Transparency of the rendered route overlay lines (0-1). 0.65 provides good visibility while letting the underlying map show through.
route_colorsList of hex strings (e.g. ["#FF0000", "#0000FF"]). Defines the colors of the main route and alternatives, applied from left to right on the final export.
control_radius_mm3.0ISOM specification for the control circle radius in millimeters. Used alongside map scale and DPI to calculate pixel dimensions.
zoom_margin400Padding (in pixels) added around the bounding box of the route to provide visual context in the exported image.
zoom_level18Base zoom level used internally for pixel-to-millimeter scale calculations.

Scale

ParameterDefaultDescription
dpi600Map DPI (Dots Per Inch). Critical for calculating metric distances and ISOM line widths. Must match the exact DPI used during OCAD export.
map_scale4000Map scale denominator (e.g. 4000 for 1:4000). Used to convert pixel distances into real-world meters.
{
  "num_random_points": 3000,
  "dpi": 600,
  "map_scale": 4000,
  "m_alts": 1,
  "max_pairwise_overlap": 0.70,
  "min_separation_px": 0,
  "min_length_diff": 0.0,
  "max_length_diff": 0.0,
  "inflate_obstacles": 1,
  "penalty_factor": 8.0,
  "penalty_radius": 20,
  "penalty_trim": 0.35,
  "line_alpha": 0.65,
  "control_radius_mm": 3.0,
  "zoom_margin": 400
}

Route Finder

Generates difficulty-graded route challenges from a map.

Discovery

ParameterDefaultDescription
num_random_points1500Grid-sampled candidate start points. Higher values increase the pool of possible challenges but take longer to process.
candidate_min_dist500Minimum allowable straight-line distance (in pixels) between start and finish points.
candidate_max_dist2500Maximum allowable straight-line distance (in pixels) between start and finish points.
max_candidate_pairs15000Maximum pairs evaluated before downsampling. Limits compute time on large maps.
min_hardness25.0Minimum navigation hardness score (0–100). Filters out trivial legs based on obstacles and route choices.
min_separation150Minimum geographic distance between any two selected challenge starts (px). Ensures spatial diversity.

Challenges

ParameterDefaultDescription
num_challenges15Target number of final rendered challenges to generate and upload.
min_route_length500Minimum length of the actual traversed path (in pixels), not just straight-line distance.
max_route_length2500Maximum length of the actual traversed path (in pixels).

Rendering

ParameterDefaultDescription
route_padding800Padding (in pixels) added around the bounding box of the route to ensure sufficient map context is visible.
marker_radius71Pixel radius of the start and finish control circles.
marker_padding200Minimum padding (in pixels) required between a control circle and the edge of the exported image.
line_width8Thickness of the rendered route line (in pixels).
inflate_obstacles1Erodes the passable area by this many pixels. Creates a buffer around impassable objects so the generated route stays realistic.

Scale

ParameterDefaultDescription
dpi508Map DPI. Critical for metric conversion and scale (modal defaults to 508, local GUI defaults to 600).
map_scale4000Map scale denominator (e.g. 4000 for 1:4000).

Route Navigator

Focuses on complex navigation and deceptive branches ("wrong turns"). All output coordinates are in the source image's pixel space with no per-challenge crops. Branch paths are driven by the passable skeleton graph and are LOS-smoothed, rather than using full A* pathfinding.

Discovery

ParameterDefaultDescription
num_random_points1500Grid-sampled candidate start points. Higher values increase the pool of possible challenges but take longer to process.
candidate_min_dist200Minimum allowable straight-line distance (in pixels) between start and finish points.
candidate_max_dist2500Maximum allowable straight-line distance (in pixels) between start and finish points.
max_candidate_pairs15000Maximum pairs evaluated before downsampling. Limits compute time on large maps.
min_hardness15.0Minimum navigation hardness score (0–100).
min_separation150Minimum geographic distance between any two selected challenge starts (px). Ensures spatial diversity.

Macro graph extraction

ParameterDefaultDescription
cluster_eps_px100Line-of-sight aware DBSCAN radius. Merges nearby junction clusters into one 'macro-node', but only if they have clear line-of-sight. This prevents incorrectly grouping junctions separated by impassable walls.
min_deadend_px40Branches shorter than this length (in pixels) are considered insignificant noise and are ignored.
path_subsample5Optimization parameter that keeps only every Nth pixel in branch paths before the Theta* rewrite phase.
max_snap_px150Maximum allowed distance (in pixels) to snap a grid-sampled discovery point to the nearest valid macro-node.

Challenges

ParameterDefaultDescription
num_challenges15Target number of final rendered challenges to generate and upload.
min_route_length600Minimum length of the actual traversed path (in pixels).
max_route_length2500Maximum length of the actual traversed path (in pixels).
min_wrong_turns1Guarantees deception by requiring the correct path to pass through at least this many interior macro-nodes that branch off into an incorrect path (a 'wrong turn').

Rendering

ParameterDefaultDescription
route_padding500Padding (in pixels) added around the bounding box of the route to ensure sufficient map context is visible.
control_radius_mm3.0ISOM specification for the control circle radius in millimeters.

Scale

ParameterDefaultDescription
dpi508Map DPI. Critical for metric conversion and scale (modal defaults to 508, local GUI defaults to 600).
map_scale4000Map scale denominator (e.g. 4000 for 1:4000).

Iterate carefully

Defaults are tuned for typical orienteering maps. Change one parameter at a time so you can tell which change caused which difference once processing finishes.