SEED - Spawnargs: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
Tels (talk | contribs)
add link
 
(12 intermediate revisions by 3 users not shown)
Line 39: Line 39:
Default: '''1''' (true). If set to 0, this SEED will never try to combine rendermodels of entities together, this will result in much slower rendering.
Default: '''1''' (true). If set to 0, this SEED will never try to combine rendermodels of entities together, this will result in much slower rendering.


Can be overridden on a per-class basis with [[#seed_combine|'''seed_combine''']].
{{override|combine}}
 
=== combine_distance ===
 
Default: '''2048''' (units). The maximum distance between two entity origins, where the entities are still considered to be combined. See [[SEED - Combining entities]] for details.


=== cull_range ===
=== cull_range ===


Default: '''150''' units. Entities further away from the player than '''hide_distance''' (as defined on each LOD entity) + '''cull_range''' will be removed from the game world. When they come closer to  '''hide_distance + (cull_range / 2)''', they will respawn automatically.
Default: '''150''' units. Entities farther away from the player than '''hide_distance''' (as defined on each LOD entity) + '''cull_range''' will be removed from the game world. When they come closer to  '''hide_distance + (cull_range / 2)''', they will respawn automatically.


Can be overridden on a per entity-class basis with [[#seed_cull_range|'''seed_cull_range''']].
{{override|cull_range}}


Set to '''0''' to disable any entity culling for this SEED. This should be only used for SEEDs with a small number of entities, otherwise you can easily run out of entity slots.
Set to '''0''' to disable any entity culling for this SEED. This should be only used for SEEDs with a small number of entities, otherwise you can easily run out of entity slots.
Line 69: Line 73:
Default: '''none'''. Defines a function that influences the probability that an entity will be generated. If set to '''none''', all positions are equally likely, resulting in a square shape. All other values (except "func") create a ellipse defined by the corners of the SEED and distribute the entities inside that shape.  
Default: '''none'''. Defines a function that influences the probability that an entity will be generated. If set to '''none''', all positions are equally likely, resulting in a square shape. All other values (except "func") create a ellipse defined by the corners of the SEED and distribute the entities inside that shape.  


The value can be set on a per-class base with [[#seed_falloff|'''seed_falloff''']].
{{override|falloff}}


Possible values:
Possible values:
Line 86: Line 90:
=== floor ===
=== floor ===


Default: '''0''' (Off). If set to '''1''', all generated entities will be ''floored'', that is their position will be adjusted so that they touch whatever is under them. They start out at the height the template entity is placed in the editor. This works with dynamically created terrain or terrain consisting of irregular heights like when it was made from patches. See also [[#seed_collide|'''seed_collide''']] and [[#seed_stack|'''seed_stack''']].
Default: '''0''' (Off). If set to '''1''', all generated entities will be ''floored'', that is their position will be adjusted so that they touch whatever is under them. They start out at the height the template entity is placed in the editor (it's origin/center). This works with dynamically created terrain or terrain consisting of irregular heights like when it was made from patches. See also [[#seed_collide|'''seed_collide''']] and [[#seed_stack|'''seed_stack''']].


Finding the height where the entity is placed is a three-step process, and the '''"floor"''' (or [[#seed_floor|'''seed_floor''']] per class) disables/enables the second step. Here is how it works:
Finding the height where the entity is placed is a three-step process, and the '''"floor"''' (or [[#seed_floor|'''seed_floor''']] per class) disables/enables the second step. Here is how it works:
Line 97: Line 101:
{{clear}}
{{clear}}


If '''"floor"''' is true, then the second step will place entities downwards so their '''origin''' touches the terrain. Note that nothing happens when '''"floor"''' is off!
If '''"floor"''' is true, then the second step will place entities downwards until their '''origin''' touches something, or they hit the bottom of the SEED entity. Note that nothing happens when '''"floor"''' is off!
 
{{infobox|'''Note:''' Since entities are only "floored" downwards (in direction of gravity) until they hit the bottom of the SEED entity, they can float if f.i. the SEED entity is not sunk into terrain. In this case the entities will be either removed, or float in air, depending on the '''floating''' spawnarg.}}


[[Image:Lode floor step 2.png|thumb|800px|center|Step 2: With '''floor on''': Touch down to the terrain.]]
[[Image:Lode floor step 2.png|thumb|800px|center|Step 2: With '''floor on''': Touch down to the terrain.]]
Line 109: Line 115:


{{clear}}
{{clear}}
=== floating ===
Default: '''0''' (off). Boolean. '''v1.07 or newer'''
If off, entities that are floored and hit nothing will be removed. If on, the entities will "float" with their origin at the bottom of the SEED entity. {{override|floating}}


=== impulse_min/impulse_max ===
=== impulse_min/impulse_max ===
Line 137: Line 149:
=== map ===
=== map ===


Specifies the path to an image map (8 bit greyscale TGA or PNG), where black is 0% and white is 100% spawn probability. Can be overriden on a per-class basis with [[#seed_map|'''seed_map''']].
Specifies the path to an image map (8 bit greyscale TGA or PNG), where black is 0% and white is 100% spawn probability. {{override|map}}


Example:  
Examples:  


  "map" "spots"
  "map" "spots"
"map" "spots, pattern, corner"  // multiple maps, one will be selected at random


If the map name does not start with "textures/seed/", then this will be added in front. Also, the extension is optional, if left off, PNG, TGA and JPG will be tried in that order. For example, '''"sinus"''' will load "textures/seed/sinus.png".
If the map name does not start with "textures/seed/", then this will be added in front. Also, the extension is optional, if left off, PNG, TGA and JPG will be tried in that order. For example, '''"sinus"''' will load "textures/seed/sinus.png".


Note: The image base map is combined with whatever distribution you set with '''falloff''', also inhibitors are still taken into account. See [[SEED - Image maps]] for more information and visual examples.
Note: The image base map is combined with whatever distribution you set with '''falloff''', also inhibitors are still taken into account. See [[SEED - Image maps]] for more information and visual examples.
{{override|map}}


=== map_invert ===
=== map_invert ===


Boolean, default "0" (false). If true, the [[#map|'''image map''']] will be inverted, that is black is 100% and white is 0% spawn probability. Can be overriden on a per-class basis with '''seed_map_invert'''.
Boolean, default "0" (false). If true, the [[#map|'''image map''']] will be inverted, that is black is 100% and white is 0% spawn probability. {{override|map_invert}}


This is very useful to combine two different entities, one uses the map normally and the other one inverted, so the result is that the second entity only appears where the first entity is missing.
This is very useful to combine two different entities, one uses the map normally and the other one inverted, so the result is that the second entity only appears where the first entity is missing.
Line 155: Line 170:
=== map_ofs, map_ofs_x, map_ofs_y ===
=== map_ofs, map_ofs_x, map_ofs_y ===


Float, 0.0 .. 1.0, default '''0'''. Specify either both X and Y ('''map_ofs''') or the X or Y offset into the image map. Can be overriden on a per-class basis with '''seed_map_ofs'''. Example:
Float, 0.0 .. 1.0, default '''0'''. Specify either both X and Y ('''map_ofs''') or the X or Y offset into the image map. {{override|map_ofs}} Example:
 
[code]
"map_ofs" "0.5,0"
[/code]


"map_ofs" "0.5,0"


=== map_scale, map_scale_x, map_scale_y ===
=== map_scale, map_scale_x, map_scale_y ===


Float, default '''1.0'''. Specify either both X and Y ('''map_scale''') or the X or Y scaling factor of the image map. Can be overriden on a per-class basis with '''seed_map_scale'''.
Float, default '''1.0'''. Specify either both X and Y ('''map_scale''') or the X or Y scaling factor of the image map. {{override|map_scale}}


Example:
Example:


[code]
"map_scale" "2.0,1.0"
"map_scale" "2.0,1.0"
[/code]


=== max_entities ===
=== max_entities ===


Default: '''0'''. The maximum number of entities generated. If 0 (the default), then the number will be computed from the aprox. area the SEED covers, taking into account the '''density''' spawnarg. Can be overridden by each entity class with '''seed_max_entities'''.
Default: '''0'''. The maximum number of entities generated. If 0 (the default), then the number will be computed from the aprox. area the SEED covers, taking into account the '''density''' spawnarg. {{override|max_entities}}


Note that the SEED might generate less entities, f.i. when entities do not all fit into the SEED area, or the inhibitors inhibit too many entities.
Note that the SEED might generate fewer entities, f.i. when entities do not all fit into the SEED area, or the inhibitors inhibit too many entities.


=== probability ===
=== probability ===
Line 257: Line 267:
Boolean, default: false (0). If true, units will be placed '''only''' lower than '''z_min''' and only higher than '''z_max''', but not between.
Boolean, default: false (0). If true, units will be placed '''only''' lower than '''z_min''' and only higher than '''z_max''', but not between.


Can be overriden per entity class with [[#seed_z_invert|'''seed_z_invert''']].
{{override|z_invert}}


=== z_min/z_max ===
=== z_min/z_max ===
Line 321: Line 331:


These spawnargs can be set on the entities that the SEED targets:
These spawnargs can be set on the entities that the SEED targets:
=== seed_base_density ===
Default: 1.0. Will be multiplied with [[#seed_density|'''seed_density''']] to arrive at the final density. Used to adjust the default sensity (for premade entities) without the mapper having to know this value, she can always assume 1.0 is the default density and tweak this variable more easily. Should only be used if you create new pre-made random generators.


=== seed_bunching ===
=== seed_bunching ===


Default: What the SEED specifies with '''bunching'''. Number from 0.0 to 1.0, giving the probability that a randomly created entities "bunches" up with an already existing entity. Can be override per entity class with '''seed_bunching'''.
Default: What the SEED specifies with '''bunching'''. Number from 0.0 to 1.0, giving the probability that a randomly created entities "bunches" up with an already existing entity.


<!--Other related settings: "seed_max_bunched" (limit number of entities per bunch), and "seed_bunch_spacing_min" and "seed_bunch_spacing_max" (how much space leave between bunched-up entities). -->
<!--Other related settings: "seed_max_bunched" (limit number of entities per bunch), and "seed_bunch_spacing_min" and "seed_bunch_spacing_max" (how much space leave between bunched-up entities). -->
Line 374: Line 388:
=== seed_floor ===
=== seed_floor ===


Default: '''0''' (Off). If set to '''1''', all entities of this class will be floored, that is their position will be adjusted so that they touch whatever is under them. This works with dynamically created terrain or terrain consisting of irregular heights like when it was made from patches. See also '''seed_collide''' and '''seed_stack'''.
Default: '''0''' (Off). If set to '''1''', all entities of this class will be floored, that is their position will be adjusted so that they touch whatever is under them. This works with dynamically created terrain or terrain consisting of irregular heights like when it was made from patches. Note that entities are only placed downwards until they hit the bottom of the SEED entity - the '''seed_floating''' spawnarg then controls whether these entities will be removed or float.
 
=== seed_floating ===
 
Default: '''0''' (off). Boolean.  '''v1.07 or newer'''
 
If off, entities that are floored ('''seed_floor''' is "1") and hit nothing, will be removed. If on, the entities will "float" with their origin at the bottom of the SEED entity.


=== seed_map ===
=== seed_map ===
Line 383: Line 403:


  "seed_map" "spots"
  "seed_map" "spots"
"seed_map" "spots, pattern, corner"  // multiple maps, one will be selected at random


If the map name does not start with "textures/seed/", then this will be added in front. Also, the extension is optional, if left off, PNG and TGA will be tried in that order. For example, '''"seed_sinus"''' will load "textures/seed/seed_sinus.png".
If the map name does not start with "textures/seed/", then this will be added in front. Also, the extension is optional, if left off, PNG and TGA will be tried in that order. For example, '''"seed_sinus"''' will load "textures/seed/seed_sinus.png".
Line 398: Line 419:
Float, 0.0 .. 1.0, default '''0'''. Specify either both X and Y ('''seed_map_ofs''') or the X or Y offset into the image map. Example:
Float, 0.0 .. 1.0, default '''0'''. Specify either both X and Y ('''seed_map_ofs''') or the X or Y offset into the image map. Example:


[code]
"seed_map_ofs" "0.5,0"
"seed_map_ofs" "0.5,0"
[/code]
 


=== seed_map_scale, seed_map_scale_x, seed_map_scale_y ===
=== seed_map_scale, seed_map_scale_x, seed_map_scale_y ===
Line 407: Line 425:
Float, default '''1.0'''. Specify either both X and Y ('''map_scale''') or the X or Y scaling factor of the image map. Example:
Float, default '''1.0'''. Specify either both X and Y ('''map_scale''') or the X or Y scaling factor of the image map. Example:


[code]
"seed_map_scale" "2.0,1.0"
"seed_map_scale" "2.0,1.0"
[/code]


=== seed_material_xyz ===
=== seed_material_xyz ===


Defines the probability that an entity will spawn on the given [[Surface_Types|surface type]]. If used, the "seed_probability" spawnarg will also be queried and used. Example:
Defines the probability that an entity will spawn on the given '''[[Surface_Types|surface type]]'''. (Any surface types that TDM has can be used, but it is not possible to distinguish between material shader names or textures used). If any ''seed_material_xyz'' spawnarg is used, the "seed_probability" spawnarg will also be queried and used. Example:


<pre>
<pre>
Line 560: Line 576:
=== Other spawnargs ===
=== Other spawnargs ===


* You can of course use other LOD spawnargs on the entities that the SEED creates. See [[LOD]] for a list.
You can of course use other LOD spawnargs on the entities that the SEED creates. See [[LOD]] for a list.
* Also possible is "solid" "0" - this makes the generated entities nonsolid, even when they are combined into one entity.
 
In addition, possible are:
 
* "solid" "0" - this makes the generated entities nonsolid, even when they are combined into one entity.
* "noshadows" "1" - this turns off shadows for all copies and LOD stages of this entity.


{{seed}}
{{seed}}

Latest revision as of 03:56, 26 March 2015

Introduction

The new SEED system an entity manager and creation system. It also contains a ModelGenerator, which can not only generate models, but also combine render models to improve performance.

This article describes in depth all the spawnargs you can set on the SEED, SEED inhibitors as well as on entities created by the SEED:

Spawnargs on the SEED

These spawnargs can be set on the SEED itself and set defaults or influence overall strategies:

angle

Rotates the SEED shape around the z-axis. F.i. angle=45 would create a rectangle rotated by 45°.

Note: Do not rotate the SEED entity or SEED brush inside DR itself, this will only increase the SEED bounds, but not actually rotate the SEED shape!
The angle spawnarg

bunching

Default: "0" (Off). Number from 0.0 to 1.0, giving the probability that a randomly created entities "bunches" up with an already existing entity. Can be overriden for each entity class with seed_bunching.

color_min/color_max

Sets the random color variance bounds min/max. Can be overridden per entity class with seed_color_min and seed_color_max.

Works only on light entities or entities that use a skin with a colorable material. If combine is true, the material also needs a "vertexColor" stage, or all the combined entities will have the same color.

Example:

 "color_min"   "0.7 0 0.2"
 "color_max"   "0.8 0.5 0.7"

combine

Default: 1 (true). If set to 0, this SEED will never try to combine rendermodels of entities together, this will result in much slower rendering.

Can be overridden on a per-class basis with seed_combine.

combine_distance

Default: 2048 (units). The maximum distance between two entity origins, where the entities are still considered to be combined. See SEED - Combining entities for details.

cull_range

Default: 150 units. Entities farther away from the player than hide_distance (as defined on each LOD entity) + cull_range will be removed from the game world. When they come closer to hide_distance + (cull_range / 2), they will respawn automatically.

Can be overridden on a per-class basis with seed_cull_range.

Set to 0 to disable any entity culling for this SEED. This should be only used for SEEDs with a small number of entities, otherwise you can easily run out of entity slots.

debug

Debug level, default: 0. If > 0, more debug messages are printed to the console. Warning: Can generate massive amounts of output!

density

Default: 1.0. A factor multiplied with the number of entities generated if max_entities is 0.

The density spawnarg controls how many entities are generated when max_entities is 0.
Note: The density is slightly influenced by the menu setting "Object Detail". Make sure you test your map with the "Normal" setting. If you can, test as well as the "Lowest" and "Highest" to get a feeling for the extremes that can appear.

Each class can have its own seed_density factor that will be multiplied with the SEED density. It is usually a good idea to leave max_entities at 0 and instead scale the amount of entities generated by either changing the density spawnarg of the SEED itself, or changing the individual seed_density spawnargs for each target class.

falloff

Default: none. Defines a function that influences the probability that an entity will be generated. If set to none, all positions are equally likely, resulting in a square shape. All other values (except "func") create a ellipse defined by the corners of the SEED and distribute the entities inside that shape.

Can be overridden on a per-class basis with seed_falloff.

Possible values:

  • none - entities all over the square, none outside
  • cutoff - no falloff, but entities restricted inside the ellipse formed by SEED corners
  • linear - elliptical like cutoff, but with a linear falloff
  • power - elliptical like cutoff, but falloff based on distance ** N from the center
  • root - elliptical like cutoff, but falloff based on Nth root of distance from the center
  • func - a function calculated from parameters, see SEED - Falloff function for details and images.

Both power and root default to N == 2, but the value can be changed with the spawnarg "func_a".

The falloff spawnarg controls the distribution of the entities.

floor

Default: 0 (Off). If set to 1, all generated entities will be floored, that is their position will be adjusted so that they touch whatever is under them. They start out at the height the template entity is placed in the editor (it's origin/center). This works with dynamically created terrain or terrain consisting of irregular heights like when it was made from patches. See also seed_collide and seed_stack.

Finding the height where the entity is placed is a three-step process, and the "floor" (or seed_floor per class) disables/enables the second step. Here is how it works:

First, the entities are placed in whatever height you place the template in the editor. This way you can control their maximum height - entities will only sink down from there (unless the sink_min/sink_max spawnargs are negative, then entities will raise from this point on).

Step 1: With floor off: Placing entities at the editor height.
Step 1: With floor on: Placing entities at the editor height.

If "floor" is true, then the second step will place entities downwards until their origin touches something, or they hit the bottom of the SEED entity. Note that nothing happens when "floor" is off!

Note: Since entities are only "floored" downwards (in direction of gravity) until they hit the bottom of the SEED entity, they can float if f.i. the SEED entity is not sunk into terrain. In this case the entities will be either removed, or float in air, depending on the floating spawnarg.
Step 2: With floor on: Touch down to the terrain.

In the third step random sinking/raising of the entities is done according to the "sink_min" and "skin_max" spawnargs:

Step 3: With floor on: Random sinking.
Step 3: With floor off: Random sinking.

floating

Default: 0 (off). Boolean. v1.07 or newer

If off, entities that are floored and hit nothing will be removed. If on, the entities will "float" with their origin at the bottom of the SEED entity. Can be overridden on a per-class basis with seed_floating.

impulse_min/impulse_max

Only used for moveables, ignored for all other entities. Sets the minimum and maximum limits for an random impulse that is applied to each moveable when it spawns for the first time. Can be overridden on a per-class basis with seed_impulse_min and seed_impulse_max.

lod_scaling_limit

Default: 10. Integer.

The max_entities number scales slightly with the GUI setting "Object details". This is generally a good thing, as it allows the player to lower/raise the details according to his machine. However, in specific circumstances you want a SEED control exactly so many entities as specified. This spawnarg gives the limit under that the scaling for the entity count will be skipped.

Example: You want to a SEED that always creates exactly 16 crates: Set the following spawnargs:

"lod_scaling_limit" "16"
"max_entities"      "16"

lod_scale_density

Default: 1. Boolean.

The density scales slightly with the GUI setting "Object details". This is generally a good thing, as it allows the player to lower/raise the details according to his machine. However, in specific circumstances you want a SEED to create an entity pattern that is not influenced by the menu setting, f.i. because it looks out-of-place with too many or too little entities. This spawnarg gives you the ability to turn the scaling off.

Note: Should only be used very seldom.

map

Specifies the path to an image map (8 bit greyscale TGA or PNG), where black is 0% and white is 100% spawn probability. Can be overridden on a per-class basis with seed_map.

Examples:

"map" "spots"
"map" "spots, pattern, corner"   // multiple maps, one will be selected at random

If the map name does not start with "textures/seed/", then this will be added in front. Also, the extension is optional, if left off, PNG, TGA and JPG will be tried in that order. For example, "sinus" will load "textures/seed/sinus.png".

Note: The image base map is combined with whatever distribution you set with falloff, also inhibitors are still taken into account. See SEED - Image maps for more information and visual examples.

Can be overridden on a per-class basis with seed_map.

map_invert

Boolean, default "0" (false). If true, the image map will be inverted, that is black is 100% and white is 0% spawn probability. Can be overridden on a per-class basis with seed_map_invert.

This is very useful to combine two different entities, one uses the map normally and the other one inverted, so the result is that the second entity only appears where the first entity is missing.

map_ofs, map_ofs_x, map_ofs_y

Float, 0.0 .. 1.0, default 0. Specify either both X and Y (map_ofs) or the X or Y offset into the image map. Can be overridden on a per-class basis with seed_map_ofs. Example:

"map_ofs" "0.5,0"

map_scale, map_scale_x, map_scale_y

Float, default 1.0. Specify either both X and Y (map_scale) or the X or Y scaling factor of the image map. Can be overridden on a per-class basis with seed_map_scale.

Example:

"map_scale" "2.0,1.0"

max_entities

Default: 0. The maximum number of entities generated. If 0 (the default), then the number will be computed from the aprox. area the SEED covers, taking into account the density spawnarg. Can be overridden on a per-class basis with seed_max_entities.

Note that the SEED might generate fewer entities, f.i. when entities do not all fit into the SEED area, or the inhibitors inhibit too many entities.

probability

Default 1.0. Is used as default probability for entities to spawn on certain surface types, but only when you define seed_material_xyz spawnargs on the template/target entities. See there for an explanation on how this lets you spawn entities only on some surfaces but not on others.

randseed

Default: 0. The random seed. If not set or set to 0, a random value will be used (this is the recommended way, as it generates different results every time you start the map anew, but still keeps the entities when you f.i. save and then load a game).

If set to > 0, the random number generator will always generate the same sequence, so you get still randomly distributed results, but they are always the same.

remove

Default: 0. Boolean, if set to 1, the SEED will spawn all entities immediately (instead of spawning only the ones that are visible to the player) and then remove itself.

rotate_min/rotate_max

Default: 0 0 0 and 5 360 5. The range for each axis on how much the entity will be randomly rotated around it. In the order "Ymin Zmin Xmin" and "Ymax Zmax Xmax" (or pitch, yaw, roll (yzx), where the actual rotation order will be yaw, pitch, roll, e.g. "zyx").

The default makes entities yaw randomly between 0 and 360 degress around Z (turn), and pitch/roll between 0 and 5 degrees on the other two axes. Can also be overwritten on each class with seed_rotate_min and seed_rotate_max.

scale_min/scale_max

Default: Both 1.0 1.0 1.0. Floats, either one per axis in the order X Y Z or one float value, which will be used for each axis to scale axes-equally.

Can be overridden on a per-class case with seed_scale_min and seed_scale_max.

Note: Clipmodels cannot (yet) be scaled, so this only works properly for non-solid ("solid" "0") entities.

Examples:

"scale_min" "1 1 1"
"scale_max" "1 1 2"

Will scale the z-axis between 1.0 and 2.0.

"scale_min" "0.6"
"scale_max" "2.2"

Will scale the model in all three axis by the same amount, which varies between 0.6 and 2.2 of the original size.

sink_min/sink_max

Default: Both to 0. In Units.

Define the range (minimum/maximum) of how much entities randomly sink into the floor. Can be overridden on a per-class case with seed_sink_min and seed_sink_max. This is in addition to the "base line floor" of the entity, which is either determined by the placement of the template entity in DR (if seed_floor is false), or by the point where the entity origin touches the ground (if "seed_floor" is true).

This can f.i. be used to let all floored entities sink 1 or 2 units into the ground, to avoid that the entity, if placed on a step incline, sinks at one side into the ground, but stands "on air" on the other side.

See also [[#z_min/z_max|z_min/z_max].

Note: If sink_max is smaller than sink_min, it will be set to sink_min.

Usages:

  • sink_min = 0, sink_max = 0 - all entities are at the same "height"
  • sink_min = 5, sink_max = 5 - all entities sink 5 units "down"
  • sink_min = 1, sink_max = 15 - all entities sink between 1 and 15 units "down"
  • sink_min = -10, sink_max = -5 - all entities raise between 5 and 10 units "up" (note seemingly reversed numbers)

"Down" here refers to the gravity normal of the SEED, e.g. at the moment just down the z-axis.

spacing

Default: 0. Defines a minimum distance between placed entities. If set to > 0, implies collision check at creation time between all entities.

template

Defines an entity template by entityDef or model name - other options like count and skin are possible, too. Please see SEED - Templates via Spawnargs for the complete documentation.

This can be used instead of creating entities and linking them from the SEED, saving on entity count on map start.

wait_for_trigger

Boolean, default: 0. If set to 1, causes the SEED wait after generating the entity positions until it is triggered, and only then spawn the actual entities. Using the remove spawnarg will work correctly together with this, the SEED will first wait, then spawn, then remove itself.

z_invert

Boolean, default: false (0). If true, units will be placed only lower than z_min and only higher than z_max, but not between.

Can be overridden on a per-class basis with seed_z_invert.

z_min/z_max

Float, default -1000000 and +100000 (e.g. off for all practical purposes).

Sets the z-height variance bounds min/max. Entities will not placed lower than z_min and not higher than z_max, in absolute Doom units. Can be overridden per entity class with seed_z_min and seed_z_max.

See also z_invert to place units only outside the z_min/z_max band.

Spawnargs on the Inhibitors (atdm:no_seed)

falloff

Default is none. Defines the falloff for this inhibitor. Works in reverse to falloff on the seed, that is the inhibition is strongest at the center and falls off to the border.

Possible values:

  • none - entities are inhibited at the entire area
  • cutoff - no falloff, entities only restricted inside the ellipse formed by the corners
  • linear - elliptical like cutoff, but with a linear falloff
  • power - elliptical like cutoff, but falloff based on distance ** N from the center
  • root - elliptical like cutoff, but falloff based on Nth root of distance from the center

Both power and root default to N == 2, but the value can be changed with the spawnarg "func_a".

The falloff spawnarg controls the inhibition of the entities.

Note: Falloff "func" is not (yet) supported on inhibitors.

noinhibit

By default a NOSEED entity inhibits every entity class from spawning. With noinhibit you can selectively allow some entities to spawn regardless. Multiple can be given with "noinhibit1" etc. Example:

 "noinhibit"  "atdm:nature_grass"
 "noinhibit1" "atdm:nature_dense"
 "noinhibit2" "atdm:nature_bush_small"

This lets you inhibit every entity except the ones listed.

Notes:

  • It is not yet possible to make a distinction based on the model of a func_static, so listing "func_static" would allow all func_static's, regardless of their model.
  • If inhibit is set, noinhibit will be ignored.

inhibit

By default a NOSEED entity inhibits every entity class from spawning. With inhibit (if set) you can selectively only inhibit the listed entity classs. Multiple can be given with "inhibit1" etc. Example:

 "inhibit"  "atdm:nature_pine"
 "inhibit1" "atdm:nature_rock"

This lets you inhibit only these entity classes listed.

Note: It is not yet possible to make a distinction based on the model of a func_static, so listing "func_static" would inhibit all func_static's, regardless of their model.

Spawnargs on Targets

These spawnargs can be set on the entities that the SEED targets:

seed_base_density

Default: 1.0. Will be multiplied with seed_density to arrive at the final density. Used to adjust the default sensity (for premade entities) without the mapper having to know this value, she can always assume 1.0 is the default density and tweak this variable more easily. Should only be used if you create new pre-made random generators.

seed_bunching

Default: What the SEED specifies with bunching. Number from 0.0 to 1.0, giving the probability that a randomly created entities "bunches" up with an already existing entity.


seed_color_min/seed_color_max

Sets the random color variance bounds min/max for all entities from this class. The final entity color is between "seed_color_min" and "seed_color_max". Works only on light entities or entities that use a skin with a colorable material.

Example:

 "seed_color_min"   "0.7 0 0.2"
 "seed_color_max"   "0.8 0.5 0.7"

This will result in entities ranging from dark plum to a light purple.

seed_combine

Default: 1 (true). If set to 0, this SEED will never try to combine rendermodels of entities of this class together, this will result in much slower rendering.

seed_cull_range

Default: To whatever the SEED specifies, which defaults to 150 units. Entities further away from the player than hide_distance (as defined on each LOD entity) + seed_cull_range will be removed from the game world. When they come closer to hide_distance + (seed_cull_range / 2), they will respawn automatically.

To disable culling of entities set to 0.

seed_density

Default: 1.0. A factor multiplied with the density of the SEED itself, used to calculate the number of entities generated if max_entities (on the SEED) or seed_max_entities (on the class) is 0.

Note: The density is slightly influenced by the menu setting "Object Detail". Make sure you test your map with the "Normal" setting. If you can, test as well as the "Lowest" and "Highest" to get a feeling for the extremes that can appear.

seed_falloff

Default: Whatever the SEED specifies, or none. Defines a function that influences the probability that an entity will be generated. If set to none, all positions are equally likely, resulting in a square shape. The other values (except "func") create a ellipse defined by the corners of the SEED and distribute the entities inside that shape.

Possible values:

  • none - entities all over the square, none outside
  • cutoff - no falloff, but entities restricted inside the ellipse formed by SEED corners
  • linear - elliptical like cutoff, but with a linear falloff
  • power - elliptical like cutoff, but falloff based on distance ** N from the center
  • root - elliptical like cutoff, but falloff based on Nth root of distance from the center
  • func - a function calculated from parameters, see SEED - Falloff function for details and images.
The falloff spawnarg controls the distribution of the entities.

seed_floor

Default: 0 (Off). If set to 1, all entities of this class will be floored, that is their position will be adjusted so that they touch whatever is under them. This works with dynamically created terrain or terrain consisting of irregular heights like when it was made from patches. Note that entities are only placed downwards until they hit the bottom of the SEED entity - the seed_floating spawnarg then controls whether these entities will be removed or float.

seed_floating

Default: 0 (off). Boolean. v1.07 or newer

If off, entities that are floored (seed_floor is "1") and hit nothing, will be removed. If on, the entities will "float" with their origin at the bottom of the SEED entity.

seed_map

Specifies the path to an image map (8 bit greyscale TGA or PNG), where black is 0% and white is 100% spawn probability.

Example:

"seed_map" "spots"
"seed_map" "spots, pattern, corner"   // multiple maps, one will be selected at random

If the map name does not start with "textures/seed/", then this will be added in front. Also, the extension is optional, if left off, PNG and TGA will be tried in that order. For example, "seed_sinus" will load "textures/seed/seed_sinus.png".

Note: The image base map is combined with whatever distribution you set with falloff, also inhibitors are still taken into account. See SEED - Image maps for more information and visual examples.

seed_map_invert

Boolean, default "0" (false). If true, the image map will be inverted, that is black is 100% and white is 0% spawn probability.

This is very useful to combine two different entities, one uses the map normally and the other one inverted, so the result is that the second entity only appears where the first entity is missing.

seed_map_ofs, seed_map_ofs_x, seed_map_ofs_y

Float, 0.0 .. 1.0, default 0. Specify either both X and Y (seed_map_ofs) or the X or Y offset into the image map. Example:

"seed_map_ofs" "0.5,0"

seed_map_scale, seed_map_scale_x, seed_map_scale_y

Float, default 1.0. Specify either both X and Y (map_scale) or the X or Y scaling factor of the image map. Example:

"seed_map_scale" "2.0,1.0"

seed_material_xyz

Defines the probability that an entity will spawn on the given surface type. (Any surface types that TDM has can be used, but it is not possible to distinguish between material shader names or textures used). If any seed_material_xyz spawnarg is used, the "seed_probability" spawnarg will also be queried and used. Example:

 "seed_material_grass" "1.0"
 "seed_material_dirt" "0.5"
 "seed_probability" "0"

This would spawn the entity always on grass, only half the time on dirt, and never on anything else (the "seed_probability" "0" governs this).

The other way round might sometimes be easier:

 "seed_material_stone" "0"
 "seed_material_metal" "0"
 "seed_probability" "1.0"

Meaning: Never spawn on metal or stone, but always on anything else.

Note: The probability calculated/set from the surface type (material) is multiplied with the other probabilities. This means you can have a plant that never grows on stone or metal, and yet where it grows will still influenced by f.i. an image map.

seed_max_entities

Default: 0. The maximum number of entities generated. If 0 (the default), then the number will be computed accordingly to the seed_density of this class and the max_entities from the SEED.

If greater than zero, only so many entities will be generated and the spawnarg density will be ignored for this class. In this case the spawnargs seed_score will be used for each class.

Note that the SEED might generate less entities than specified, f.i. when entities do not all fit into the SEED area, or the inhibitors inhibit too many entities.

seed_noinhibit

Default: 0 (false). Boolean.

If set to 1 (true), entities of this class will not be inhibited by any inhibitor linked to this SEED. Can be used f.i. to add grass and trees to an area, but make it so that trees are inhibited in certain areas, but grass never is.

For more control over non-inhibition of entities, see the section #Spawnargs on the Inhibitors (atdm:no_seed).

seed_offset

Some models (for example "boletus_tall.lwo") have their origin not at their base. This means if the entity is placed in the map after flooring it, it will sink into the floor. One could correct for this by setting the appropriate seed_sink_min/seed_sink_max spawnargs, but this is a bit cumbersome, and also does not account for shifts in X/Y direction.

The seed_offset spawnarg simply offsets the finally placed entities by the given number of units. F.i. for "boletus_tall.lwo", the value is "0 0 6", displacing the model 6 units up, so the mushroom does not sink into the floor.

seed_probability

Default 1.0. Is used as default probability for entities to spawn on certain surface types, but only when you define seed_material_xyz spawnargs. See there for an explanation on how this lets you spawn entities only on some surfaces but not on others.

seed_rotate_min/seed_rotate_max

Default: Same as the SEED specifies (which defaults to 0 0 0 and 5 360 5).

The range for each axis on how much the entity will be randomly rotated around it. I the order "Ymin Zmin Xmin" and "Ymax Zmax Xmax" (or pitch, yaw, roll (yzx), where the actual rotation order will be yaw, pitch, roll, e.g. "zyx").

The default makes entities rotate randomly between 0 and 360 degress around Z (turn), and tilt between 0 and 5 degrees on the other two axes. Use 0 0 0 and 0 360 0 for entities that should be perfectly upright.

seed_score

Default: 1 (but is ignored). If max_entities from the SEED is set, then all scores of all classes will be added together, and the final entity count for this class is the proportion of its score to the sum.

E.g.if you have three classes, with score 10, 20 and 30, then the first class will generate 1/6 of all entities (10+20+30=60, and 10/60 => 1/6), the second class 2/6 of all entities, and the third class 3/6 (e.f. 1/2) of all entities.

The spawnarg density will be ignored for this class.

Note that the SEED might generate less entities than specified with max_entities, f.i. when entities do not all fit into the SEED area, or the inhibitors inhibit too many entities.

seed_scale_min/seed_scale_max

Default: Both 1.0 1.0 1.0. Floats, either one per axis in the order X Y Z or one float value, which will be used for each axis to scale axes-equally.

Note: Clipmodels cannot (yet) be scaled, so this only works properly for non-solid ("solid" "0") entities.

Examples:

"seed_scale_min" "1 1 1"
"seed_scale_max" "1 1 2"

Will scale the z-axis between 1.0 and 2.0.

"seed_scale_min" "0.6"
"seed_scale_max" "2.2"

Will scale the model in all three axis by the same amount, which varies between 0.6 and 2.2 of the original size.

seed_spacing

Defines a minimum distance between placed entities of this class. Overrides the default setting from "spacing" on the SEED. If set to > 0, implies collision check at creation time between all entities of this class.

seed_sink_min/seed_sink_max

Default: Both to what the SEED specifies with sink_min and sink_max. In Units.

Define the range (minimum/maximum) of how much entities randomly sink into the floor. This is in addition to the "base line floor" of the entity, which is either determined by the placement of the template entity in DR (if "seed_floor" is false), or by the point where the entity origin touches the ground (if "seed_floor" is true).

This can f.i. be used to let all floored entities sink 1 or 2 units into the ground, to avoid that the entity, if placed on a step incline, sinks at one side into the ground, but stands "on air" on the other side.

Note: If seed_sink_max is smaller than seed_sink_min, it will be set to seed_sink_min.

Usages:

  • seed_sink_min = 0, seed_sink_max = 0 - all entities are at the same "height"
  • seed_sink_min = 5, seed_sink_max = 5 - all entities sink 5 units "down"
  • seed_sink_min = 1, seed_sink_max = 15 - all entities sink between 1 and 15 units "down"
  • seed_sink_min = -10, seed_sink_max = -5 - all entities raise between 5 and 10 units "up" (note seemingly reversed numbers to make min smaller than max)

"Down" here refers to the gravity normal of the SEED, e.g. at the moment just down the z-axis.

seed_watch_brethren

Boolean, default: 0 (false).

If set, instead of taking this entity as a template to create new entities, this tells the SEED entity that all entities inside the SEED and of the same entity class as this one should be "watched" over by the SEED.

That means it will add these entities to its entity watch list, and do the LOD changes as well as cull/respawn them if nec. It will also optionally combined multiple entities into one.

See SEED - Watching entities for a longer explanation with images and reasons why to use this.

The other "seed_*" spawnargs (like seed_floor, seed_spacing etc.) are ignored on the target entity. The only relevant spawnargs are lod_* and hide_distance - these cause the LOD system to kick in. Also, do not forget to put a hide_distance on the target entity, or the SEED would never cull the entities it watches.

skin

Lily model with original plus two other skins

Setting a skin on the entity will use this skin on all entities created from this template. If this entity has seed_watch_brethren set, then the individual skin spawnarg is ignored, instead the skins of all entities being watched over will be preserved.

To get multiple, random skins, use one of the following methods:

  • add multiple skin spawnargs with suffixes like skin, skin_1, skin_2 etc. Note that the final skin will be randomly chosen, but distributed equally. E.g. if you have three skin spawnargs, roughly 1/3 of all entities will get the first skin, 1/3 the second and 1/3 the third.
  • OR use the random_skin spawnarg on the entities targeted by the SEED (skins will be distributed evenly with this method, too)
  • OR add multiple copies of the same entities and link them from the SEED. Each copy can have a different (or possible more, see above) skin spawnarg. You can then use seed_density to influence the distribution of the different skins.

Note: If you want random skins plus the original, unskinned model, simply omit the skin spawnarg and just set the skin_X spawnargs, the original skin will then be added automatically.

seed_z_invert

Boolean, default: false (0). If this is true, units will be placed only lower than seed_z_min and only higher than seed_z_max, but not in between.

seed_z_min/seed_z_max

Float. Default -1000000 and +100000 (e.g basically off)

Sets the z-height variance bounds min/max. Entities will not placed lower than seed_z_min and not higher than seed_z_max, in absolute Doom units.

See also z_invert to place units only outside the seed_z_min/seed_z_max band.

Other spawnargs

You can of course use other LOD spawnargs on the entities that the SEED creates. See LOD for a list.

In addition, possible are:

  • "solid" "0" - this makes the generated entities nonsolid, even when they are combined into one entity.
  • "noshadows" "1" - this turns off shadows for all copies and LOD stages of this entity.