SnowRunner

SnowRunner

Discover a wealth of new maps, vehicles, modes, and more, all created by the community! Discover something new every day and expand your SnowRunner experience.

Find the game on Epic Games, Xbox, Playstation, Facebook, Twitter, Instagram, Reddit, Forums, Discord.

SnowRunner™ Editor Guide. Part #3

Part #3 of this guide continues the description of the map creation process (Chapter 5, from 5.12 to 5.15). It covers such aspects as: Sounds, Sound Domains, Zones, and Objectives.

2 comments

Posted by on (updated ago)


UPD: ===============================================================

Unfortunately, we have issues with updating the web version of this guide due to the large size of our guides (we have reached max limit for pictures for an account, etc). Sorry for that.

However, you can find up-to-date versions of guides in PDF format here: Drive.google.com

Or, you can open the folder with the documentation package directly from SnowRunner™ Editor, by selecting Help > Guides in its main menu.

===================================================================

Quick links to parts of this guide:

  • Part #1 - Introduction to SnowRunner™ Editor: First Launch, UI, File Paths (Chapters 1 to 4)
  • Part #2 - Creation of a Map, beginning (Chapter 5, from 5.1 to 5.11) that covers:
    • Terrain
    • “Geometry” Brushes
    • PBR Materials
    • Snow and Ice
    • Models
    • Plants
    • Distributions
    • Overlays
    • Rivers and Water Objects
    • References
    • Trucks
  • Part #3 - Creation of a Map, continuation (Chapter 5, from 5.12 to 5.15) that covers:
    • Sounds
    • Sound Domains
    • Zones
    • Objectives
  • Part #4 - Post-production operations: Packing a Map, Testing a Map, Publishing a Map, Playing on a Map (Chapters 6 to 10)
  • Part #5 - Viewing Trucks (Chapter 11)

If you want an offline copy, you can download the full guide in the PDF format here.


5. Creation of a Map

