OBJECTLIST

Revision as of 18:57, 11 April 2023 by Qjimbo (talk | contribs) (Text replacement - "\bFoundation(?![\w{}])" to "{{Foundation}}")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Object Lists

An object list is a file that controls the generation and placement of objects across planetary surfaces in No Man's Sky. Some of these are biome-specific and are set by a planet's BIOME.MBIN file, others are universal and set via METADATA/SIMULATION/SOLARSYSTEM/BIOMES/BIOMEFILENAMES.MBIN. In version 1.1x 02 foundation orb.png Foundation, there are over fifty different object list files. Some of the uses of these are:

  • Four object lists per biome, these are found in the biome specific folders at METADATA/SIMULATION/SOLARSYSTEM/BIOMES and are labeled as FULL, MID, LOW, and DEAD. These correlate directly to the flora life level of the planet.
  • METADATA/SIMULATION/SOLARSYSTEM/BIOMES/OBJECTS/LEVELONEOBJECTS/FULLSAFE.MBIN controls the placement of interactive, typically non natural objects such as Knowledge Stones and crates.
  • Specific lists for cave and underwater biomes.
  • Lists exclusively containing biome-specific resources.
  • Lists exclusively containing rare resource objects such as Gravitino Balls.

Each object list file is structured the exact same way and can technically be used to place any type of object, no matter it's original intended use. It is also worth noting that every object list can also have up to four variations to correlate with the flora life level of the planet, even though most entries do not use this feature in vanilla.

Sections

Each object list file is split up into the same five sections. These sections have a direct effect on the distance that the objects are rendered at, so they should be used appropriately:

  • Creatures This section is unused, as creatures are now spawned through the ecosystem files.
  • Landmarks This section is intended for objects that are relatively large and need to be visible from far away, for example trees or structures.
  • Objects This section is intended for objects that don't need to be visible from as far away, but still need to be seen from a reasonable distance. This section is typically used for things like bushes or smaller boulders.
  • DetailObjects This section is used for small objects that only need to be seen from close up. This usually includes grass, small plants, and very small rocks and pebbles.
  • SelectableObjects This section is unused, but would be for storing parts related to building generation.

Object Spawn Data

