Map Editor Documentation

Build a racing game

Turn the race on for your own map: lay a circuit, choose the cars it offers, set the laps, the class and the hour. Wheels of Stone is built this way.

Genres · Page 48 of 49

Wheels of Stone is a set of maps. Each circuit's road, jumps, boost pads, shortcuts and rivals come from one setting in the map file, rules.race, and everything below works on any map that sets it. A player who opens your map gets the whole race: the garage with each car on its people's turntable, the intro round the grid, the countdown, the race and the results.

Start from a Wheels of Stone circuit

Download Meadowbrook (every circuit is at /maps/race-<circuit>.play.json) and open it in the Forge with File → Import Map JSON…. Its race comes with it: change the laps, the cars on offer or the line itself, then save it as your own.

To start from a blank map instead, open the Players module in the Forge. Under Rules there is a Race panel. Switch it on and it lays an oval round the middle of the map. Switching the race on also turns standard victory, the starting base, the AI's armies, fog and building off, because a race has none of them; turn any back on in Rules if your map wants it.

Switch a race on: rules.race

{
  "rules": {
    "race": {
      "track": {
        "id": "lantern_run",
        "name": "Lantern Run",
        "width": 9,
        "offroad": "grass",
        "points": [
          { "x": 40, "y": 30 }, { "x": 88, "y": 30 }, { "x": 100, "y": 64 },
          { "x": 88, "y": 98 }, { "x": 40, "y": 98 }, { "x": 28, "y": 64 }
        ],
        "features": [
          { "kind": "boost", "at": 0.1 },
          { "kind": "items", "at": 0.45 }
        ]
      },
      "laps": 3,
      "roster": ["race_car_rustrocket", "race_car_widow"]
    }
  }
}
  • The line (track.points) is the road's centre line in tiles, in the order the cars drive it, closed back to the first point. The first point is the start line. A point may set its own width (w). The game draws the road, the kerbs and the start gantry along it; paint the ground beside it as you like. Trees, rock and cliffs are walls to a car, and deep water, lava and the void are drops it is hauled back from.
  • Features sit at a fraction of the lap (at, 0 at the start line, 0.5 halfway round): boost pads, jump ramps, crests, rows of item crates, stretches of mud, ice or shallow water (from, to), gaps a ramp must clear, barriers, rolling boulders, fire geysers and shards.
  • Shortcuts (track.shortcuts) are second ways round, each with its own line, width and surface.
  • The race: laps (1 to 9), mode (race or time_trial), speedClass, aiSkill, items, abilities and timeOfDay.
  • The cars: roster lists the cars your map offers; leave it out and every car is on offer. The Race panel lists them by name. karts fixes a seat's car ("3": "race_car_widow").
  • Smoothness: switching the race on sets rules.targetFps to 60, so the game's adaptive graphics trade detail to hold 60 frames a second. The crowd (spectators) is drawn as cardboard cut-outs, so a full grandstand costs little.
  • The garage: a player whose seat has no car in karts picks one in the garage before the race. Alone, the garage waits for them; with friends, it stays open twenty seconds, or garageSeconds (0 for no garage).

A race whose rules cannot run (a line of fewer than four points, a car that does not exist) plays as an ordinary map instead. Validation (F10) and the Race panel list why.

Test it

Test Map in the Forge runs the race as a player gets it, garage first. The seats in the Players module are the grid: a User seat is a driver, a Computer seat an AI rival.