... (for sections 5.1-5.11 of this chapter, please refer to the Part #2).

5.12. Adding Sounds

To add a point source of the 3D sound to the scene:

  1. Right-click the terrain (or the Sounds section in the Scene View) and select Add Sound.
  2. A locator indicating the sound actor will appear in the scene. Move the appeared actor to the necessary area of the scene:
    96 adding sound 1
  3. To set the properties of the created sound actor, select it in the Scene View panel, within the Scene > Terrain > Sounds section of it. Properties of the actor are displayed at the lower part of the Scene View panel:
    97 sound properties
    You can specify the following properties:
    • Name - The internal name of the sound actor in the Editor.
    • Sound file - the sound that this actor will play. Since our actor is a 3D sound source, the sound file for it must be MONO. In this field, you need to specify the path to the sound, including its name without file extension. In the case of the custom sound file, the path must be specified relative to the Media\sounds directory, with “/” as path delimiters (see "5.12.2"). For in-game sounds, see NOTE below.

      NOTE: Along with custom sound files, you can use the sound files used by the game. All these sounds are stored in the shared_sound.pak archive, in the [sound] directory.
      In the Sound file field, you need to specify the path relative to the [sound] folder. When specifying a path, you can use either slashes (“\”) or backslashes (“/”), and you should not specify the file extension of the sound file.
      For example, if you want to play the sound located in the shared_sound.pak at the following path: [sound]\actors\actor_electric_01_loop.pcm, then you need to specify the following value in the Sound file field: actors/actor_electric_01_loop

    • Volume - the playback volume. The default value is 1 (the maximum, initial volume of the sound file). If you specify values in the [0,1] interval, the volume of the sound file will be multiplied by this parameter (and the sound will be decreased correspondingly).
    • Distance section - the section that sets the sound distances (in meters):
      • (Distance) Min - the sound volume will be played at its maximum within a sphere with a center in the source of the sound and a radius equal to the value of this parameter. For example, in the screenshot of the properties above, there will be maximum volume within a radius of 10 meters from the actor.
      • (Distance) Max - the hearing distance. The sound volume will change from its maximum value to zero between Distance Min and Distance Max.
    • Loop delay (Min, Max) section - delay in seconds for the recurred playback of the sound. If both Min and Max values are zero, then the sound will play continuously, without a pause. If these values are not equal to zero, then, after the playback of the sound is finished, there will be a pause. The length of this pause will be in the range of [Min, Max] seconds (a random value will be taken from this range). After the pause, the sound will be played again.
    • Conditions - if this parameter is not specified (the field is empty), the sound will play at any time, during day or night. However, you can limit the interval during which it can be played:
      • If you want to play your sound only during the day, then you should set this parameter to DAY_FOREST, DAY_WIND
        Please note that these two comma-separated IDs are the single value of this parameter, not the two values (see the screenshot above). They cannot be used separately.
      • If you want to play your sound only during the night, then you should set this parameter to NIGHT_FOREST, NIGHT_WIND
        Again these two comma-separated IDs are the single value of this parameter and cannot be used separately.

5.12.1. Adding Series of Sounds

When configuring a sound actor (or a sound domain, see "5.13" below), you can specify not a single specific sound file to be played, but a random alternation of the sounds from a specific set. For example, a barking of a dog can be played as a series of barking sounds, where each successive sound will be different from the previous one.

You can see that many series of the files in the [sound] directory of the shared_sound.pak archive have been designed that way.
For example, the set of sounds for a night owl, which you can find in the [sound]\amb\amb_us_autumn\amb_us_autumn_night_forest_owl\ directory, consists of 5 sounds. Each of these sound files has the suffix “__<N>” (the double underscore with a number) in the file name:

  • amb_us_autumn_night_owl_rnd__1.pcm
  • amb_us_autumn_night_owl_rnd__2.pcm
  • amb_us_autumn_night_owl_rnd__3.pcm
  • amb_us_autumn_night_owl_rnd__4.pcm
  • amb_us_autumn_night_owl_rnd__5.pcm

To configure the sound actor to play a series of these sounds, rather than a particular sound, you need to specify the name of one of these files without its “__<N>” suffix in the Sound file field of this actor (see "5.12. Adding Sounds" above). In this case, the whole series of these sounds will be played.

For example, to play in your sound actor all the files above, you can specify the following value of the Sound file parameter in the actor's properties:
amb/amb_us_autumn/amb_us_autumn_night_forest_owl/amb_us_autumn_night_owl_rnd

5.12.2. Adding Custom Sound Files

When configuring a sound actor (or a sound domain, see "5.13" below), you can use custom sound files in *.wav format.

To use a custom sound file, do the following:

  1. In the Media folder, create the sounds directory. This will be the root folder for all your custom sound files.
    For example, the full path to this folder may be similar to the following:
    C:\Users\<username>\Documents\My Games\SnowRunner\Media\sounds\

  2. Optional: You can create subfolders there to group some of your sound files. Names of these folders must not contain spaces, they can contain Latin characters, digits, and underscores.
    For example, you can create Media\sounds\my_directory folder there.

  3. Put your custom sound files in these folders, in the .wav format.
    For example, you can add Media\sounds\my_sound.wav or Media\sounds\my_directory\my_sound.wav

  4. In the Sound file parameter of the properties of a sound actor or a sound domain, specify the path to the sound file, including its name without file extension. The path must be specified relative to the Media\sounds directory, with “/” as path delimiters and without the file extension.
    For example: my_sound OR my_directory/my_sound
    custom sound

  5. When you pack your map, custom sound files used on it will be added to the .pak file.

NOTE: Along with standalone custom sounds, you can also add and use custom series of sounds, similarly to in-game series of sounds – see "5.12.1" above.

5.13. Adding Sound Domains

You can add 3 types of Sound Domains to the map:

  • Regular SoundDomain - sets the area where a certain 2D stereo sound will play. For example, using this object we can configure the playback of the water lapping in the swamp.
  • OneShotSoundDomain - these domains are designed to play single 3D sounds inside a certain ring around a player when he/she enters the domain. Sounds will be generated at a random position within this ring. For example, you can configure a sound of the rockfall using this type of domain. When the player drives near a large rock and enters the domain located near it, the player will hear that the sounds of crumbling stones will be played around him/her at a random position with a certain frequency.
  • NoMusicSoundDomain - these domains are designed to turn off the in-game music in certain areas. When the player enters the domain of this type, the volume of the music is gradually decreased to zero.

All these types of domains are added to the map in a standard way - by right-clicking the SoundDomains section in the Scene View panel and selecting Add <type of the added domain> in the context menu.

98 adding sound domains

After that, the domain will be created, and the area of this domain will appear on the map. By default, this area is a square with four vertices.

99 adding sound domains 2

You can edit the domain area in the standard way: move the vertices, add vertices to this area, or delete unnecessary vertices.
To add a new vertex, right-click this domain in the Scene View panel and select Add vertex from the context menu. Or, if you want to add a vertex at the particular position, you can select a particular vertex of a domain, right-click it, and select Add vertex in the context menu. In this case, the new vertex will be added in the middle between the selected vertex and the next one in a clockwise direction.

NOTE: If you want the domain to work correctly, its area must be convex. If you need to create a domain of a more complex shape, you need to compose it from several convex domains with the same settings.

After the setup of the domain area, if the domain is selected, you can configure its properties at the lower part of the Scene View panel.

9100 sound domain properties

These properties vary for different types of domains. They are described in the subsections below.

NOTE: The Sound file field (see "5.12" above), which sets a sound or a series of sounds to be played (for SoundDomain and OneShotSoundDomain domains), works the same way as for regular sounds. In this field, you need to specify the path to the sound, including its name without file extension. In the case of the custom sound file, the path must be specified relative to the Media\sounds directory, with “/” as path delimiters (see "5.12.2"). Along with custom sound files, you can use the sound files used by the game. All these sounds are stored in the shared_sound.pak archive, in the [sound] directory.
In this case, the Sound file field, you need to specify the path relative to the [sound] folder. When specifying a path, you can use either slashes (“\”) or backslashes (“/”), and you should not specify the file extension of the sound file.
For example, if you want a domain to play a series of sounds located in shared_sound.pak at the following path: [sound]\amb\domains\amb_dom_autumn_day_bog_frogs_rnd_set\,
then you need to specify the following value in the Sound file field: amb/domains/amb_dom_autumn_day_bog_frogs_rnd_set/amb_dom_autumn_day_bog_frogs_rnd
For more details on playing sounds and sound series, see "5.12. Adding Sounds" and "5.12.1. Adding Series of Sounds" above.

5.13.1. SoundDomain Properties

For a general description of a SoundDomain, see "5.13. Adding Sound Domains".

Properties of a SoundDomain are the following:

  • Name - the internal name of the sound domain in the Editor.
  • Sound file - the looped stereo sound that this domain will play. In this field, you need to specify the path to the sound, including its name without file extension. In the case of the custom sound file, the path must be specified relative to the Media\sounds directory, with “/” as path delimiters (see "5.12.2"). For in-game sounds, see NOTE below.

    NOTE: Along with custom sound files, you can use sound files used by the game. All these sounds are stored in the shared_sound.pak archive, in the [sound] directory.
    In this case, in the Sound file field, you need to specify the path relative to the [sound] folder. When specifying a path, you can use either slashes (“\”) or backslashes (“/”), and you should not specify the file extension of the sound file.
    For example, if you want a domain to play a series of sounds located in shared_sound.pak at the following path: [sound]\amb\domains\amb_dom_autumn_day_bog_frogs_rnd_set\,
    then you need to specify the following value in the Sound file field: amb/domains/amb_dom_autumn_day_bog_frogs_rnd_set/amb_dom_autumn_day_bog_frogs_rnd
    For more details on playing sounds and sound series, see "5.12. Adding Sounds" and "5.12.1. Adding Series of Sounds" above.

  • Overlay - the weight of the sound of this domain (from 0 to 1). The sound of the domain will be mixed with the main ambient sound of the scene with this weight.
  • Volume - the playback volume. The default value is 1 (the maximum, initial volume of the sound file). If you specify values in the [0,1] interval, the volume of the sound file will be multiplied by this parameter (and the sound will be decreased correspondingly).
  • Fading distance - the distance (in meters) from the domain border where the sound will fade smoothly from its maximum volume (at the domain border) to zero (at the fading distance). On the map, this area of the fading sound is displayed as the semi-transparent external area around the domain:
    9101 sounddomain fading distance
  • Conditions - if this parameter is not specified (the field is empty), the sound will play at any time, during day or night. However, you can limit the interval during which it can be played:
    • If you want to play your sound only during the day, then you should set this parameter to DAY_FOREST, DAY_WIND
      Please note that these two comma-separated IDs are the single value of this parameter, not the two values (see the screenshot of domain properties in "5.13"). They cannot be used separately.
    • ○ If you want to play your sound only during the night, then you should set this parameter to NIGHT_FOREST, NIGHT_WIND
      Again, these two comma-separated IDs are the single value of this parameter and cannot be used separately.

5.13.2. OneShotSoundDomain Properties

For a general description of a OneShotSoundDomain, see "5.13. Adding Sound Domains".

Properties of a OneShotSoundDomain are the following:

  • Name - the internal name of the sound domain in the Editor.
  • Sound File - the sound or the series of sounds this domain will play. Typically, for a OneShotSoundDomain, the suffix __<N> in the file name is also omitted (to play a series of sounds, see "5.12.1"). In this field, you need to specify the path to the sound, including its name without file extension. In the case of the custom sound file, the path must be specified relative to the Media\sounds directory, with “/” as path delimiters (see "5.12.2"). For in-game sounds, see NOTE below.

    NOTE: Along with custom sound files, you can use sound files used by the game. All these sounds are stored in the shared_sound.pak archive, in the [sound] directory.
    In this case, in the Sound file field, you need to specify the path relative to the [sound] folder. When specifying a path, you can use either slashes (“\”) or backslashes (“/”), and you should not specify the file extension of the sound file.
    For example, if you want a domain to play a series of sounds located in shared_sound.pak at the following path: [sound]\amb\domains\amb_dom_rolling_stones_rnd_set\,
    then you need to specify the following value in the Sound file field: amb/domains/amb_dom_rolling_stones_rnd_set/amb_dom_rolling_stones_rnd
    For more details on playing sounds and sound series, see "5.12. Adding Sounds" and "5.12.1. Adding Series of Sounds" above.

  • Volume (Min, Max) - the volume range of the played sounds. Each new sound will be played with a new random value of the volume from this range.
  • Radius (Min, Max) - these fields set a ring around the player, with the inner radius of the ring equal to the Min value and its outer radius equal to the Max value. Both Min and Max values are specified in meters. The sound will be played at the random point inside this ring.
  • Interval (Min, Max) - these fields set the minimum and maximum time intervals between sounds (in seconds). Each successive sound will be played after the previous one with a delay, and the value of this delay will be each time taken randomly from the [Min, Max] range.
  • Weather Intensity threshold - this field is currently not used. You should keep the default value of it, which is -1.
  • Conditions - if this parameter is not specified (the field is empty), the sound will play at any time, during day or night. However, you can limit the interval during which it can be played:
    • If you want to play your sound only during the day, then you should set this parameter to DAY_FOREST, DAY_WIND
      Please note that these two comma-separated IDs are the single value of this parameter, not the two values (see the screenshot of domain properties in "5.13"). They cannot be used separately.
    • If you want to play your sound only during the night, then you should set this parameter to NIGHT_FOREST, NIGHT_WIND
      Again, these two comma-separated IDs are the single value of this parameter and cannot be used separately.

5.13.3. NoMusicSoundDomain Properties

For a general description of a NoMusicSoundDomain, see "5.13. Adding Sound Domains".

Properties of a NoMusicSoundDomain are the following:

  • Name - the internal name of the sound domain in the Editor.
  • Distance threshold - the distance (in meters) from the domain border, at which the music volume decreases/increases.
  • Fade in time - the time (in seconds) for the fade-in transition. This transition will increase the volume of music (from zero to the volume set in the game) when the player is leaving the domain.
  • Fade out time - the time (in seconds) for the fade-out transition. This transition will decrease the music volume (from the volume set in the game to zero) when the player is entering the domain.

5.14. Adding Music and Ambient Sounds

Along with custom sounds, you can also add custom music and custom ambient sounds to your maps.

5.14.1. Adding Music

To add a custom music to your map:

  1. Prepare your music files.
    1. Format:
      44 kHz, Stereo, 16 bit, stored as .wav files.
      The recommended volume level for the music is -7db.

    2. Amount of files and their naming:
      Typically, we prepare a separate music track for each time of the day and a separate track for the Garage. We name these tracks using the name of the level as a suffix (see below). This seems to be a good convention.
      Name of the file Description For example
      <levelname>_day Track for the day. aspen_day.wav
      <levelname>_evening Track for the evening. aspen_evening.wav
      <levelname>_morning Track for the morning. aspen_morning.wav
      <levelname>_night Track for the night. aspen_night.wav
      garage_<levelname> Track for the Garage garage_aspen.wav
      However, if you want, you can use only one or two tracks and name them as you like.

    3. Length of the track:
      The length of each music track is up to you. Please note that each music track will be played on repeat.

  2. Put your music files into the Media\sounds\music\<name_of_level> folder:
    1. Create the Media\sounds\music folder (if you have not created it before).
      For more details on the location of the Media folder, see "4. File Paths and Naming".

    2. Create the subfolder of the level in this folder (e.g. aspen for level_aspen.xml) and put the music files there.
      3 music
  3. Create or modify the Media\classes\sounds\music_presets.xml file:
    1. Create the Media\classes\sounds folder (if you have not created it before).
    2. In this folder, create the music_presets.xml file (if you have not created it before).

      NOTE: If you have already created this file for another level, you need just to append it with new values corresponding to your new level (see below).

    3. In this file, for each level where you want to use music, specify links to your level and its music files, using <LevelMusic>, <Sound>, and <GarageMusic> tags and their attributes.
      For example:
      <MusicPresets>
      	<LevelMusic LevelName="level_aspen">
      		<Sound 
      			Name="music/aspen/aspen_night"
      			StartTime="24"
      			EndTime="6"
      			FadeInTime="30"
      			FadeOutTime="10"
      		/>
      		<Sound
      			Name="music/aspen/aspen_morning"
      			StartTime="6"
      			EndTime="13"
      			FadeInTime="30"
      			FadeOutTime="10"
      		/>
      		<Sound 
      			Name="music/aspen/aspen_day"
      			StartTime="13"
      			EndTime="20.5"
      			FadeInTime="30"
      			FadeOutTime="10"
      		/>
      		<Sound
      			Name="music/aspen/aspen_evening"
      			StartTime="20.5"
      			EndTime="24"
      			FadeInTime="30"
      			FadeOutTime="10"
      		/>
      		<GarageMusic
      			SoundName="music/aspen/garage_aspen"
      			FadeInTime="30"
      			FadeOutTime="10"
      			Volume="1"
      		/>
      	</LevelMusic>
      </MusicPresets>
      Where:
      • LevelName - must correspond to the exact name of your map without file extension (e.g. level_aspen for level_aspen.xml).
      • Name and SoundName - must contain the path to the corresponding music track, relative to the Media\sounds\ folder and without file extension. E.g., music/aspen/aspen_evening for
        Media\sounds\music\aspen\aspen_evening.wav
      • If you are using separate music tracks for different times of the day, as in the example above, you should keep the values of StartTime, EndTime, FadeInTime, and FadeOutTime. They are already set up for correct switching of the tracks according to change of daytime.
        However, if you want to change them:
        • StartTime and EndTime - specify the time of the beginning and end of the track, in in-game hours.
          E.g., the "13" value here will correspond to 1:00 p.m.
        • FadeInTime and FadeOutTime - specify the fade in and fade out duration, in seconds.
      • Volume - coefficient that corresponds to the volume of the music in the Garage.

  4. Open your level in the Editor, and repack it.

Now, if you have specified all values correctly, your level will contain music and you can test it by loading the level in the game. To switch between different times of the day, you can use the Skip Time feature on the navigation map.

NOTE: If necessary, you can remove the playback of the music within the certain area using NoMusicSoundDomain (see "5.13.3. NoMusicSoundDomain Properties").

5.14.2. Adding Ambient Sounds

TBD


5.15. Adding Zones

Using zones you can add to your map such in-game objects as Fuel Stations, Garage, Cargo Loading Zones, and so on. Along with that, zones can be used in various objectives (Contracts, Tasks, and Contests) that you may want to add for your map, see "5.16. Adding Objectives" for details.

NOTE: Zones cannot be used in References. They can be added there, but they will not work correctly on the target map when the Reference with these zones will be added to it.

You should specify the properties of each zone very carefully. The Editor allows you to configure a zone with incorrect parameters and logic (e.g. specify multiple “props” for one zone), which can result in unpredicted behavior.

NOTE: The system validates some aspects of the configuration of zones during packing.
The log of occurring errors can be found in Documents\My Games\SnowRunner\base\logs\ModMapError.txt
e.g. C:\Users\<username>\Documents\My Games\SnowRunner\base\logs\ModMapError.txt

To create a zone:

  1. Open the necessary map in the Editor.
  2. Add the zone locator to the map.
    To do this:
    1. Right-click the terrain (or the Zones section in the Scene View panel), and select Add Zone from the context menu.
    2. Move the locator to the necessary location of the map in a standard way.
  3. Specify the ID of the zone locator.
    To do this:
    1. Select the created zone.
    2. In the zone properties (in the lower part of the Scene View panel), specify the ID of the zone in the Id field.
      All zone IDs can contain only small Latin letters, digits, and "_".
      In our example, it is “test_zone_1”:
      zone locator id
    3. Save the map.
  4. Specify other properties of the zone locator, such as its name for UI (Name), icons, etc. See "5.15.2. Zone Locator properties" for details.
    zone locator properties
  5. On the toolbar of the Editor, click the Zone Settings button (4 zone settings).
    zone settings click
    This will open the window of the specific plugin (ZoneSettingsEditor.exe) that allows you to configure the logic of zones.
  6. In the plugin window, expand the section named as your map.
  7. Then, click the plus button (plus button) next to the TERRAIN LOCATORS LIST.
    terrain locators list
  8. In the appearing dialog, select the zone from the list. The list displays all zone locators added in Editor (e.g. “test_zone_1” in our example, see step 3 above). Then, click OK.
    add zone
    After doing this, the new list entry will appear in the list, named as you specified.
    adding zone 2
    In the appeared list entry, you will specify the properties of your zone.

    WARNING: The ID of the zone locator in the Editor and the name of the corresponding entry in the TERRAIN LOCATORS LIST must be exactly the same and must not contain spaces. This is important since the zone locator in the Editor and its zone settings specified in the plugin are linked by this ID.
    So, if you change the ID of the zone locator in the Editor, you need to change it in the TERRAIN LOCATORS LIST to exactly the same value.

    If necessary, you can modify the value of this ID in TERRAIN LOCATORS LIST by double-clicking it or by selecting it and pressing F2:
    modifying zone id

  9. There are two types of zones in the game:
    1. Zones that are visible to the player as a “zone” and have the particular type (e.g. Fuel Station, Garage Entrance, and so on). These zones should have the props section with a set of properties corresponding to the type of the zone.
    2. Zones that just map a specific area on the map to some ID, which is used somewhere else. Typically, these zones are somehow related to objectives (e.g. the player needs to deliver a specific truck there, etc.). These zones can have the empty props section.
  10. So, if you want to simply map a specific zone on the map to some ID (for example, to create an objective for this zone later on), do not fill the props section and proceed to steps 12-13 below.
  11. Or, if you want to create a zone of the particular type, you need to select this type and specify the logic for it. I.e., you need to add a set of properties to the props section and fill them in.
    To do this:
    1. Click the plus button (2020 07 27 16 09 43) next to props below your zone in the list.
      2020 07 27 16 26 11
      WARNING: One zone must have only one set of properties (which corresponds to its type)! Adding multiple entries to the props list may result in unpredicted behavior.
    2. In the appearing dialog, select the type of the zone:
      2020 07 27 16 27 36
      After selection, click OK.
    3. This will add to the form the set of properties that corresponds to the selected type of zone.
      zone properties
    4. Setup the logic of the zone by filling in the appeared fields.
      Some zone types, like FuelStation or AutoRepairAndRestore, require no properties to be filled in. Some, like CargoLoading, require the setup of their fields. For descriptions of fields corresponding to the particular zone types, please refer to the subsections below.
  12. Optional step: If you have added multiple zone locators to the map (i.e. if you have repeated steps 2-3 multiple times), you need to add the corresponding entries to the TERRAIN LOCATORS LIST. You can do it by repeating steps 7-11 for these zones.
  13. After you have specified properties of all zones that were added to the map, you need to save your changes. To do this, in the plugin window, press CTRL+S or select File > Save in the main menu of the plugin window.
    2020 07 27 16 31 32
    The values of the specified zone properties are saved in the folder of the map within the \Media\levels\ folder. After saving, it will have two files related to zones:
    1. user_name_of_map.txt - which stores the name of your map (to link properties to it).
    2. zone_settings.json - which stores specified zone properties in the JSON format:
      zone settings json
      NOTE: Properties of objectives are stored in the same folder, in the objective_settings.json file.
  14. Now, pack your map. After doing this, you will be able to test your zones in the game.
    2020 07 27 16 35 08

NOTE: Along with zone properties, the ZoneSettingsEditor.exe plugin also allows you to specify objectives for your map (see "5.16" below) and enable the “fog of war” feature (see "5.15.4" below).


5.15.1. Properties of various Zone Types

5.15.1.1. Loading Cargo: ...CargoLoading and ...ManualLoading zones

The ZonePropertyCargoLoading zones allow the player to load a cargo of the particular type within them.

5 cargo loading

The properties of this zone type are the following:

  • platformId - optional field, which allows you to specify the ID of the zone of the ZonePropertyManualLoading type. Within the zone with this ID, the system will spawn the physical cargo, which will allow the player to manually load it using the crane. I.e., to use this feature, you need to create an additional zone, set its ID to the value specified in the platformId field, and add the ZonePropertyManualLoading property to the props list of this additional zone.
  • cargosSettings - this list allows you to specify the types of cargo that the player will be able to obtain in this zone. For each type of cargo, you can specify the Amount of cargo this zone can give to the player. You can add multiple types of cargo here (see the screenshot above). To add a type of cargo:
    1. Click the 2020 07 27 16 09 43 next to the cargosSettings list.
    2. In the appeared list entry, double-click the default value next to the name field and select the necessary type of cargo.
    3. If necessary, double click the Amount and specify the amount of cargo this zone can give. The “-1” value in this field corresponds to the unlimited Amount.

The ZonePropertyManualLoading zone is the zone that adds the “manual loading of the cargo” feature to the existing ZonePropertyCargoLoading zone (see platformId above). The ZonePropertyManualLoading zone itself has no properties.


5.15.1.2. Fuel Station and Repairing: ...FuelStation and ...AutoRepairAndRestore zones

The ZonePropertyFuelStation zones work as Fuel Stations. They have no properties that you need to specify - only the ZonePropertyFuelStation property itself is required.

2020 07 27 17 21 12

If a zone has the ZonePropertyAutoRepairAndRestore property in props, it allows the player to automatically repair the vehicle. As with ZonePropertyFuelStation, no additional properties are required.


5.15.1.3. Garage: ...GarageEntrance and ...GarageExit zones

To add a Garage to the map, you need to add two zones:

  • Garage entrance - the zone with the ZonePropertyGarageEntrance property in the props section.
  • Garage exit - the zone with the ZonePropertyGarageExit property in the props section.

Both of these zones have no additional properties, except the ZonePropertyGarageEntrance or ZonePropertyGarageExit property itself.

2020 07 27 17 23 24

2020 07 27 17 24 09

A map can contain only one ZonePropertyGarageEntrance zone and only one ZonePropertyGarageExit zone.


5.15.1.4. Trailer Store: …TrailerAttach zones

The ZonePropertyTrailerAttach property allows you to create the “Trailer Store” zones.
These zones have no properties that you need to specify - only the ZonePropertyTrailerAttach property itself is required.

2020 07 27 17 26 59


5.15.1.5. Upgrades: ...UpgradesGiver zones

The ZonePropertyUpgradesGiver property allows you to create the zones that give various upgrades to the player. This property has the upgrades list where you need to list IDs of all upgrades that will be given to the player by this zone.

2020 07 27 17 28 19

NOTE: For information on IDs of the various parts of the truck, see "5.11.1. How to identify IDs of truck parts" above.

To add an upgrade to the upgrades list:

  1. Click the 2020 07 27 16 09 43 next to the upgrades list.
  2. Double-click the empty value next to the appeared numbered section.
  3. Specify the ID of the upgrade there (e.g. g_scout_highway).


5.15.1.6. Watchtower: ...Watchpoint zones

The ZonePropertyWatchpoint property allows you to create a Watchtower (zone), which the player may use to explore the map.

watchtower props

The properties of a Watchtower here are the following:

  • range - the range of the Watchtower (that defines the opened “explored” area), in meters.
  • Duration of transition - Duration of the animation of “observation” (with the camera moving according to the specified camera settings, see below) that will be played when the player selects “Launch Observation” for this Watchtower. The value is specified in milliseconds.
  • Delay at start - the delay before the playback of the “observation” animation, in milliseconds.
  • Delay at end - the delay after the playback of the “observation” animation, in milliseconds.
  • cameraPosStart - the position of the camera at the beginning of the “observation” animation. For details on selecting a correct value for this field, see "5.15.1.6.1" below.
  • cameraDirStart - the direction vector for the camera at the beginning of the “observation” animation. You should specify the direction vector here, e.g. (1, 0, 0), see "5.15.1.6.1" below. If you leave this field with 0 values, the animation will not work.
  • cameraPosEnd - the position of the camera at the end of the “observation” animation. For details on selecting a correct value for this field, see "5.15.1.6.1" below.
  • cameraDirEnd - the direction vector for the camera at the end of the “observation” animation. You should specify the direction vector here,
    e.g. (1, 0, 1), see "5.15.1.6.1" below. If you leave this field with 0 values, the animation will not work.

5.15.1.6.1. cameraPos… and cameraDir... values: Hints and Tips

It is sometimes rather hard to specify the correct values of vectors for position and direction of the camera.
However, you can do the following:

  1. Enable the Statistics option (6 statistics) on the toolbar of the Editor. This will display Camera statistics on the screen.
  2. Put the camera manually in the correct position/direction (see "3.2" for details) and write down the values of position and direction vectors of the camera (see screenshot below).
  3. If you enter the same values of vectors to cameraPos... and cameraDir... fields, they will correspond to this position/direction of the camera.

7 camerapos and cameradir

Particularly, you can use this method to specify cameraPosStart /cameraPosEnd and cameraDirStart / cameraDirEnd values for a Watchtower. And, also, to specify the cameraPos and cameraDir values for a Gateway (see "5.17.1").

As an alternative variant for specifying cameraPos… fields,, you can use coordinates of some objects on the map that are displayed in their properties (you will need to add some value for Y coordinate).
2020 07 27 17 33 43
Then, you can tune the values as necessary.

The alternative variant for specifying direction vectors in the cameraDir... fields is as follows. You can select an object of the scene. Arrows displayed after that will show the directions of the X, Y, and Z axes. So, the (1,0,0) vector will look in the direction of X-axis; (0,1,0) in the direction of Y-axis; (0,0,1) in the direction of Z-axis. And, of course, you can specify all values in between.
For example, if you specify (-0.5, 0, -0.5) as a direction vector, it will set direction as in the screenshot below.
axes


5.15.1.7. “Recover” feature: …Recovery zone

The ZonePropertyRecovery zone works as a target point for the “RECOVER” feature from the functions menu.
If there are multiple zones of that type, the priority field allows you to set the priority for it. The player’s car will be recovered to the zone with the highest priority value.
In the game, the Recovery zones are invisible to the player.

2020 07 27 17 36 01

If the map contains the Garage and the player has opened it, all recovery zones will be ignored and the player will be transferred to the Garage after usage of the “RECOVER” feature.


5.15.2. Zone Locator properties

NOTE: For general info on creating zones - see "5.15. Adding Zones" above.

Along with modification of the zone type and logic as described above, you may want to modify the properties of the zone locator itself. You can do it in the Editor, after selecting a zone locator in the Zones list in the Scene View.

The properties of the zone locator are the following:

  • Org X, Org Z, Dir - Coordinates and direction vector of the zone on the map.
  • Id - the ID of the zone locator. This particular ID is used to identify the zone in the Editor and the zone settings plugin.
  • Icon 30x30, Icon 40x40 - In these fields, you can specify the IDs of the icons that will be used for the zone on the mini-map and in the game. The list of possible values for these fields can be found in "5.15.3" below.
  • Name - the name of the zone for UI.
  • Is Visible On Minimap - Whether the zone is visible on the mini-map (True) or hidden (False).
  • Wall section - initially, the zone lies on the surface of the map. However, sometimes it is necessary to raise it above the surface. In this case, you can use the following settings:
    • Is Wall - make the 3D zone
    • Height - the height to which the zone will be raised
  • Shape Type - the shape of the zone (rectangular or round)
  • Border section - settings of the border of the zone:
    • Rounding Radius - the radius for rounded corners of the zone border
    • Thickness - the thickness of the border
    • Scroll Speed and direction - the speed of movement of the dashed line on the zone border and the direction of such movement. The direction is specified by the minus sign (“-”) or its absence.
    • Opacity - the transparency of the border.
  • Dimensions - settings of the actual dimensions of the zone:
    • Length or diameter - the length or the diameter of the zone (if Shape Type = Circle).
    • Width - the width of the zone.


5.15.3. List of Icons for Zones

Below you can find the list of in-game icons that can be used for zones (the Icon 30x30 and Icon 40x40 fields in the zone locator properties, see above).

The 30x30 and 40x40 icons are similar, so the table displays one preview for both of them. Icon 40x40 is used for displaying a zone on the mini-map, Icon 30x30 is used for displaying it in the left panel of the mini-map.

For some icons, there are two names in a cell: the second name is displayed after the slash (“/”) and the new line. In this case, the name without the “40” suffix corresponds to an icon without an outline. E.g, the “fuelStationImg / fuelStationImg40" value corresponds to two icons: “fuelStationImg” (40x40, without an outline) and “fuelStationImg40" (40x40, with an outline). Names of these icons should be used separately.

Preview

Icon 30x30

Icon 40x40
airport airportImg30 airportImg
bunker bunkerImg30 bunkerImg
constructionwarehouse constructionWarehouseImg30 constructionWarehouseImg
drillingsite drillingSiteImg30 drillingSiteImg
factory factoryImg30 factoryImg
farm farmImg30 farmImg
fuelstation fuelStationImg30 fuelStationImg
/ fuelStationImg40
garageblock garageBlockImg30
garage garageImg30 garageImg
/ garageImg40
garageno garageNoImg30
gateway gatewayImg30 gatewayImg
/ gatewayImg40
gatewaylocked gatewayLockedImg30 gatewayLockedImg
/ gatewayLockedImg40
lumberjack lumberjackImg30 lumberjackImg
manualloading manualLoading30 manualLoadingMarker40

manualuploading manualUploading30 manualUploadingMarker40
marker markerImg30 markerGpsImg
repairrefuelzone repairRefuelZoneImg
ruins30bricks1 ruins30Bricks1 ruins40Bricks1
ruins30bricks2 ruins30Bricks2 ruins40Bricks2
ruins30bricks3 ruins30Bricks3 ruins40Bricks3
ruins30metals1 ruins30Metals1 ruins40Metals1
ruins30metals2 ruins30Metals2 ruins40Metals2
ruins30metals3 ruins30Metals3 ruins40Metals3
ruins30woods1 ruins30Woods1 ruins40Woods1
ruins30woods2 ruins30Woods2 ruins40Woods2
ruins30woods3 ruins30Woods3 ruins40Woods3
sawmill sawmillImg30 sawmillImg
servicehub serviceHubImg30 serviceHubImg
townstorage townStorage30 townStorage
trailershop trailerShopImg30 trailerShopImg40
upgradecreate upgradeCreateImg30 upgradeCreateImg40
/ upgradeCreateImg40Plus
watchtower watchTowerImg30 watchTowerImg
/ watchTowerImg40


5.15.4. Adding Fog of War: "isNeedToBeCloacked" flag

Along with specifying zone properties, the ZoneSettingsEditor.exe plugin also allows you to add the “Fog of War” to your mini-map, which is displayed as black color there.

To add the fog of war to your map:

  1. On the toolbar of the Editor, click the Zone Settings button (4 zone settings).
    zone settings click
  2. In the appearing dialog of the plugin, enable the isNeedToBeCloacked option.
    2020 07 27 18 34 45
  3. To save your changes, press CTRL + S or select File > Save in the main menu of the plugin window.

The information on the status of the fog of war is stored along with the zone properties (see "5.15." above).


5.16. Adding Objectives

Using the zone settings plugin (ZoneSettingsEditor.exe), you can specify Tasks, Contracts, and Contests for your custom map. This is done similarly to adding zones (see "5.15. Adding Zones").
I.e., you need to click the Zone Settings button (4 zone settings) on the toolbar of the Editor and then specify the objective settings in the appearing dialog, using the same UI techniques as with zones.

zone settings click

The values of the specified properties of objectives are saved in the folder of the map within the \Media\levels\ folder, in the objective_settings.json file there. So, if you want to reuse the settings for both zones and objectives, you will need 3 files from that folder: user_name_of_map.txt, zone_settings.json, and objective_settings.json. However, you will need to change the name of the map in these files.

NOTE: The system validates some aspects of the configuration of objectives during packing. The log of occurring errors can be found in Documents\My Games\SnowRunner\base\logs\ModMapError.txt
e.g. C:\Users\<username>\Documents\My Games\SnowRunner\base\logs\ModMapError.txt

However, the settings of objectives have some specifics that are described here and in the subsections below.

Important note on IDs used:

  • In the fields of the objectives where you need to specify the link to the zone (e.g. globalZoneId), you need to specify it in the following format:
    name_of_the_map || ID_of_the_zone
    For example: level_test_map_5 || test_zone_1

    However, in the additional zones fields, the format is different, you need to specify the ID_of_the_zone only. For example: test_zone_1

    You can specify the link to the zone either manually (as text) or by clicking the 2020 07 27 19 57 03 button in these fields and selecting the zone from the list.
    This is valid for both the globalZoneId field and additional zones fields.

    2020 07 27 19 58 03

    NOTE: The ID of the zone locator in the Editor is specified for the zone as described in "5.15. Adding Zones".

  • In various Truck Uid fields, you can specify the ID of the Truck, which you can specify for the Truck in the Editor in its properties (in the Id field). This is not the type of the Truck.
    2020 07 27 20 00 00

    WARNING: You need to use different Trucks (with different IDs) in different objectives. For example, you cannot use the same Truck in two different contracts, or even in a contract and in a task. Trying to do so may result in unpredictable behavior.
    However, you can use the same truck within different Stages of the same objective (see "5.16.1. Stages" below).

  • For tasks and contests, the ID of the zone where the task or contest is activated (by the player) needs to be specified in the taskGiverZone field. And, you can specify additional such zones in the additionalTaskGivers list.

Notes on names and descriptions:

  • Ui Desc fields – allow you to specify descriptions of objective and particular assignments of the objective throughout the UI.

    ui desc

  • The name of the objective in the UI is specified when adding it to the corresponding list of objectives. It can be modified by double-clicking later.
    2020 07 27 20 04 38
    NOTE: The names of the objectives must be unique, even objectives with different types must have different names! E.g., if a task and a contract have the same name, this can result in unpredicted behavior.

Note on activation on Tasks and Contests:

  • taskGiverZone - Do not forget to create a special zone where the player can activate a Task or a Contest! Otherwise, the player will not be able to take this objective. The ID of this zone must be specified in the taskGiverZone field of a Task or a Contest, in the long form, e.g. level_test_map_5 || test_zone_1


5.16.1. Stages

All objectives consist of Stages. The Stages list specifies what particular assignments of what particular type the player needs to perform to complete an objective. Additional settings can be specified for each assignment, depending on its type.

You need to add at least one stage to your objective.

Fields of the stage define the assignment of the particular type. These fields vary from type to type. They are described in the subsections below.


5.16.1.1. Delivery of Goods (“actions” section)

The group of fields in the actions section corresponds to the “delivery of goods” assignment.
For each zone that you need to deliver the goods to, add the separate entry to the zoneToFill list.
The ID of this zone is specified in the globalZoneId field. If you want to specify some additional zones where the player may deliver the goods, specify their IDs in the additionalUnloadZones list.
The cargo that needs to be delivered is specified in the cargo list (ID of cargo + its amount).
For example, the assignment of delivering bricks to one of two zones (unloading, unloading_2) will look like the following:

actions section

NOTE: To create a zone for loading cargo, you can use the zone of the ...CargoLoading type (see "5.15.1.1" above). To create a zone where the physical objects of goods will be spawned for manual loading, you can use the spawnCargoOnStageActive stage (see "5.16.1.7" below).

If necessary - you can specify the ID of the truck that is required to perform this delivery in the Truck need to visit Uid field.
For description of Model Building Settings - see "5.16.3" below.


5.16.1.2. Delivery of the Truck (“truckDelivery” section)

The group of fields in the truckDelivery section corresponds to the “delivery of a truck” assignment.
Here you need to place the truck on the map in Editor and specify its Id as described above (e.g. task_truck).

NOTE: The player will not be able to sit into the target truck during the assignment. However, the player can attach it to his/her vehicle using the winch or as a trailer.

Specify the IDs of the target zone(s) in the globalZoneDeliveryId field and, if necessary, additionalDeliveryZones (similarly to the goods delivery assignment described above).

truck delivery

You can give the truck involved in the “delivery of a truck” assignment as a reward to the player. To do this, select the “REWARD” option in the afterStageFinished field and ensure that in previous stages of the objective this truck has not been removed from the map (“DESTROY” option).
The full set of options in afterStageFinished field is the following:

  • REWARD - give the truck involved in the assignment as a reward to the player after the objective is finished.
  • DETACH - after the stage is finished, the system will detach the truck involved in the assignment (if it has been attached to the player’s vehicle using the winch or as a trailer).
  • DESTROY - after the stage is finished, the system will remove the truck involved in the assignment from the map.

Alternatively, you can give a new truck (not the one from the map) as a reward to the player using the ObjectiveRewardItem type in the rewards list of the objective. For details, see the description of the rewards list in "5.16.2.1. Common fields (for all objectives)".

WARNING: You need to use different Trucks (with different IDs) in different objectives. For example, you cannot use the same Truck in two different contracts, or even in a contract and in a task. Trying to do so may result in unpredictable behavior.
However, you can use the same truck within different Stages of the same objective.


5.16.1.3. Repairing the Truck (“truckRepair” section)

The group of fields in the truckRepair section corresponds to the “repairing of a truck” assignment.

Similarly to truckDelivery, you need to place the truck on the map in Editor, specify its Id there, and then specify the same ID in the assignment.

Similarly to truckDelivery, you can give the truck involved in the assignment as a reward to the player (see above).


5.16.1.4. Changing the Truck (“changeTruck” section)

The group of fields in the changeTruck section corresponds to the assignment where the player needs to change his/her truck to the particular truck.

Similarly to truckDelivery, you need to place this truck on the map in Editor, specify its Id there, and then specify the same ID in the assignment.

Similarly to truckDelivery, you can give the truck involved in the assignment as a reward to the player (see above).

NOTE: As opposed to truckDelivery, the player can drive the target truck during this assignment. However, this may conflict with the necessary behavior, if you have the “deliver/repair the truck” and “change the truck” assignments for the same truck within the objective simultaneously.


5.16.1.5. Visiting All Zones from the List (“vizitAllZones” section)

The group of fields in the vizitAllZones section corresponds to the assignment where the player needs to visit all zones from the specified list.

For each zone, you need to specify its ID in the globalZoneId field (similarly to the goods delivery assignment described above).
If necessary - you can specify the ID of the truck that the player needs to use to visit this zone in the Truck need to visit Uid field.


5.16.1.6. Seismograph Usage (“Seismograph Settings” section)

The group of fields in the Seismograph Settings section corresponds to the assignment where the player needs to use the seismograph in all zones from the specified list.
The properties of this assignment are identical to vizitAllZones (see above).


5.16.1.7. Spawning Cargo on a Map (“spawnCargoOnStageActive” section)

The spawnCargoOnStageActive section does not correspond to an assignment.
It allows you to create a zone where the system will be spawning cargo as a physical object. After manual loading with the crane, the spawned cargo can be used for the “delivery of the goods” assignment.

The ID of the target zone here is specified in the zone > globalZoneId field. The spawned cargo items must be added to the cargos list (similarly to the “delivery of goods” assignment).

NOTE: Cargo spawned by the spawnCargoOnStageActive feature can be loaded to the truck only manually, by the crane. For automatic loading of the cargo, use the ...CargoLoading zone (see "5.15.1.1" above).


5.16.2. Other fields of Objectives

5.16.2.1. Common fields (for all objectives)

  • Name - The name of the objective is specified when you create a new Contract, Task, or Contest in the corresponding list. In the plugin, it is displayed not as the field, but as the name of the section (see screenshot below).

    NOTE: The names of the objectives must be unique, even objectives with different types must have different names! E.g., if a task and a contract have the same name, this can result in unpredicted behavior.

    2020 07 27 20 04 38 1

  • Ui Desc - the description of your objective.
  • Required rank - the minimum rank of the player that is required for the objective.
  • Reward Description - the description of the reward received after accomplishing this objective.
  • Recommendation - you can select one of the standard in-game recommendations for this objective here. The corresponding recommendation will be displayed to the player in the UI.
  • Don’t show reward pop-up - whether or not the game should display the reward pop-up to the player.
  • Stages - see "5.16.1. Stages" above.
  • ModelBuildingSettings - see "5.16.3" below.
  • Blocker Objectives - the list with the names of objectives you need to accomplish to receive the current objective (see “Name” above).
  • rewards - this section allows you to add rewards for the objective:
    • …Experience - the amount of XP granted as a reward.
    • …Money - the amount of money granted as a reward.
    • …Item - here you need to specify the ID of the type of the necessary upgrade (for details, see "5.11.1. How to identify IDs of truck parts"). Alternatively, you can specify here the ID of the type of the truck if you want to give it as a reward (e.g. chevrolet_kodiakc70).
      truck type

      After the player accepts the reward, the truck of the specified type will become available in the Garage.

      NOTE: Alternatively, you can give the truck involved in the assignment as a reward after the completion of the objective. For details, see "5.16.1.2. Delivery of the Truck ("truckDelivery" section").

    • …OpenZoneProperties - we can open the particular zone to the player as a reward. You need to specify:
      • zoneId - the ID of the zone (in the short form, without the name of the map and || ).
      • mapId - the ID of the map (the name of the XML file of your map, without the extension).
      • props - properties of this zone, see "5.15.1. Properties of various Zone Types" for details.
        NOTE: You do not need to create a duplicate of this zone in the TERRAIN LOCATORS LIST of the zone settings plugin. However, you need to create a zone locator with the specified ID for this zone in the Editor (steps 2-3 in the "5.15. Adding Zones").

    • …ByTime - here you can set 3 types of the rewards (Bronze, Silver, and Gold) given to the player based on the time of the accomplishment of the objective. For each type, you specify:
      • Time limit - time limit for this type of reward, in seconds.
      • Experience - the amount of granted XP.
      • Money - the amount of given money.
      • Possible Item reward - the ID of the type of the necessary upgrade. Or, the ID of the type of the truck if you want to give it as a reward (see …Item above).


