configs/map-labels.jsonc controls the labels drawn over the map: the postal numbers players read
out to say where they are, and the zone names that replace them once the camera is pulled back far
enough that a number would be a pixel tall.
Only one of the two is ever on screen. Which one is decided by how high the camera is above the
ground, and nothing else.
Every label knows the height of the ground under it, measured against the game’s own heightmap when
the set was baked. A name over Vinewood Hills or Mount Chiliad sits on the hillside rather than at
sea level, which is what keeps it in the right place as you tilt the camera.
Settings
Both tiers
Postal numbers
The three sets are different conventions.
new is the newer five-digit set, ocrp is the older
four-digit convention, and oulsen matches the satellite map of the same name. Changing the set
changes what players read out, so pick one before you open, and tell them which it is. These three
are the only choices: the numbers are compiled into the map itself rather than read from a file, so
there is no way to point it at a set of your own.
A number is painted on the map rather than laid over it: postals.size is measured on the ground,
so a number covers the same ground at every zoom and grows and shrinks with the imagery under it,
until it reaches one of the two limits. postals.minPixels keeps the numbers readable with a
district on screen; postals.maxPixels stops them filling the screen when the camera is low.
Numbers are kept a few number-heights apart, so pulling the camera back shows fewer of them rather
than a solid block. Each number that stays keeps its place as the camera pans, and zooming in only
adds numbers between the ones already shown. Raising postals.minPixels also thins them out.
Zone names
Only the major zones are drawn: the two dozen regions and districts a player navigates by, not every
named block in the city.
Zone names follow the player’s language. A player running the game in Italian reads Grande
boscaglia where an English one reads Great Chaparral. A name too long for one line is broken where
the two halves come out closest in length, after it has been translated, so the break works in every
language. A name with no space in it is left on one line.
A zone name holds one size on screen at every zoom, because it has to be readable when the map is
pulled all the way back. Where two names would sit on top of each other the more prominent one is
kept and the other is dropped, which is why the labels around Vinewood and Downtown thin out as you
zoom out.
The camera has to come back a little below
zones.showAbove before the numbers return, so a camera
resting on the line does not swap the labels over and over.
Example
The five-digit convention, with numbers held at one size on screen and zone names taking over a little later than they do by default:Applying changes
enabled and postals.dataset are the two a resource can also change while the server runs, with
SetPostalsEnabled and SetPostalDataset. The rest take a restart.
Limits
postals.font and zones.font are game font names, not files. A name the game does not have draws
with the default font rather than failing, so check the result in game after changing one.
Related
- Configuration
- How players use the menu
- Exports: turning labels on and choosing the set at runtime