Skip to content

Configuration Files#

This page describes each runtime configuration file of Acres/Content/Simulation: the purpose, the reader and the top-level keys. It also gives the sequence in which the menu, the session folder and the command line change the values.

Group Contents
How Configuration Reaches the Simulation The sources, the session folder copies and the precedence.
Vehicle Files tractor.json, polaris.json and the agents file.
Sensor Files sensors.json, sensors_polaris.json and polaris_lidar_self.f32.
Environment and Farm Files environment.json, farm.json and soil_library.json.
Implement and Rig Files implements/*.json and rigs/*.json.
Other Files npc_cars.json, grass_mask.json, road_mask.bin and the map files.
Menu Presets and Session Copies Saved/Configs, session-config.json and field-setup.json.
Validation in the Menu The checks before a session starts.

The packaged game contains the folder Simulation as loose files in Packaged/Linux/Acres/Content/Simulation. You can thus read and change the files without a build of the game.

How Configuration Reaches the Simulation#

Configuration flow: the menu reads its defaults from the shipped files, writes copies into the session folder and adds options to the command line. The models read the copies, the shipped files without a copy and the options for single values. The precedence is: agents file key, option for one value, sensor overlay, selected file, shipped file, default in the source code. SOURCES SESSION FOLDER READERS AT THE START Shipped files Acres/Content/Simulation tractor.json, sensors.json, environment.json, farm.json, ... Menu the edits of the user presets in Saved/Configs validation before the start Command line -EnvConfig= -VehicleConfig= -EnvHour= -Implement= ... -Agents=<file> 1 default values 3 adds options Session folder environment.json tractor.json sensors.json session-config.json field-setup.json copies with the menu values 2 writes copies Vehicle models tractor.json, polaris.json Implement model implements/<id>.json Sensor recorder sensors.json and overlay Environment environment.json Farm and fields farm.json, field-setup.json files without a copy: polaris.json, farm.json, implements, rigs 4 read 5 options select the files and change single values PRECEDENCE, HIGHEST FIRST 1 agents file key 2 option for one value 3 sensor overlay 4 selected file 5 shipped file 6 default in the code
The menu writes copies of the shipped files into the session folder. The command line selects the files and changes single values. Open the diagram

Each model has default values in the source code. A file changes the defaults. An option changes the value of a file.

Priority Source Example
1, highest A key of the agents file (-Agents=) "implement": "chisel_plow"
2 A command-line option for one value -EnvHour=8, -PolarisSet=mass.occupants=2
3 The sensor overlay of a vehicle sensors_polaris.json on sensors.json
4 The file that an option selects -VehicleConfig=<session folder>/tractor.json
5 The shipped file in Acres/Content/Simulation tractor.json
6, lowest The default in the source code FVehicleParameters

A session from the menu uses the same path as a session from the command line.

  1. The menu reads its default values from the shipped environment.json, sensors.json and tractor.json.
  2. You change values in the menu or load a preset.
  3. The menu examines the values. Validation in the Menu lists the checks.
  4. The menu writes the session folder with copies of the three files and the values of the menu.
  5. The menu adds options to the command line and loads the map again.
  6. The vehicle and the models read the copies.

The menu does not copy polaris.json, sensors_polaris.json, farm.json and the implement files. A session reads these from Acres/Content/Simulation, unless an option selects a different file.

Options That Select Files#

Name Type Unit Default Description
-VehicleConfig= path tractor.json The Maxxum, the soil and the surfaces.
-PolarisConfig= path polaris.json The Polaris.
-PolarisSet= list Single values of polaris.json by their dotted key.
-SensorConfig= path sensors.json The sensors of the session.
-PolarisSensorConfig= path sensors_polaris.json The sensor overlay of the Polaris.
-EnvConfig= path environment.json The clock and the weather.
-FieldSetup= path The folder with field-setup.json.
-ImplementSet= list Single values of the implement file by their dotted key.
-Agents= path The agents file.
-DriveScript= path The drive script. Replay gives the format.

Command-Line Options describes these options and the options for single values.

Command line of a menu session

-VehicleDemo -FromMenu -SessionMode=simulation
-EnvConfig="<session>/environment.json"
-VehicleConfig="<session>/tractor.json"
-VehicleOutput="<session>" -FieldSetup="<session>"
-SpawnAt=spawn-icsc-garage -CropSeason=2026
-SensorConfig="<session>/sensors.json" -SessionLog
-SensorRecord -SensorOutput="<session>/sensors"
# The same session again, with a different start time
S=Packaged/Linux/Acres/Saved/Sessions/20261002-101500-simulation
Packaged/Linux/Acres.sh -VehicleDemo \
  -EnvConfig=$S/environment.json \
  -VehicleConfig=$S/tractor.json \
  -SensorConfig=$S/sensors.json -FieldSetup=$S \
  -EnvHour=16 -VehicleOutput=/data/rerun

Vehicle Files#

tractor.json#

The parameters of the Maxxum, the ground and the surfaces. The Polaris uses the blocks soil and surfaces of this file also.

Readers: the vehicle pawn (AcresVehicle.cpp), the menu (AcresSession.cpp), the optimizer (AcresOptimizer.cpp) and ACRES Core (AcresCoreWorld.cpp).

Name Type Unit Default Description
version text 0.2-farm-tractor The version of the file.
provenance text The origin of the values.
vehicle object The mass, the geometry, the tyres, the steering, the engine, the gears and the PTO. Maxxum 150 Dynamics gives each key.
vehicle.model choice maxxum_150 maxxum_150 or legacy.
soil object The soil class and the Bekker parameters of the ground. Tyre and Soil gives each key.
soil.class text auto A class of the soil library, or auto for the soil unit below each wheel.
implement object The draft implement of the legacy tractor.
implement_model object The implement of the Maxxum and its operator settings. The keys are below.
surfaces object 9 entries One entry for each surface name: friction, rolling, theta, wetness, water_depth_m, deformable.
surface_map_notes text A note on the three sod surfaces.
farm_specifications object The data sheet values of the manufacturer. The game does not read them.
estimated_parameters object Notes on the estimated values. The game does not read them.
source_records list 6 entries The sources of the data. The game does not read them.
Key of implement_model Type Unit Default Description
id choice none The implement identifier. The option is -Implement=.
working_depth_m number m 0.15 The working depth. The option is -ImplementDepth=.
hitch_mode choice auto auto, position, draft or float.
draft_setpoint_n number N 15000 The set-point of the draft control.
spray_rate_l_ha number L/ha 150 The application rate of the sprayer.
seed_rate_kg_ha number kg/ha 150 The seed rate of the drill.
windrow_kg_m number kg/m 3 The mass of hay in one metre of windrow.
bale_mass_kg number kg 450 The mass of the round bale for the loader.
boom_lift_m number m 0.5 The lift of the sprayer boom.

The surface names are asphalt, concrete, gravel, dry_soil, wet_soil, mud, sod_lane, sod and dirt_track. The three sod surfaces have the optional keys traffic_compaction and root_cohesion_pa.

Part of the file

{
  "version": "0.2-farm-tractor",
  "vehicle": {
    "model": "maxxum_150",
    "mass_kg": 5820,
    "wheelbase_m": 2.6416,
    "track_m": 1.9,
    "idle_rpm": 800,
    "max_rpm": 2300,
    "initial_gear": 10
  },
  "soil": {
    "class": "auto",
    "density_mg_m3": 0,
    "compaction_layer_m": 0.3
  },
  "implement_model": {
    "id": "none",
    "working_depth_m": 0.15,
    "hitch_mode": "auto",
    "draft_setpoint_n": 15000
  },
  "surfaces": {
    "sod": {"friction": 0.7, "rolling": 0.05,
            "theta": 0.2, "wetness": 0,
            "water_depth_m": 0, "deformable": true,
            "traffic_compaction": 0.2,
            "root_cohesion_pa": 6000}
  }
}

polaris.json#

The parameters of the Polaris and of its drive-by-wire. Each parameter is an object with the keys value, basis, source and a note. The model reads the value by its dotted path, for example engine.idle_rpm. -PolarisSet= uses the same paths.

Readers: the vehicle pawn (AcresPolaris.cpp), ACRES Core (AcresCorePolaris.cpp) and the tools of Tools/PolarisModel.

Name Type Unit Default Description
vehicle, status, units, schema text The description of the vehicle and of the file format.
sources object 14 entries The source documents that the parameters refer to.
geometry object m The wheelbase and the track widths.
mass object kg, m The dry mass, the fluids, the equipment, the occupants and their positions.
suspension object The travel, the wheel rates, the damping and the bump stops.
tyres object The radius, the widths, the inflation and the tyre coefficients.
steering object The centre angle and the steering ratio.
engine object The speed limits, the torque curve, the inertia and the fuel map.
fuel object The heating value, the density and the tank volume.
cvt object The ratios, the clutch speeds and the engine brake of the CVT.
gearbox object The ratios of the ranges and the park lock.
brakes object N m/bar The brake torque for each bar of line pressure.
aero object The drag area and the air density.
dbw object The timeouts, the speed scale, the steering, the throttle, the brake, the gear and the ULC.

Polaris Ranger Dynamics and Drive-by-Wire and ULC give each parameter.

{
  "geometry": {
    "wheelbase_m": {
      "value": 2.8702,
      "basis": "oem",
      "source": "owner_manual; product_page",
      "sd": 0.01,
      "note": "113 in (287 cm) for every CREW XP 1000 trim. ..."
    }
  },
  "dbw": {
    "command_timeout_s": {
      "value": 0.1,
      "basis": "fitted",
      "source": "dbw_log",
      "sd": 0.004
    }
  }
}

Log line of the read

ACRES_POLARIS_CONFIG file=.../Simulation/polaris.json
  keys=159 unknown=0 mass_kg=1233.0
  cg_m=(1.243, 0.014, 0.655) steering_ratio=11.976
  speed_scale=0.930 finish=graphite

Agents File#

The file of -Agents= gives each agent its own settings. You write this file. The repository ships no default. Command-Line Options lists the keys. Run Several Vehicles shows the procedure.

Name Type Unit Default Description
agents list One object for each agent. The maximum is 8. Each object has the key vehicle.
{"agents": [
  {"name": "maxxum", "vehicle": "maxxum",
   "implement": "chisel_plow", "rl_port": 5555},
  {"name": "polaris", "vehicle": "polaris",
   "spawn": [533, 470, -90], "rl_port": 5556}
]}

Sensor Files#

sensors.json#

The sensor configuration of the session and the sensor rig of the Maxxum. The positions are in the FLU frame of the chassis, in metres.

Readers: the sensor recorder (AcresSensors.cpp), the menu (AcresSession.cpp) and the node acres_core_sim.

Name Type Unit Default Description
version, provenance text The version and the origin of the values.
profile text tractor-default The name of the sensor profile. An episode records it.
profile_validated boolean false True when recorded data of the real sensors validated the profile.
mount_frame choice chassis The frame of the positions: chassis or base_footprint.
seed integer 42 The seed of the sensor noise.
delay_s number s 0.05 The delivery delay of each sample.
gnss object The receiver: enabled, hz (10), antenna_flu_m and the receiver model. INS and GNSS gives each key.
imu object enabled, hz (120), the noise, the bias and position_flu_m.
lidar object enabled, hz (10), rings (8), columns (180), range_m (60), the pose and the beam model. LiDAR gives each key.
camera object enabled, hz (10), width (896), height (512), hfov_deg (90), the pose and the camera model. Camera gives each key.
can object enabled and hz (20). Wheel and CAN Signals gives the frames.
ins object disabled The INS: enabled, hz, the position and the error model. The shipped file has no INS.
{
  "profile": "tractor-default",
  "profile_validated": false,
  "seed": 42,
  "delay_s": 0.05,
  "imu": {"enabled": true, "hz": 120,
          "accel_std_mps2": 0.03,
          "gyro_std_radps": 0.002,
          "accel_bias_mps2": 0.01,
          "gyro_bias_radps": 0.001,
          "position_flu_m": [0.0, 0.0, 0.0]},
  "can": {"enabled": true, "hz": 20}
}
ACRES_SENSOR_PROFILE profile=tractor-default validated=0
  changes=none

sensors_polaris.json#

The sensor rig of the Polaris. The game puts this file on sensors.json: a key of this file replaces the same key of sensors.json. The positions are relative to base_footprint. The agent key sensor_overlay uses the same method for one agent.

Name Type Unit Default Description
version, provenance text The version and the origin of the values.
profile text polaris The name of the sensor profile.
profile_validated boolean true The camera and the LiDAR agree with recorded data of the real vehicle.
mount_frame choice base_footprint The frame of the positions.
gnss, imu object The positions of the antenna and of the IMU.
lidar object The 32-beam LiDAR: 1800 columns, the beam table, output (pcd), the radiometry and self_returns.
camera object The front camera: the pose, hfov_deg (73.54), the lens and the rolling shutter.
ins object enabled The INS at 100 Hz with its error model, frame (nad83) and utm_zone (16).
can object disabled The Polaris has no CAN log in the sensor recorder.

polaris_lidar_self.f32 is the table of the returns from the body of the vehicle. The key lidar.self_returns names it. Calibration/Polaris/lidar_stats.py writes the table from recorded scans.

{
  "profile": "polaris",
  "profile_validated": true,
  "mount_frame": "base_footprint",
  "camera": {"hz": 10, "width": 896, "height": 512,
             "hfov_deg": 73.54,
             "position_flu_m": [2.745, 0.606, 1.887],
             "rpy_deg": [-3.49, 16.52, -2.63]},
  "ins": {"enabled": true, "hz": 100,
          "frame": "nad83", "utm_zone": 16},
  "can": {"enabled": false}
}

Overlay that disables the camera of one agent

{"camera": {"enabled": false}}

Environment and Farm Files#

environment.json#

The clock and the weather at the start of the session. Weather gives the model. When a value is outside its range, the game rejects the file and uses the defaults of the source code.

Readers: the environment (AcresEnvironment.cpp) and the menu.

Name Type Unit Default Description
version, provenance text The version and the origin of the values.
clock.date text 2026-07-15 The start date.
clock.start_hour_local number h 10 The local start time.
clock.utc_offset_h number h -4 The offset of the local time from UTC.
clock.seconds_per_game_minute number s 60 The real seconds for one minute of game time. The range is 0.01 to 600.
site.latitude_deg, site.longitude_deg number deg 40.47, -86.9925 The position for the sun model.
temperature.low_c, temperature.high_c number °C 16, 28 The low and the high temperature of the day.
temperature.day_to_day_sigma_c number °C 1.2 The random change between days.
wind.speed_mps, wind.from_deg number m/s, deg 3.5, 225 The mean wind at 10 m and its direction.
wind.turbulence_intensity, wind.roughness_m number , m 0.2, 0.03 The parameters of the gust model.
clouds choice fair clear, fair, partly or overcast.
rain.enabled boolean false Enables the rain event.
rain.start_hour, rain.end_hour number h 15, 16 The start and the end of the rain event.
rain.total_mm number mm 10 The total depth of the rain event.
rain.prior_mm, rain.prior_hours number mm, h 0, 12 Rain before the start of the session. The range of prior_mm is 0 to 500.
fog.mode choice auto auto, off or fixed.
fog.visibility_m number m 800 The visibility for the mode fixed.
seed integer 42 The seed of the weather noise.
{
  "clock": {"date": "2026-07-15",
            "start_hour_local": 10.0,
            "utc_offset_h": -4.0,
            "seconds_per_game_minute": 60.0},
  "site": {"latitude_deg": 40.47,
           "longitude_deg": -86.9925},
  "temperature": {"low_c": 16.0, "high_c": 28.0,
                  "day_to_day_sigma_c": 1.2},
  "wind": {"speed_mps": 3.5, "from_deg": 225.0,
           "turbulence_intensity": 0.2,
           "roughness_m": 0.03},
  "clouds": "fair",
  "rain": {"enabled": false, "start_hour": 15.0,
           "end_hour": 16.0, "total_mm": 10.0,
           "prior_mm": 0.0, "prior_hours": 12.0},
  "fog": {"mode": "auto", "visibility_m": 800.0},
  "seed": 42
}

farm.json#

The crops, the harvest cutter and the soil water. The game stops when the file has a value outside its range. A session copies the file to farm-config.json in the session folder.

Readers: the farm (AcresFarmRuntime.cpp), the menu, the optimizer and ACRES Core.

Name Type Unit Default Description
version, calibration text The version and the calibration state of the values.
weather object rain_mm_h (0), minimum_c (16), maximum_c (28), evaporation_mm_day (2) and time_scale (1). The environment replaces these values in a session.
crops object 3 entries corn, soybean and potato: base_c, cap_c, maturity_gdd_c and yield_kg_m2. Crops and Ground Classes gives the model.
harvester object The harvest cutter: width_m (3), the offsets, pto_kw (35) and bunker_capacity_kg (600). The block potato_digger gives the digger.
hydrology object The water grid: the start water content, ksat_scale, the tile drainage, the covers and the percolation. Soil Water gives each key.
sources, source_notes list, text The publications of the models.
{
  "weather": {"rain_mm_h": 0, "minimum_c": 16,
              "maximum_c": 28, "evaporation_mm_day": 2,
              "time_scale": 1},
  "crops": {
    "corn": {"base_c": 10, "cap_c": 30,
             "maturity_gdd_c": 1400, "yield_kg_m2": 1.1}
  },
  "harvester": {"width_m": 3, "offset_x_m": -3.2,
                "offset_y_m": 2.5, "pto_kw": 35,
                "bunker_capacity_kg": 600},
  "hydrology": {
    "initial_fraction_between_wilting_and_field_capacity": 0.5,
    "ksat_scale": 1.0,
    "tile_drainage_mm_day": 9.525
  }
}

soil_library.json#

The soil library as data: 7 soil classes with their strength at four saturation levels. The game does not read this file. The table in AcresSoilModel.cpp is the source, and the file is a copy for other programs. Tools/Terramechanics/physics_tests --export-soils writes the file. A test compares the file with the table.

Name Type Unit Default Description
schema text acres-soil-library-1 The format of the file.
generated_by, units text The generator and the units.
classes list 7 entries sand, loamy_sand, sandy_loam, loam, silt_loam, silty_clay_loam and clay. Tyre and Soil gives each key.
hard_surfaces object The ratio of wet friction to dry friction for asphalt, concrete and gravel.
Tools/Terramechanics/build.sh
Tools/Terramechanics/physics_tests \
  --export-soils Acres/Content/Simulation/soil_library.json

One state of the silt loam class

{"saturation": 0.5, "theta": 0.2486,
 "cohesion_pa": 14061, "friction_deg": 33.0,
 "bekker_kc": 22773, "bekker_kphi": 4554582,
 "janosi_m": 0.01, "cone_index_pa": 1729607,
 "metal_friction_deg": 19.5, "metal_adhesion_pa": 2597,
 "rubber_friction": 0.9}

Implement and Rig Files#

implements/<id>.json#

One file for each implement of the Maxxum. The game reads the file of the selected implement at the start. The game makes one dotted key from each nested key, for example hitch.lower_link_m. -ImplementSet= uses these keys. The game stops when the implement model rejects a key or a value.

Readers: the vehicle pawn (AcresVehicle.cpp, SetupImplement) and the tools of Tools/ImplementModel.

Name Type Unit Default Description
id text The implement identifier. It agrees with the file name.
units, frame, source, model text Notes. The game ignores text values.
mass_kg number kg The mass of the empty implement.
com_x_m, com_y_m, com_z_m number m The centre of mass in the implement frame.
inertia_x_kg_m2, inertia_y_kg_m2, inertia_z_kg_m2 number kg m² The principal moments of inertia.
design_depth_m number m The design working depth. 0 for an implement that does not work the soil.
working_width_m number m The working width.
design_speed_mps number m/s The design speed.
hitch, control object The three-point geometry, the lift rams and the hitch control. Only mounted implements have them.
tines, discs, roller, drill, sprayer, baler, loader, backhoe, tractor object The machine blocks. Each implement has the blocks of its type.

The files are cultivator, chisel_plow, disc_harrow, seed_drill, mounted_sprayer, loader_bale_fork, backhoe_attachment and square_baler. Implement Catalog gives the values of each implement.

implements/soils.json contains three reference soils for the tests of the implement model: dry_loam, wet_silty_clay_loam and sand. The game does not read it.

{
  "id": "chisel_plow",
  "mass_kg": 1100,
  "com_x_m": -0.6258, "com_y_m": 0, "com_z_m": 0.6151,
  "inertia_x_kg_m2": 820.4,
  "inertia_y_kg_m2": 322.8,
  "inertia_z_kg_m2": 836.3,
  "design_depth_m": 0.2,
  "working_width_m": 2.7,
  "design_speed_mps": 2.222,
  "hitch": {"lower_link_m": ..., "lift_max_deg": ...},
  "control": {"draft_gain_deg": ...},
  "tines": {"count": ..., "width_m": ...}
}
Packaged/Linux/Acres.sh -VehicleDemo -Implement=chisel_plow \
  "-ImplementSet=control.draft_gain_deg=8"
ACRES_IMPLEMENT_READY id=chisel_plow keys=67 mass_kg=1100.0

rigs/<asset>.json#

One rig map for each equipment rig: the Maxxum, the Polaris and the eight implements. A rig map gives the bones, the controls and the test poses of the skeletal mesh. Tools/ACRE/Vehicles/export_rig_map.py writes the files from the Blender sources. Do not edit them by hand.

Reader: the rig code of the game (AcresRig.cpp).

Name Type Unit Default Description
format, version text, integer acres-rig-map, 1 The format of the file.
asset, title text The name of the asset and its title.
generator, source_blend, source_sha256, source_fbx, rig_object text The origin of the file.
mesh text The Unreal path of the skeletal mesh.
frame text The frame convention: metres, x forward, y left, z up.
mount text The type of the attachment, for example category_II_three_point.
mass_kg number kg The mass of the asset in the Blender source.
attachment_bone text The bone that carries an implement.
controls list The controls with name, unit, min, max and default.
bones list The bones with their parent, their rest pose and their drivers.
sockets_m object m The named points, for example the hitch pins.
hydraulics, linkages list The cylinders and the linkages that the rig solves.
visual_bounds_m list m The bounding box of the mesh.
test_poses list 7 entries The poses for -RigSelfTest.
hitch object The category and the dimensions of the hitch. Only maxxum_150.json has it.
variants, default_variant object, text The paints of the Polaris. Only polaris.json has them.
{
  "format": "acres-rig-map",
  "version": 1,
  "asset": "chisel_plow",
  "title": "Spring trip chisel plow",
  "generator": "Tools/ACRE/Vehicles/export_rig_map.py",
  "mesh": "/Game/FarmEquipment/chisel_plow/SK_chisel_plow.SK_chisel_plow",
  "mount": "category_II_three_point",
  "mass_kg": 1100,
  "controls": [
    {"name": "trip_00_deg", "unit": "deg",
     "min": 0.0, "max": 18.0, "default": 0.0}
  ]
}
Packaged/Linux/Acres.sh -VehicleDemo -RenderOffscreen -RigSelfTest
ACRES_RIG_SELFTEST chisel_plow PASS poses=7 bones=10
  max_position_error_mm=0.00011 max_angle_error_deg=0.000004
ACRES_RIG_SELFTEST_DONE passed=10 of 10

Other Files#

Traffic, Masks and Map Files#

File Reader Contents
npc_cars.json AcresNpc.cpp The list cars: the meshes, the dimensions, the wheel positions and the paint materials of 9 car models. Tools/ACRE/Tools/import_npc_cars.py writes it.
grass_mask.json AcresVehicle.cpp The grid of road_mask.bin: x0, y0, step, width and height. Only a map that is not the ACRE tile uses it.
road_mask.bin AcresVehicle.cpp One byte for each cell of the grid. A value that is not 0 is a road.
polaris_lidar_self.f32 AcresSensors.cpp The self-return table of the Polaris LiDAR.
ACRE/* Many The map of the tile: the heights, the surfaces, the fields, the soils, the crops and the places. Map Products describes these files.

One car, without the wheel positions

{"name": "cortina",
 "body": "/Game/ACRE/NPC/Cars/cortina/SM_cortina_Body.SM_cortina_Body",
 "wheel": "/Game/ACRE/NPC/Cars/cortina/SM_cortina_Wheel.SM_cortina_Wheel",
 "length_m": 4.27, "width_m": 1.652, "height_m": 1.212,
 "wheel_radius_m": 0.275, "wheel_width_m": 0.18,
 "paint_material_indices": [12, 13]}

Presets in Saved/Configs#

The menu can save its values with a name. The file is Saved/Configs/<name>.json. A preset with terrain edits also has the file <name>.terrain.f32.

Name Type Unit Default Description
schema text acres-session-config-1 The format of the file.
values object One entry for each menu setting. The key is the identifier of Menu Settings. The value is in the display unit of the menu.
fields object The field setup. The format is that of field-setup.json.

When the menu loads a preset, it limits each number to the range of its setting. The menu ignores an unknown identifier and an unknown choice value. In the example, the wind speed is 12.6 km/h, the display unit. The file environment.json has 3.5 m/s.

{
  "schema": "acres-session-config-1",
  "values": {
    "env:temperature.low_c": 16,
    "env:wind.speed_mps": 12.6,
    "trac:vehicle.mass_kg": 5820,
    "sen:camera.enabled": 1,
    "flag:vehicle": "maxxum",
    "env:clouds": "fair"
  },
  "fields": {"fields": [], "terrain_edits": false}
}

Copies in the Session Folder#

The menu writes these files before the session starts. Session Log describes the other files of the folder.

File Contents
environment.json, sensors.json, tractor.json The shipped file with each value of the menu in the unit of the file.
session-config.json The same format as a preset. The replay page of the menu can load the settings of a session from it.
field-setup.json The list fields with one entry for each changed field, and the flag terrain_edits.
terrain-edits.f32 1001 × 1001 float32 height offsets on the nodes of the survey grid, in metres.
Key of a Field Entry Type Unit Default Description
field integer The field number, 1 to 59.
crop text The crop of the field, for example corn, soybean, potato or empty.
soil text The soil preset, or custom.
ks_mm_h, ks_sealed_mm_h number mm/h The saturated conductivity of the profile and of the sealed surface.
suction_m number m The suction at the wetting front.
saturated, field_capacity, wilting number m³/m³ The water contents of the soil.
wetness number The start wetness of the field.

When you change the top speed in the menu, the menu scales all gear ratios of the copy of tractor.json.

Saved/Sessions/20261002-101500-simulation/
  environment.json
  sensors.json
  tractor.json
  session-config.json
  field-setup.json
  terrain-edits.f32      (only with terrain edits)

Validation in the Menu#

The menu examines the values in each frame and shows the messages. An error prevents the start of the session. A warning does not prevent the start. The source is FAcresSession::Validate in AcresSession.cpp.

Area Error Warning
All numbers A value is outside the range of its setting.
Weather The high temperature is less than 1 °C above the low temperature. The range of the day is more than 28 °C.
Rain The rain ends before it starts. The mean rate is more than 150 mm/h. The mean rate is more than 50 mm/h. The rain ends before the session starts.
Clock The day does not exist in the month. One game hour is less than 30 s of real time.
Engine The maximum power is below the rated power. The rated power is more than the torque can give. The maximum speed is less than 600 rev/min above idle. The torque is high for the power rating. The power for each tonne is below 8 kW or above 45 kW.
Stability The static stability factor is below 0.6. The centre of gravity is not between the axles. The static stability factor is below 0.75. The front tyres are larger than the rear tyres. The top speed is above 50 km/h.
Implement The depth is more than the implement can reach. The front axle has less than 12 % of the weight. The bale is heavier than the loader rating. The spray rate is more than the pump flow. The harvest cutter and an implement are on at the same time. The front axle has less than 20 % or more than 60 % of the weight. The gross mass is above 9525 kg. The draft or the draft set-point is more than the grip of the tyres. The depth is 1.5 times the design depth.
Machines The nozzle pressure is outside 1 bar to 5 bar at 8 km/h. The seed rate is above 300 kg/ha. The windrow is more than the pickup of the baler can take.
Sensors The lowest beam is not below the highest beam. The LiDAR gives more than 1.4 million points in one second. The LiDAR gives more than 300000 points in one second. The camera load is above the budget. All sensors are off.
Replay The replay has no file. The file is not readable. The mode path has no path columns. The file has no path columns.
Fields A custom soil has water contents in the incorrect sequence.
Optimizer The minimum slip is not below the maximum slip. The work ends before it starts.

A session from the command line does not use these checks. The models have their own range checks. The game stops with a message when a file or an option has a value outside the range of a model.