Skip to content

Coordinates, cells and the map

ForzaTechWorld and streamingApplies toFH6

The world is Y-up and left-handed, one unit = one metre. A mesh header’s quantisation, for example scale = (256, 32, 256), translate = (−1792, 96.021, −9984), reproduces its observed world box exactly. Observed Direct3D conventions apply: row vectors, p' = p · M, v pointing down the image. Observed

The Brio track spans x −12,548..9,487 and z −11,281..10,754 on the pause map (22,035 m square, see below); the Tokyo city lies in its southern half (the Shibuya area is around x −2,050..−850, z −5,390..−4,190 and the Tokyo core around x −816..−560, z −5,156..−4,900). Observed

Grid Size Rule Confidence
Terrain cells 512 m a cell covers [512 i, 512 (i+1)) in X and Z; a tile named ..._x<label>_z<label>_... uses label = cell index × 1023 (autoterrain_x-1023_z-10230 is cell (−1, −10)) Observed
proc placement cells 50, 75, 100, 125, 150, 200, 250, 300, 500, 10,000 m origin (cx × cs, 0, cz × cs) Observed
Far-field ground texel 0.25 m mainmap 2,048 texels per 512 m cell Observed

A placement file’s cell does not bound its instances: 337,778 of the 29,164,671 .pgeo instance records lie outside the cell the file is kept under, while none lies outside the file’s header box (widened by one fixed-point step and an f32 rounding). Proven The 297 files whose header box meets the box x −1550..−1100, z −5000..−4566.67 hold 68,556 instances and 30 crowd splines in it, and the same are found by reading every file. Observed

An object may reach into an area while its origin is outside it. Its reach is bounded by the model’s oriented box from the hand-placed instance bounds, not by the template library’s box. The largest reach of any placement of each category over all four seasons is: Observed

Category Max reach (m) By
props 92.9 prp_fst_balloon_hotair_c
rocks 68.3 roc_alp_module_embedded_a_small_coll
buildings 60.4 gpy_el_mod_ramp_02_c
infrastructure 51.8 inf_fst_tunnel_led_b
bridges 50.7 inf_cst_brdge_03_side_end_a
trees 47.7 tre_gbl_cherry_spg_a (spring)
barriers 27.8 bar_pln_retain_dmnd_01_a
bushes 21.2 bsh_gbl_elm_d
signs 12.4 sgn_cty_pfb_dir_gantry_01_a
grasstemplate 3.7 gcr_lmt_grass_tufty_b
smashables < 0.1 flattenable-bush proxies

The template library’s AABB is not usable for this: it dropped 5 placements in the Tokyo core and inflated the infrastructure reach to 846 m (Template libraries). Observed The ocean_vista mesh spans x −63,677..99,817, z −100,965..94,764 around the whole map, and its saturated bounds record would put it in every area: its 71 overlapping terrain clusters are all at the map’s edge. Observed

media\Tracks\Brio\trackroutes\*.nt are plain XML <TrackLocators> with a <SceneTransform> per locator whose translation is value._41/_42/_43 in world metres. map_region_city.nt gives the Tokyo anchors, for example Arena_000 at (1046.7, 0.23, −6902.6). The numbers agree with placements and terrain. Observed Region outlines (City, Canyon, …) are map_region_*.nt, whose translations (value._41, value._43) are the polygon vertices. Observed

The in-game map is a ready-made tile pyramid unrelated to the terrain data: media\UI\Textures\Data_Bound\Map_<Track>_<Season>.zip (for example Map_Brio_Spring.zip). Entries are <level>-<row>-<col>.swatchbin; level 0 is one tile for the whole map, level L is 2^L × 2^L tiles, row 0 is north; Brio ships levels 0 to 3 (85 tiles) of 1,024 px each. Observed

The world extent is set by the game’s own map profile, UI.zip → MapProfiles\MapIncludes\MapIncludeSharedResources.xml: background_size is 22035 m (square) and background_offset is (−12548, 0, −11281), the minimum X/Z corner. So pixel (u, v) of a stitched level maps to x = −12548 + u / W × 22035, z = 10754 − v / H × 22035. Observed

The mainmap_* and submap_* swatches in the GeoChunks are not the pause map: they are the terrain shader’s far-field colour inputs (Far-field colour). Observed