5.16.2.2. Specific fields for Contracts

  • employer - the employer of the contract. This field is mandatory and you need to select one of the existing employers from the list.


5.16.2.3. Specific fields for Tasks

  • taskGiverZone - the ID of the zone where the task is activated (by the player).
  • additionalTaskGivers list - the list with IDs of additional zones that activate the task.


5.16.2.4. Specific fields for Contests

  • taskGiverZone - the ID of the zone where the contest is activated (by the player).
  • additionalTaskGivers list - the list with IDs of additional zones that activate the contest.
  • failReasons - the list that contains the conditions for failure of the contest. For example, failure by time, failure by the amount of the received damage, failure due to entering the Garage, etc. There can be multiple reasons for failure here.

    WARNING: All created Contests have 3 default failReasons: ChangeTruckFailReason, RecoveryFailReason, and GarageFailReason
    (the in-game contests have the same fail reasons). You cannot remove them, but you are able to specify additional failReasons, if necessary.

    NOTE: When specifying the time of the beginning of the contest and the maximum time when it needs to be accomplished, you need to specify hours as integers and in 24-hour format. For example, the following settings will set the contest to start at 2:00 AM and will set its deadline to 3:00 AM.
    2020 07 27 20 31 56
    You cannot specify float values (e.g. 1.5) here, only integers (e.g. 1 or 2).
    If the player will take this contest earlier (say, at 11:00 PM), the game will switch its time on the map to 2:00 AM automatically.