Each section can contain an essentially unlimited number of GcObjectSpawnData.xml components, each one correlating with a type of object and containing a very large number of properties to control the placement of those objects. It is worth noting that each entry equals one unique object variation, so if you want two types of trees from the same procedural pool for example, you would need to put two separate entries pointing to the same tree pool. A description of each property used by each entry is as follows:

  • Type: This can be set to one of two options, Instanced, which provides improved performance for large numbers of matching objects at the expense of interactions and complex procedural generation (you will want to use this one whenever you can); or Single, which allows for more complex interactions with multiple states and rendering objects made of many parts (you should only use this one when you absolutely need it)
  • Resource: This contains a Filename, where you put the path to the scene that you want to load and a Seed that will be applied to that model. When UseSeedValue is set to false, the model will instead use a unique seed generated based of the entry's position in the list and the planet that it is being placed on (This is usually set to false)
  • AltId: this is used to override the procedural generation of an object with a specific variation instead. To use it, you need to list all of the specific parts you want using their associated Ids from the model's descriptor. It is important to understand that having anything at all in the AltId field will completely disable procedural generation for that entry, and that all parts you want to have need to be listed. You can list combinations of parts that would not be possible with procedural generation, and whatever combination of parts you choose will be what is used every time. An example of a good list of AltIds would look like this: "_TRUNK_WEIRD _TRUNKM_NEWH _LEAF_H2B ". Leaving this blank will allow procedural generation as normal.
  • ProceduralTextures: This is used to set specific colours and options to the procedural textures on the model.
  • PlacementTileType: This is used to determine the terrain voxel type that the object will spawn on. Valid options for the TileType field are Air, Base, Rock, Mountain, Cave, Dirt, Liquid and Substance. Not all of these options will necessarily allow the object to actually spawn.
  • Placement: This is used to select the noise layer that the game uses to place the object. It can be set to anything, so long as there is a matching entry in the METADATA/SIMULATION/SOLARSYSTEM/BIOMES/PLACEMENTVALUES/SPAWNDENSITYLIST.MBIN file. Each of these noise values is tuned usually for specific types of placements, so using different ones can provide very different results. Each noise layer is also consistent, no matter the object using it. So if you have multiple types of trees you can set them to use the FOREST placement and they will all be placed in a forest together. When enabled, the Seed value will be applied to the noise, so if you want two different types of trees to be in their own forests, you would just enable seeds for both of them and set them to different values.
  • PlacementPriority: When two objects are going to be spawned too close to each other, one might not spawn. This setting is to control what has priority when that happens. The options are Low, Normal and High.
  • PlacementCoverage: This sets the noise threshold that the object can be placed in, 0 is never and 1 is always.
  • PlacementFlatDensity: This sets the density of the objects on flatter surfaces. Closer to 1 means that the objects will be closer together.
  • PlacementSlopeDensity: This sets the density of the objects on steeper surfaces. Closer to 1 means that the objects will be closer together.
  • PlacementSlopeMultiplayer: This sets the threshold for what counts as steep when referenced by the above values.
  • RestrictionsMinHeight: This sets the minimum altitude the object can spawn at. Measured in U (meters)
  • RestrictionsMaxHeight: This sets the maximum altitude the object can spawn at. Measured in U (meters)
  • RestrictionsRelativeToSeaLevel: This sets whether the altitude settings are relative to sea level. Having this set to true can be particularily useful for spawning underwater objects at certain depths.
  • RestrictionsMinAngle: This sets the minimum steepness of terrain that the object can spawn on.
  • RestrictionsMaxAngle: This sets the maximum steepness of terrain that the object can spawn on.
  • FadeMinRegionRadius: This sets the minimum radius for a region in which the object can fade at it's draw distance.
  • FadeMaxRegionRadius: This sets the maximum radius for a region in which the object can fade at it's draw distance.
  • FadeMaxImposterRadius: This sets the maximum distance that the object's imposter will be visible. See Imposters.
  • FadeInStartDistance: This sets the distance at which the object will start to fade in.
  • FadeInEndDistance: This sets the distance at which the object will finish fading in.
  • FadeInOffsetDistance: This sets an additional distance offset for the fade in effect. If it is set to 0 the object will use the exact distances set.
  • FadeOutStartDistance: This sets the distance at which the object will start to fade out. If this is set to a very high number, the object will be prevented from rendering past a certain distance regardless due to the hard limits associated with the section of the objectlist it is under.
  • FadeOutEndDistance: This sets the distance at which the object will finish fading out.
  • FadeInOffsetDistance: This sets an additional distance offset for the fade out effect. If it is set to 0 the object will use the exact distances set.
  • MatchGroundColour: When set to true, this will force the object's primary colours to match the colour of the specific terrain voxel it is placed on. This is useful for grass to blend in when being placed on certain surfaces.
  • SwapPrimaryForSecondaryColour: When set to true, this will force the object's primary colours to switch to the secondary options. An example of where this is useful is when you have a tree variant that you want to have a different leaf colour compared to the plants around it, while still being cohesive.
  • SwapPrimaryForRandomColour: When set to true, this will force the object's primary colours to switch to a random option from the same palette. An example of where this is useful is when you have a tree variant that you want to have a different leaf colour compared to the plants around it in a way that stands out.
  • PositioningMatchGroundNormal: When set true, the object will be rotated to account for the angle of the surface it is spawned on.
  • PositioningMinScale: This sets the minimum scale of the object. This is multiplied against the scale that the model already is in it's scene.
  • PositioningMaxScale: This sets the maximum scale of the object. This is multiplied against the scale that the model already is in it's scene.
  • PositioningMinScaleY: This sets the minimum for an additional multiplication of object's scale that is applied exclusively on the Y (vertical) axis.
  • PositioningMaxScaleY: This sets the maximum for an additional multiplication of object's scale that is applied exclusively on the Y (vertical) axis.
  • PositioningSlopeScaling: This sets the scale of objects spawned on slopes. This is applied in addition to the other scaling settings.
  • PositioningPatchEdgeScaling: This sets the scale of objects spawned on the edge of a group. This is usually set to zero in vanilla files and is applied in addition to the other scaling settings.
  • PositioningMaxXZRotation: This sets how far an object can be tilted. It is applied in addition to PositioningMatchGroundNormal when that option is set to true.
  • ObjectAutoCollision: When this option is set to true, the object will have a box collider generated based off it's bounds (furthest extent in each direction). Generally, you would want this option when an object needs collisions but does not have them included in its model. It is worth understanding that because the collider is based off the bounds, it will almost always be larger than it needs to be, and the more complex the object the less accurate the collider will be.
  • ObjectCollideWithPlayer: When this option is set to true, the player will collide with any colliders on the object while on foot, and in their ship. In version 1.2x Pathfinder, this option will only effect the player on foot. For larger and more complex objects like trees that are using ObjectAutoCollision, it is usually better to have this option disabled.
  • ObjectCollideWithPlayerVehicle [Added in Pathfinder]: When this option is set to true, the player will collide with any colliders on the object while in an exocraft or their ship.
  • DestroyedByPlayerVehicle [Added in Pathfinder]: When this option is set to true, the object will be destroyed upon colliding with the player's exocraft or ship. This is good to enable on small plants that have collision. Enabling this option on large objects like trees can prevent the player's ship from getting caught, but leaving it off can be used to create obstacles that exocraft need to avoid.
  • ObjectShearWindStrength: Sets how much the object will be distorted by wind blowing. This usually used on grass and small plants, and generally looks bad on anything bigger than that.
  • DestroyedByVehicleEffect [Added in Pathfinder]: This sets the effect used when the object is destroyed by vehicle collision. Whatever is set here should match the Id of an entry in the METADATA/EFFECTS/PLANETEFFECTS.MBIN table.