5.16.3. Model Building Settings

The Model Building Settings fields allow you to link the process of “building” some object on the map to the process of accomplishing stages by the player. The same process of substituting one model on the map with another one and playing the corresponding animation can be used in the game not only for “building”, but for other scenarios too (“repairing” some object, etc.). In the text below, we will use the term “build” meaning any action of that type.

Usage of this functionality requires appropriate animations (e.g. the animation of repairing the bridge) and the model setup. Therefore, currently, you can use this functionality for models where these things are already configured. Typically, these models can be identified by the _objective suffix in their names and you can find them by this suffix in the Select Asset window when adding a model.
For example, you can use the bridge_wooden_big_02_objective model.

2020 07 27 20 36 14

The setup of Model Building Settings fields will require you to know the names of stagesProgress of these models (i.e. states of this object in the process of “building”). For each model used in the game, you can view these states in the XML file of the class of the model. These XML classes can be found in the initial.pak archive, in the [media]\classes\models\ folder there.
In these XML files, the names of these states can be found as a value of the Name attribute of the Subset tag.
For example, in the bridge_wooden_big_02_objective.xml model class, you will find such states as build_stage_0 and build_stage_1:

2020 07 27 20 53 34

Along with it, you will need to specify the Tag for the selected model in the Editor. It is specified in the properties of the model, after selecting this model in Scene View.

2020 07 27 20 55 02

For example, in the screenshot above, we have specified the “bridge_tag” for the bridge_wooden_big_02_objective model.
The same tag you will need to specify in the Model Building Settings fields, see below.

As you can see from the settings of objectives, there can be two scenarios for “building” objects:

  1. We can link “building” of an object to the cargo delivered by the player.
  2. We can link “building” of an object to the accomplished stages of the objective.

WARNING: You should not use the same _objective model in two separate delivery stages (i.e. in two separate actions stages link “building” of this model to the delivery of the cargo). If you want “building” of the same model to depend on two deliveries of the cargo as two separate stages, you should link “building” to the accomplishing of these stages instead. I.e., in this case, you should perform the setup similarly to Scenario #2 below, not Scenario #1.

Scenario #1:
If we are linking to the delivered cargo, we will need to fill in the fields in the actions stage of the objective, which describes the assignment to deliver the cargo (see "5.16.1.1" above).

Particularly, the Model Building Settings (Depend On Cargo) fields there:

  • levelName - this field is filled in automatically and contains the name of the map.
  • modelTag - specify here the same tag that you specified for the model in Editor (see above). For example, the “bridge_tag” that we have used above.
  • stagesProgress - in this list, you need to link the states of the model to the status of the delivery. Goods can be either delivered or not delivered. So, you need to add two stages here: one for goods not delivered (with 0 value) and one for delivered goods (with 1 value). Names of the stages should be exactly the same as the corresponding states of the model (build_stage_0 and build_stage_1 in our example, see above).

    build stage 0

    By doing so, we will map build_stage_0 to not delivered goods (the “0” value) and build_stage_1 to delivered goods (the “1” value).

    mapped stages

    WARNING: Names of model states must be specified without spaces, otherwise they will not work.

    If you want to change the names of the states or delivery values, double-click them.

The final set of settings here will look like the following:

scenario 1 settings

Scenario #2:
If we are linking to the accomplished stages of the objective (see "5.16.1"), we need to fill in the fields in the Model Building Settings (Depend On Stages) section within this objective.

The fields here are specified similarly to the Scenario #1. However, in the stagesProgress list, you need to create entries corresponding not to the status of delivery but to the number of stages accomplished by the player for this objective.

For example, let’s assume that your objective contains two stages and the model has 3 states (let’s assume that the model has the build_stage_0, build_stage_1, and build_stage_complete states). The default state of the model (when the player has accomplished no stages) will be build_stage_0. When the player has accomplished the first stage, we want the model to switch into the build_stage_1 state. When the player has accomplished two stages, we want the model to switch into the final build_stage_complete state. So, in the stagesProgress list, we need to map model states of the model (on the left) to the number of accomplished stages (on the right).

mapped stages scen 2

WARNING: Names of model states must be specified without spaces, otherwise they will not work.

And, in this case, the necessary settings will be the following:

scenario 2 settings

These settings will work as described above.

NOTE: In the game, the bridge_wooden_big_02_objective model has no build_stage_complete state. So, please treat these settings as an illustrative example only.


5.17. Regions with Multiple Maps

NOTE: The creation of regions is currently available in the PTS version of the game.

You can combine multiple maps into one Region, connect these maps using the Gateway zones, and pack them as a single mod. Moreover, when creating a region, you can add objectives that require performing actions on multiple maps of the region (e.g. deliver some cargo from one map to another).

NOTE: Maps that form the region may be also published as separate mods, if necessary. However, in this case, the Gateway zones and cross-map objectives that are created on the region level will not work.

All these operations are performed using the Region Settings Editor dialog, which you can open by clicking the Region settings button (8 region settings) on the toolbar.

The process described below is an illustration of the setup of a region:

Let’s assume that we have already created two maps: level_map_1 and level_map_2. We want to create a region with these two maps and connect them using the Gateway zones. Then, we want to pack the created region as a single mod.

And, let’s assume that, along with Gateways, we want these maps to contain the following zones:

  • level_map_1 will contain the Fuel Station
  • level_map_2 will contain the Garage

And, we want the player to start on the level_map_1 and then proceed to level_map_2.

Then, we will need to do the following:

  1. Prepare level_map_1:
    1. Open it in the Editor.
    2. In the Editor, create all necessary zone locators, including zone locators for Gateway zones.
      In our example, there will be two zone locators with the following IDs:
      • zone_1 (Fuel station)
      • gateway_1 (the zone that will be the gateway in the future)
    3. Since we want this map to be the starting map of the region, we need to add an active truck to this map (see "5.11" for details).
    4. So, our first map may look like the following in the Editor:
      9 level map 1
    5. For this map, in the Zone Settings Plugin, we need to:
      1. Add all zones, including Gateway zones, to the TERRAIN LOCATORS LIST (in the standard way).
      2. Configure props of all necessary zones, except Gateway zones.
        The props of the Gateway zones will be configured later, on the region level.
    6. In our example, the zone properties of our first map will look like the following:
      910 level map 1 props
    7. Now, you need to pack your level_map_1 map.
      If necessary, after packing you can publish this map as a separate mod (not within the region).

  2. Prepare level_map_2:
    1. Do almost the same operations as for level_map_1.
      However, on level_map_2 you do not need to add an active truck.
      An the zone locators will be the following:
      • zone_2 (Garage entrance)
      • gateway_2 (the zone that will be the gateway in the future)
    2. So, the zone itself and its zone properties will look like the following:
      911 level map 2
      2020 09 22 2 15 18
    3. Do not forget to pack your level_map_2 map too.
      You can also publish this map as a separate mod, if necessary.

  3. Now, combine these two maps into the region. Open the Region Settings Editor by clicking the Region settings button ( 2 region settings 1 ) on the toolbar.

  4. TBD: To continue, please see the up-to-date PDF version (see UPD: below).

UPD: ===============================================================

Unfortunately, we have issues with updating the web version of this guide due to the large size of our guides (we have reached max limit for pictures for an account, etc). Sorry for that.

However, you can find up-to-date versions of guides in PDF format here: Drive.google.com

Or, you can open the folder with the documentation package directly from SnowRunner™ Editor, by selecting Help > Guides in its main menu.

===================================================================


END OF PART #3


Quick links to parts of this guide:

  • Part #1 - Introduction to SnowRunner™ Editor: First Launch, UI, File Paths (Chapters 1 to 4)
  • Part #2 - Creation of a Map, beginning (Chapter 5, from 5.1 to 5.11) that covers:
    • Terrain
    • “Geometry” Brushes
    • PBR Materials
    • Snow and Ice
    • Models
    • Plants
    • Distributions
    • Overlays
    • Rivers and Water Objects
    • References
    • Trucks
  • Part #3 - Creation of a Map, continuation (Chapter 5, from 5.12 to 5.15) that covers:
    • Sounds
    • Sound Domains
    • Zones
    • Objectives
  • Part #4 - Post-production operations: Packing a Map, Testing a Map, Publishing a Map, Playing on a Map (Chapters 6 to 10)
  • Part #5 - Viewing Trucks (Chapter 11)


2 comments

Join the community or sign in with your gaming account to join the conversation:

Frank-the-tank
Frank-the-tank @frank-the-tank2

can you update this?

SR
SnowRunner_Support @snowrunner-support

Hi!
Unfortunately, we have issues with updating web version of this guide due to the large size of our guides (reached max limit for pictures for account, etc). Sorry for that.

However, you can find up-to-date versions of guides in PDF format here: Drive.google.com

Or, you can open the folder with the documentation package directly from the SnowRunner™ Editor, by selecting Help > Guides in its main menu.