Tags and flags

Last modified by Volodymyr Boichuk on 2024/06/12 14:45

A list with the tags, flags and groups you can give an object and what they do.
 

Connection - tags

adspot 

  • Used for highway adsigns. Tag a connection (con_adspot01) with adspot <n> (tags = adspot 1). The game will connect adsigns here.

  • Used for highway adsigns. -> Adsign Holder (Wares)

aimtarget

  • Weapons (both NPC and player, both front-mounted and turrets) will aim at a connection with this tag if there is one.
  • Use for objects and modules that have empty space at their centre.

anim_fence

  • Used for docking bays.
  • This tag should be on the parts that animate to open/close on-foot access to the dock.

anim_floor

  • Used for docking bays.
  • This tag should be on the parts that animate to store/retrieve a ship into/from internal storage.

attachment

  • Required in components that will be randomly attached to the surface of an object.
  • The macros for these components are referenced in libraries/objectspawnrules.xml, in the <regions> section.
  • Example: crystal that will be placed on asteroids.
  • For additional info see Attachment.

bomblauncher

  • Compatibility tag.
  • Used for the spacesuit.

boron

  • Compatibility tag.
  • Tag defining the ability to mount Boron weaponry.
    Needed as they are half the size in X4 compared to previous weapons.
     

component

  • This tag defines which connection is used to connect the object (child) to another object (parent).
  • Other tags in this connection define the compatibility (eg small / engine / etc.).
  • Can only be on one connection in a template (like class= <...> flag).

condensatedispenser

  • Used for the Sohnen landmark in pirate dlc to spawn inventory crates at the right position.

corner

  • Used to connect the corners to the dockareas.
     

countermeasures

  • At the connection tagged with this word, the countermeasure effect will be spawned.
  • Only one connection per S/M ship!
  • Large and extra large vessels need more than one connection.

crate

  • Tag to define that this location is used to spawn a crate.

crate_s

  • Size compatibility tag for the crates.

crate_m

  • Size compatibility tag for the crates.

crate_l

  • Size compatibility tag for the crates.

crate_hidden

  • Crate clearly hidden (e.g. stuck below a table so that the player has to crouch to be able to see it, on top of a closet so you need to jump, or put in such a way that it's behind other objects).

crate_inplainsight

  • Crate is clearly visible, you can't miss it.

crate_ontable

  • Crate is located on a table, used in 'stranded'.
    This is a lot more specific than the earlier 3 tags, but still useful I think.
    Can also be used in addition to the "crate_inplainsight" and "crate_subtle" tags to better define where to find the crate.

crate_subtle

  • Crate is not really hidden, but placed in such a spot that it's easy to miss if you aren't paying attention.

default

  • Compatibility tag.
  • Used on the spacesuit for a weapon (the default laser).
    Bad named tag, should be just "laser" or similar.

deprecated

  • Connection is kept for legacy/savegame reasons but should not be used any more.

dockingarea

  • The connection at which a dockingarea macro will be connected to the template.

dockingbay

  • The connection at which a dockingbay macro will be connected to the template.

dockpos

  • The connection at which ships are being connected to the dockingbays.

dockpos_pivot

  • The connection around which the "dockpos" connection gets rotated around.
  • For the ability to dock in the opposite direction of flight on the dockingbays.

dumbfire

  • Compatibility tag.
  •  Tag describing a weapon that fires dumbfire missiles.

dynamicroom

  • Defines the connection where to create dynamic rooms on the fly.
  • Used in combination with the "window" tag.

energy

  • Compatibility tag.
  • Tag describing an energy weapon (e.g. beam weapons).

engine

  • Compatibility tag.
  • Main tag for engines.
  • Connections with this tag will be able to be equipped with engines. The corresponding tag has to exist in the engine template, too.

enginealign

  • A connection with the name “enginealign” and tags ="enginealign" is used to align rotating engines to their idle position.

exclusionzone

  • A connection to define a direction in which the code will not build modules any more. 
  • Needed for dockareas to keep a clear path for ships to approach.
  • Y axis in 3dsMax (z in game) is the direction where stuff is forbidden to be built (starting from the connection centre).
  • An additional tag has to specify the maximum supported ship size (e.g. ship_m).

external

  • Compatibility tag.
  • This tag is needed to tell a shield generator (on a capital ship only) if it is protecting the ship itself.

extralarge

  • Compatibility tag.
  • Tag describing an object that fits onto an XL-sized ship.

functionactivation

  • Sends animation triggers depending on hull state (activate/deactivate).
  • Used in datavaults to trigger an animation based on hull state.

geometryinvisible

  • This tag is used for the light source bounding box to see exported lights in game.
  • Lightsources, XUOmnilights that will later be added to an effect need a bounding box in the max scene with following tags to show the light source in game = nocollision geometryinvisible
  • Avoid extreme bounding box sizes or it will mess the LOD system-rules.
  • Tech notes: This will cause the part to get into ProcessGeometry, where it will do the frustum-culling and LOD-checks (which can early-out with "false"). If it passes these checks, it will not queue the drawcall but still return true (pretending it did queue the drawcall) so that the attached lights/effects get a chance to be rendered.

guided

  • Compatibility tag. 
  • Tag describing a weapon that fires guided missiles.

heavy

  • Compatibility tag. 
  • Tag describing a weapon with a high dps but low fire rate or low dps and high fire rate (e.g. plasma cannon and gattling gun).

highpower

  • Compatibility tag.
  • Tag describing Terran weapons with a higher dps than normal weaponry.

hittable

  • Compatibility tag.
  • Tag describing surface elements (medium shield generators/turrets), which shall have collision (are hittable).
    Used on medium shield generators/ turrets, as we do have a variation with collision (on capital ships/stations) and one without (used on medium ships).
  • Shield generators with this tag can only be used on L/XL ships and stations.
  • Opposite tag is "unhittable".

immediate

  • Used together with functionactivation
  • Aborts currently running animations when triggering.

indirect

  • Used together with location_exit in which case the transporter leads to the outside of the ship but there is no direct walk path, such as when an elevator is needed to reach the dockingbay floor.
  • This tag is used so we can continue to have the location_exit behaviour such as excluding that exit from the transporter list while in space.

interiorprops

  • Tag to define at which connection interior props are spawned.
    These are used on dockareas to have one set of props as an additional layer in the scene.
  • Used when MD is not needed to find and place the object.

launchpos

  • Ship navigation helper.
  • Position that ships will first move to when undocking before AI takes over.

large

  • Compatibility tag.
  • Tag describing an object that fits onto an L-sized ship.

lookatanim

  • Tag used for animated flaps in engines.

longrange

  • Compatibility tag.
  • Tag used for long range scanner.

mandatory

  • Compatibility tag.
  • Tag used for weapons which must be installed on a ship before it can be operational.
    (Introduced with the "Asgard" ATF Battlehip and its "spinal mounted" weapon, also used on the "Astrid" and "Manticore")

medium

  • Compatibility tag.
  • Tag describing an object that fits onto an M-sized ship.

mining

  • Compatibility tag.
  • Tag describing an object that has something to do with mining (e.g. mining laser, asteroid scanner).

noshield / noturret

  • Used in combination with compatibility tags.
  • Noshield means the group can have turrets only, and noturret means the group can have shields only - slightly backwards, but it works for what we need.

object

  • Compatibility tag.
  • Tag used for scanners that scan objects, such as ships and stations.

permanent

  • Compatibility tag.
  • Tag used to describe an object that is not upgradable (prime example: forward-mounted weapons on capital ships).
  • This tag is usually assigned in the database as a property, the connections do not carry a "tags = notupgradable".

platformcollision

  • If a connection has this tag, its child will have its collision only enabled when it's on a platform.
  • This tag behaves like "nocollision" when the object is in space.

prop

  • Used to attach props to rooms.
  • Used instead of "interiorprops" when MD needs to be able to find and use the connection to place props.
  • Used in Boso Ta's office

prop_roomdeco

  • Used to attach props to rooms.
  • Use instead of "interiorprops" when MD needs to be able to find and use the connection to place props.
  • Used in timeline hub to place unique prop set  per living quarter.

prop_sign

  • Used to attach props to rooms.
  • Use instead of "interiorprops" when MD needs to be able to find and use the connection to place props.
  • Used in timeline hub to place graffiti

repair

  • Compatibility tag.
  • Used on the spacesuit for the repair laser.

require_docked

  • When paired with the 'trigger_interact' tag, restricts ability to interact to when the ship it's on is docked at a walkable docking bay.
  • All 'trigger_interact' parts (in the same group) need this tag individually, unless you want some parts to still be clickable.
  • All "require_docked" tagged parts will be set to the "inactive" animation state, when not docked.

restricted

  • When paired with the 'window' tag, restricts generic interiors using this window connection.
  • Interiors told to use window connections on this component specifically are still allowed to use it e.g. use windows on THIS dockarea.

room_snap

  • Used to connect two rooms together in the engine.

scanner

  • Compatibility tag for scanners.
  • With this tag scanners can be connected. The corresponding tag has to exist in the scanner template, too.
  • Scanners have additional tags to define which kind of scanner they are (object/long range/mineral).

shield

  • Main tag for shields.
  • With this tag shields can be connected. The corresponding tag has to exist in the shield template, too.
  • Shields have additional tags to define which kind of shield they are (small/medium/large/extra large/external).

ship_X

  • This tag is used in combination with the "exclusionzone" tag to define the size of the zone.

sign

  • When combined with trigger_interact, lets this part be selected without an actual interaction. The component's localized name will be displayed at the crosshair.

small

  • Compatibility tag. 
  • Tag describing an object that fits onto an S-sized ship.

snap

  • Tag to determine points where station parts can be connected to each other.
  • Connection orientation matters, local y+ axis needs to match with other module.

snap_aligned

  • Aligns a sequence of vertical connection modules.

spacesuit

  • Compatibility tag for the spacesuit engines.
  • Works in combination with the "engine" tag.

speeddependent

  • Is used for speed driven animations (setup by an artist) which are controlled by code (reverse thrust flaps/airbrake).
  • Used for engine jet control units, it also prevents local lights from being queued for that part.

speedscale

  • Is used for speed driven scaling controlled by code (engine flames/thruster flames).
  • Only used for scaling the object from 0-1 on all axis.

speedscale_forward

  • Is used for speed driven scaling controlled by code (engine flames/thruster flames).
  • Only used for scaling the object from 0-1 on the -y axis (in 3dsMax).

standard

  • Compatibility tag.
  • Tag describing a weapon with an average dps and fire rate (e.g. laser and shotgun).

symmetry

  • Tells the game this connection is to be considered for symmetrical setup, e.g. for weapons.
  • Documentation of how it works :
  •        +-+-+-+ 
            |1|4|9| 
           +-+-+-+ 
            |2|5|8|
           +-+-+-+
            |3|6|7|
           +-+-+-+
    Symmetry values have two purposes: sorting and pairing. For presentation purposes, connections are sorted first by their box number in the diagram above, then by their index value within that. Index values are in numerical order for boxes 1-5, but reversed for boxes 6-9 so that an index value of 1 is sorted last in these boxes. The box number and index value are stored in the upper byte of the symmetry value. The lower byte of the symmetry value is irrelevant for sorting, since the upper byte will always take precedence, and stores the equivalent value for the connection's symmetry partner. The partner connection can be found by simply swapping the two bytes and looking for a connection of the same "type" with that as its symmetry value. Meaning of "type" depends on context.

    - Reading many tags is relatively slow and few connections need it, so the rest will be skipped if there is no "symmetry" tag.
    - The following symmetry group tag combinations correspond to the boxes above:
    1. "symmetry_left" + "symmetry_top"
    2. "symmetry_left"
    3. "symmetry_left" + "symmetry_bottom"
    4. "symmetry_top"
    5. no symmetry group tag
    6. "symmetry_bottom"
    7. "symmetry_right" + "symmetry_bottom"
    8. "symmetry_right"
    9. "symmetry_right" + "symmetry_top"
    - Symmetry index tags are "symmetry_1" through "symmetry_15" with no index tag being equivalent to an index value of 0.
    - Connections in box 5 can be ordered using the index value but will not have a symmetry partner.
    - Defined behaviour for connections which do not have a symmetry partner is to return themselves as partner.
    - Connections with no symmetry data have symmetry value 0x5050 and are considered unordered as well as having no partner.
    - Sorting can be skipped if all connections of a given "type" are unordered.
     
  • If you want something properly sorted AND paired it always needs a symmetry tag, a tag for the box, and an index tag - missing out the box tag means it gets sorted (into box 5) but not paired, missing out the index tag does the same thing but in any other box.
  • Below tags are then used to define either the location, or the symmetry group.

  • !! symmetry_1 needs to start on the outermost weapon. Index number increases the closer you get to the cockpit/middle of the ship !!

symmetry_left

  • see above, "symmetry" 

symmetry_right

  • see above, "symmetry" 

symmetry_top

  • see above, "symmetry" 

symmetry_bottom

  • see above, "symmetry" 

symmetry_1 ... symmetry_15

  • symmetry index tags to sort items within a group(box)

IMPORTANT : Make sure that all weapon connections that are defined with symmetry have the same compatibility tags!

ter_energycells

  • Compatibility tag.
  • Used to make the Terran energy cells production modules only connect to its own kind (only for the station generation).

todock

  • Ship navigation helper.
  • Position that ships will fly to before initiating automatic docking movement.

torpedo

  • Compatibility tag.
  • Tag describing a weapon that fires torpedo missiles.

transformer

  • Functionality tag.
  • Tag describing the part that holds the animations for transformable ships, e.g. the builder ship.

turret

  • Compatibility tag for turrets.
  • With this tag a turret can be connected. The corresponding tag has to exist in the turret template, too.
  • Turrets have additional tags to define which kind of turret it is (medium/large/heavy/energy/mining/dumbfire/guided).

uianchor

  • Used to locate the "bubble" for the player HUD.
  • Has to be at the exact same position as the camera when player is seated. (animation state "cockpit_entered")

unhittable

  • Compatibility tag.
  • Tag describing surface elements (medium shield generators, turrets), which shall not have collision (are not hittable).
    Used on medium shield generators and turrets, as we do have a variation with collision (on capital ships and stations) and one without (used on medium ships).
  • Shield generators with this tag are only used on medium ships.
  • Opposite tag is "hittable".

useobjectspeed

  • Used for reverse thrust animations in engines.
  • Only has an effect in combination with the 'speeddependent' tag (see above).
  • If set, the part can be oriented in an arbitrary rotation and will be animated depending on the relative speed of the component.

useobjectrotation

  • Used for IK animated parts in engines/ships.
  • If set, the IK animator will not use the linear (forward/reverse/strafe) speeds to align the part, but the current angular (yaw and pitch) speeds.

venture

  • Compatibility tag.
  • Used for surface elements of venture ships.
  • Replaces the "standard" tag there to make them incompatible with other races' ships.

weapon

  • Compatibility tag for weapons.
  • Connections with this tag will be able to be equipped with weapons. The corresponding tag has to exist in the weapon template, too.
  • Weapons have additional tags to define which kind of weapon they are (heavy/energy/standard).

window

  • Used to define the "outside" facing wall on station exteriors/interiors to place rooms at the correct position to face the outside.
  • Use in combination with the "dynamicroom" tag.

window_venture

  • Used to define the position for the venture room.
  • Venture room gets connected via the macro, no "dynamicroom" tag needed.

xenon

  • Compatibility tag for Xenon weapons.

NPC Connection - tags

airmarshal

  • The airmarshal NPC will stand here.

butler

  • Tag for NPCs to know what type will be able to occupy that tag.
  • The butler is used on the yacht in X4 dlc3.

casual

  • Tag for NPCs to know what type will be able to occupy that tag.
  • Casual tag, so off-duty NPCs can occupy it.

coffeemachine

  • Tag for NPC slots, to define the animation behavoir.
  • introduced in the Timelines DLC
  • for NPCs to perform the coffeemachine sequence

connect_missionwall

  • Tag for NPC slots, to define the animation behavoir.
  • introduced in the Timelines DLC
  • placed on top of the scenario mission console
  • spawn NPCs in the "mission wall" animation state.

control

  • not documented.

crouch

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "crouching" animation state.

elevator_bottom

  • This tag is used for NPC position connections.
  • This is the connection for the bottom of an elevator NPC position.
    Elevator setup

elevator_top

  • This tag is used for NPC position connections.
  • This is the connection for the top of an elevator NPC position.

elevator_wait_bottom

  • This tag is used for NPC position connections.
  • This is the connection for the bottom wait position of an elevator NPC position.

elevator_wait_top

  • This tag is used for NPC position connections.
  • This is the connection for the top wait position of an elevator NPC position.

hidelocation

  • NPC tag used for pirate criminal story.

ladder_bottom

  • NPC tag to mark the ladder for NPCs to walk to and start the climbing animation.
  • Ladder bottom tag is used for the bottom end/start of the ladder.

ladder_top

  • NPC tag to mark the ladder for NPCs to walk to and start the climbing animation.
  • Ladder top tag is used for the top end/start of the ladder.

lying_bed

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "lying down" animation state.

marine

  • Tag for NPCs to know what type will be able to occupy that tag.
  • Marine tag, so marine NPCs can occupy it.

npc

  • Tag to define NPC position slots in rooms or controllables.
  • NPCs can stay at these locations for an extended amount of time, either standing or sitting.

npctransport

  • Tag to define the teleport location in the "duschkabine".

npc_decoration

  • Used to spawn decorative NPCs, like the swimming boron in the corridor.

npc_elevator

  • This tag is used for NPC position connections.
  • This is the connection which will be moved up/down on an animated elevator.
    Elevator setup

npc_generic

  • This tag is used for NPC position connections.
  • Generic means all NPCs can use this connection.
  • Old tag for this was "generic", this caused issues with fallback animations, so it was redefined to npc_generic.

npc_location_<xx>

  • Currently numbering up from 01 to 05.
  • Used to place NPCs in scripts.

npc_location_exit

  • For ships only.
    Not on dockingbays on ships.
  • Tag to make NPCs find the connection of the transporter room which is reachable via the dockingbay.
    Every transporter room which is reachable via the dockingbay needs to have this tag.

npc_prop_room

  • Tag to connect the class=room props for NPC interaction.

npc_waypoint

  • Tag to help NPCs navigate towards point of interest (e.g. ladder/elevator).

pickup

  • This is where NPCs pick up objects.

pickup_hole

  • This is where NPCs pick up objects.

pickup_locker

  • This is where NPCs pick up objects.

pilot

  • Like the "service" tag, tells the NPC if he is allowed to occupy the connection.
  • Used for pilots and "captains" of larger ships.

prisonconsole

  • NPC compatibility tag used for pirate story.

service

  • Tag for NPCS to know what type will be able to occupy that tag.

shiptrader

  • Tag for NPCs to know what type will be able to occupy that tag.
  • Shiptrader tag, so Shiptrader NPCs can occupy it.

sit

  • Tag for NPC slots.
  • Used to find NPC slots.
  • Used for characters to select suitable animation sequences.

sit_bar

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "sit_bar" animation state.

sit_pilot

  • Tag for NPC slots.
  • If present then this NPC connection has pilot controls for the NPC to interact with (the holographic spheres).

sit_table

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "sit_table" animation state.

sit_terminal_forward

  • Tag for NPC slots, to define the animation behavoir.
  • Allows the sitting NPC to use an animation sequence where they interact with a terminal in front of them.

sit_terminal_left

  • Tag for NPC slots, to define the animation behavoir.
  • Allows the sitting NPC to use an animation sequence where they interact with a terminal to the left of them.

sit_terminal_right

  • Tag for NPC slots, to define the animation behavoir.
  • Allows the sitting NPC to use an animation sequence where they interact with a terminal to the right of them.

stand

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "standing" animation state.

stand_commander

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "stand_commander" animation state.

stand_leanrail_f

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "stand_leanrail" animation state.

stand_leanwall

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "stand_leanwall" animation state.

stand_lookat

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "stand_lookat" animation state.

stand_nerv

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "stand_nervous" animation state.

stand_terminal_forward

  • Tag for NPC slots, to define the animation behavoir.
  • spawn NPCs in the "stand_terminal_forward" animation state.

swim

  • Tag for NPC slots, to define the animation behavoir.
  • used to define the "swimming" animation to a boron character, like the swimming boron in the corridor.

tochair

  • NPC waypoint tag.
  • NPC go here to start their sitting down routine.

vendingmachine

  • Tag for NPC slots, to define the animation behavoir.
  • introduced in the Timelines DLC
  • for NPCs to perform the vendingmachine sequence

waitlocation

  • For getting NPCs to wait at this location (pirate dlc, criminal story).

Environmentmapprobes - tags

includebackground

  • Whether the envmap should include the background.
  • If not set the envmap probe will only render the scene it is directly connected too. Everything else will be transparent and can be filled by other probes.

includenpcs

  • Whether NPCs should be rendered on the envmap.

includeships

  • Whether ships should be rendered on the envmap.

interior

  • Whether this envmap probe should be used on glass materials with the glassinside tag.

parallaxcorrection

  • Whether the envmap probe reflections should use parallax correction.

Geometry - tags

access_dockcamera

  • This tagged object will be used to activate a special camera on a random dockingbay.

access_externalcamera

  • This tagged object will be used to activate the external camera.

access_jukebox

  • This tagged object will be used to change to the next music track in this room.

access_peoplelist

  • This tagged object will be used to open a menu with all people on the object.

access_scanner

  • This tagged object will be used to uncover covered objects in the sector.

airlock

  • Used on a button, switches player from fpv to spacesuit.

allow_nongroup_triggers

  • Used for animated parts which are grouped but also need to react to triggers, which is by default not allowed.
  • Used for parts such as the extending elevator button which deploys as a response to the cockpit activation trigger.
  • Also can be used to react to triggers if tagged as trigger_nearby or trigger_interact, which by default is not allowed.

anim_cockpit

  • Used to trigger regeneration of navmesh and setting the correct state after the animation state changed to 'cockpit_open' or 'cockpit_closed'.
  • Parts with the "cockpit_opening" animation states (and collision) must have the tag. No other parts are allowed to carry the tag.
  • Children linked to the parent which are also animated must get this tag too.

anim_cockpit_active

  • Used in combination with the "monitor" cockpit use case - for the code to know which animation state is the right one.

anim_dockdoor

  • Used for the XS dock doors at ships.
  • All geometry relating to the animation of the dock need this tag.
  • The code has "animation listener" set to these parts and reconstructs their animation state when loading savegames for example.

animation

  • If a part is animated, this tag is needed.
    Animation states are needed in addition (at least in the parent object).

areadamage

  • Used in combination with the "triggerpart" tag.
  • Defines the volume of an area where damage is dealt (engine flames/fire).
  • Needs "nocollision" tag in addition.
    Otherwise the mesh of the areadamage is being included in the bounding box calculations of the object, possibly enlarging it and causing issues (e.g. aiming- as it uses the centre of the bounding box to target at).

cargodependent

  • If a cargobay part is animated to show fill status, this tag is needed.
  • Animation state must be called "scaling_range".

ccw

  • Used in combination with the conveyor belt system.
  • When the conveyor is curved, defines that the rotation should be counter-clockwise.
  • The default is clockwise.

chair

  • Used to identify animated chairs.
  • Should be present on all parts of a chair.
  • Should not be added to the related 'NPC' connection.
  • Should not be added to non-animated sit connections.

chairreservation

  • Used for NPCs to reserve a chair (used for pilot chairs).

collisionbox

  • This tag defines that the part always uses a primitive bounding box for collision checks (high precision raycast as well as ship to ship collisions), never a mesh.
  • The advantages are better performance and making it much harder to clip through them by accident.

collisioncapsule_[x/y/z]

  • This tag defines that the part always uses a primitive capsule for collision checks (high precision raycast as well as ship to ship collisions), never a mesh.
  • The length is taken from the specified axis. The radius is taken from the longest of the two remaining axes.
  • The advantages are better performance and making it much harder to clip through them by accident.
  • Don't forget to use the brackets! E.g. → collisioncapsule_[x] 

collisioncylinder_[x/y/z]

  • This tag defines that the part always uses a primitive cylinder for collision checks (high precision raycast as well as ship to ship collisions), never a mesh.
  • The length is taken from the specified axis. The radius is taken from the longest of the two remaining axes.
  • The advantages are better performance and making it much harder to clip through them by accident.
  • Don't forget to use the brackets! E.g. → collisioncylinder_[x] 

collisiononly

  • This tag defines that the part ends in the "VisibleConnectionsList" but filtered out on rendering.
  • Note that "VisibleConnections" is used to determine what ends up in the physics.

collisionsphere

  • This tag defines that the part always uses a primitive sphere for collision checks, never a mesh.
  • The sphere radius is taken from the longest axis.
  • The advantages are better performance and making it much harder to clip through them by accident.

curve_<x>

  • Used in combination with the conveyor belt system.
  • Defines the curve radius of the transportation by the belt.

detail_XX

Level of Detail System (LOD)

  • Depending which tag a mesh has, it will be faded out in a certain distance (detail_xs smallest -> detail_xl largest).
    The rules are defined in the "renderparam_library.xml". 
    The detail_XX tagged objects are not LOD bound. A small detail part with a tag = detail_xl will be visible longer than the main parts LOD0.
  • detail_xs
  • detail_s
  • detail_m
  • detail_l
  • detail_xl

door

  • Used in a group of parts to control an animation.
    It's used to lock the doors of a transporter room.

editor

  • Tag to make a geometry only visible in the station build editor, but not the map.
  • Combine with "flag = hidden".

elevator

  • Tag for defining which parts are an elevator.
    This is needed to get a text id in the target monitor.
    Elevator setup

elevator_button

  • This tag is used for the button of an elevator (if you want to call down the elevator, which is out of reach).

envmap_cockpit

  • This tag is used to only render a envmap (tagged with cockpitonly in envmaps.xml) on this part.
    This is needed for the envmaps to not be visible on the outer hull of the ship.

forceoutline

  • Forces UI outline rendering for no collision objects.

fx

  • Removes this part from the rendering in the ship build/upgrade menu.
  • Examples are engine flames or thruster effects.

geometryinvisible

  • This tag is used on Piers to enlarge the (visible) bounding box.
    This was done as otherwise the docked ships will be outside of the bounding box and therefore culled in rendering causing the ship to vanish when walking on it when docked and looking away from the pier.

groupbounds

  • Used on elevators in buildmodules.
  • Must be used in combination with "navmesh_blockoing" tag.
  • Implementing a new tag 'groupbounds' which informs the game to only update the area of the navmesh with parts of that group.

hack

  • This tag is needed to mark things you can hack.
  • Needs "hack_XXX" tag in combination to define what it should hack.

hack_all_turrets

  • This tagged object will be used to hack turrets.

hack_buildmodules

  • This tagged object will be used to hack buildmodules.

hack_discount

  • This tagged object will be used to hack discounts.

hack_engineer

  • This tagged object will be used to hack engineer.

hack_hiringdiscount

  • This tagged object will be used to add a discount to hiring costs.

hack_moddingdiscount

  • This tagged object will be used to hack a discount for installing equipment mods.

hack_production

  • This tagged object will be used to hack productions.

hack_shieldgenerators

  • This tagged object will be used to hack shield generators.

hack_radar

  • This tagged object will be used to disable satellites in the sector.

hack_repairdiscount

  • This tagged object will be used to hack a discount for repairing ships.

hack_traderdiscount

  • This tagged object will be used to hack a discount at the item trader.

hack_storage

  • This tagged object will be used to hack storages.

hack_watchdogs

  • This tagged object will be used to hack watchdogs.

inside

  • Tag used in combination with the "triggerpart" tag.
  • Defines the inside volume of a dockarea (for sound effects etc.).

inventoryworkbench

  • Used to tag the inventoryworkbench to open the inventory crafting menu.
  • Used in combination with the "ui" and "trigger_interact" tag.

leak_claim

  • Tag used to specify the position the claim leak is spawned on ships.
    Locate it next to the xs dockingbay.

location_cockpit

  • Tag used to specify that a transporter room leads to a cockpit.
  • Tag has to be in the same geometry part where the "transporter" tag is.

location_exit

  • Tag used to specify that a transporter room leads out of a ship onto the current docking bay.
  • Tag has to be in the same geometry part where the "transporter" tag is.

navmesh_blocking

  • This part blocks walking if in a certain animation state, but not in others.
     Use this for doors that are manually opened and closed, i.e. have the "trigger_interact" tag, not "trigger_nearby".

nocollision

  • Removes the collision from the object.
    If this object has a .col collision mesh, do not tag as no collision, as then the collision mesh would not be used any more.
     This tag disables UI outline/fill colour rendering. Use "forceoutline" tag to enable UI rendering again.

nocollision_jolt

  • Behaves similarly to "nocollision" in a Jolt exe, does nothing in a Bullet exe.
  • Disables jolt collisions for the "ship to ship" collisions, but keeps the high precision raycasts enabled.
  • Use this to maintain compatibility in case you need to disable collisions of parts for Jolt.

noculling

  • Disables all culling mechanisms for the part, always sending it to the renderer. Use with caution!

noshadowcaster

  • Disables shadow casting for this geometry.

nooutline

  • Forces disabling of the UI outline for meshes with collision.

optional

  • Used for the Transporter Room when more than one transporter room is available in one component (e.g. corridor) but no "location_xxx" tags are used.
  • This condenses the entries of the multiple transporter rooms (with this tag) in the UI into one entry for the component.

part

  • If it's a geometry, it will have this tag.
    Will be automatically set by the Max tools.
  • In an older version of the engine there was a differentiation between "part" and "layer geometry". This is not the case any more.

platformcollision

  • If a part has this tag, it will have its collision only enabled when it's NEAR a platform.
    "IIRC 2km, distance from the edge of the bounding box"
  • This tag behaves like "nocollision" when the object is in space.

sign

  • Used in combination with tags "ui" "nooutline"
  • Used in assets which display dynamically created text objects, for example in the timelines hub for the room signs.
  • Hovering over this asset will display the text id in the ui.

speed_<x>

  • Used in combination with the conveyor belt system.
  • Defines the speed of the transportation by the belt.

startlocked

  • When set together with trigger_nearby or trigger_interact, this trigger starts out locked by default.
  • Has to be set on at least one connection/part in the group.

stationeditor

  • Used to tag a holo table to open the station editor menu in the station editor gamestart.
  • Used in combination with the "ui" and "trigger_interact" tag.

switchXX

  • Used to trigger part animations.

textpart

  • Tag to mark a geometry as a surface to render dynamic text on
  • Template class must be of "textdisplay"
  • Used in timelines Hub for doorplates to show inhabitants names.

textureanimation

  • If there is a uv-animated texture on an asset, this tag is needed.
    This is not the case for shader based animations (example: water material, the animation is based in the shader, tag not needed).
    "animation" tag in combination is also necessary to make it work.

transporter

  • Used in a group of parts to control an animation.
    It's used to lock the doors of a transporter room.

trigger_interact

  • Used to trigger an animation based on an interaction.
    E.g. button to open a door.
  • Needs ui tag to work properly (ui tag to make the object highlight at runtime).

trigger_nearby

  • Used to trigger an animation based on distance (NPC/player)
    E.g. doors.
    When parts, which are grouped to the trigger_nearby object are not parented to it (e.g. lights from doors mounted to the wall, therefore not having the iklink tag), then these parts need the tag as well.
    It is not enough to have just one part in the group having the tag to trigger all animations based on that.

trigger_parent

  • Used to trigger an animation on the parent. Used for e.g. repairable switches that trigger a door animation in the template they are connected to.

triggerpart

  • A geometry with this name will be used to trigger things.
    It's used for example for the damage areas to define when and where damage should be triggered.
    Another example are the jumpgates. A geometry is used to define when a ship should be teleported.
  • Used in combination with "areadamage" "inside".

trigger_inside

  • Used in the "monitor cockpit" use case e.g. Xenon ships.
  • When walking on the surface of this part, all parts without the "visible_inside" tag will be hidden.

truncateanimations

  • Used when having animated assets (with own sequence) linked to another part (with another set of animations) to trigger/request the parent animation.
    "if you place it on Connection25 of the test asset, it has the desired effect of not adding the cockpit animations to the xrefed chair"

ui

  • A geometry (and its children) with this tag will be selectable by the user.
  • By definition such an interactive part of a bigger component is specified through a "ui"-tagged connection which has one or multiple template parts "underneath" this connection (i.e. every part underneath the part hierarchy underneath this connection).
    If you target this part (or any of the parts hierarchically "underneath" that one) all of the parts will be visualised and behave as a single "object" from the player's point of view. At the time of writing this, this means that pointing at a part on the pilot chair will highlight the entire pilot chair and interacting with any part of the pilot chair will behave the same and perform the associated action (i.e. usually sitting down on the chair).
  • For proper behaviour it's important that only the upper most part (which is the root part of the element) is specified with the ui-tag.
    Subparts MUST NOT get the tag (since each part would be interpreted by the UI as a separate independent "object").

visible_inside

  • Used in the "monitor cockpit" use case e.g. Xenon ships.
  • Parts with this tag will be visible, after "trigger_inside" has removed all other parts from the renderer.

walk_conveyor

  • Used for character movement in first person environments.

  • Parts with this flag will allow for faster movement in one direction, which is always local 'forward' direction (positive z axis in the game).
  • The speed is defined by an additional tag that has a corresponding entry in parameters.xml, in the <conveyorspeeds> section.
  • Parts which have no special "walk_xxx" tags will be seen as valid surface to walk on.

walk_dockingbay

  • Used for character movement in first person environments.

  • Special case for the moving surface for dockingbays.
    A part tagged with this will act like a "walk_forbidden" when the dock is being animated. When the dock is safe to walk on it will be allowed for NPCs to walk there.
  • Parts which have no special "walk_xxx" tags will be seen as valid surface to walk on.

walk_exclude

  • Used for character movement in first person environments.
  • A part tagged with this tag will be ignored by characters. They will not attempt to walk on this part, as they do not even get told that it exists.
  • Use this for objects which are not reachable by NPCs, otherwise there is a risk of them trying to walk through these parts.
  • Parts which have no special "walk_xxx" tags will be seen as valid surface to walk on.

walk_excludeplayer

  • Used for player movement in first person environments.
  • A part tagged with this tag will be ignored by player movement. The player will be able to walk through it.
  • Use this for certain problematic objects whose animation could mean they end up overlapping the player's position.
    It acts like "nocollision" but exclusively for the player movement.

walk_forbidden

  • Used for character movement in first person environments.

  • Parts with this tag will be detected by the NPCs, but they are told to not walk here.
    Example would be a table. They will see that there is a table, but not attempt to walk on top, but around it.
  • Parts which have no special "walk_xxx" tags will be seen as valid surface to walk on.

walk_ignoreanimation

  • Used for character movement in first person environments.

  • A part tagged with this tag will not move the player if they are standing on it while it is animating.
  • Use this for certain problematic objects whose animation could mean that the player ends up inside walls, e.g. sliding doors that are angled enough to stand on them.

walk_stairway

  • Used for character movement in first person environments.

  • This is for the player only! NPCs can't use this automatically and require animations to climb up and down.

  • Parts with this flag will allow for a steeper slope to count as walkable. The exact values, in degrees, are defined in parameters.xml in the <maxslope> node.
  • Parts which have no special "walk_xxx" tags will be seen as valid surface to walk on.

workbench

  • Used to tag the workbench to open the mod upgrade menu.
  • Used in combination with the "ui" and "trigger_interact" tag.

Mesh - flags

skipexport = true

  • This object will not be exported into the game but will appear in the container file.
    Useful for visual helper when working with container files (buildtree setup).

hidden = true

  • This object will be exported but not rendered in the runtime.
    Its children will be rendered.
  • If this has a related physics object it will not be added to physics either (see Positional::AddPhysicsGeometry where it only iterates over GetVisibleTemplateConnections)!
    Result is that you can not collide with the hidden part.
  • If you want an object to be hidden (not rendered), but still be added to physics, use "collisiononly" instead.

Waypoint - tags

  • Used by mass traffic.
  • Requires either 'start' or 'end' tag - both at once are possible, but not recommended.
  • Defines connection points between components of the same object.
    E.g. different production modules in a station, not inside a production module.
  • Octree navigation creates paths from waypoints with 'blocklink end' to those with 'blocklink start'.
  • Parameters for this can be found in parameters.xml (search for "<blocklinks").
  • Used by (e.g. trade-) mass traffic.
  • Requires either 'start' or 'end' tag - both at once are possible, but not recommended.
  • Defines connection points between different components (including different objects).
  • Only pairs of waypoints that are in close enough proximity to each other are connected.
  • Parameters for this can be found in parameters.xml (search for "<closelinks").

dynamicmasstraffic

  • Used by mass traffic.
  • If the tag is present, this waypoint can only be used by dynamic mass traffic networks (for example: ship trading, building, repairing).
  • If the tag is not present, this waypoint can only be used by the static zone mass traffic network.
  • It's not possible to have a waypoint usable by both kinds of network.

end

  • Used by mass traffic.
  • Signifies the end of a manually defined waypoint path.

entrypath

  • Used by dock areas.
  • Signifies that a waypoint is part of the path into the dock area.
  • The waypoint needs to be located outside of the octree to be a valid target, therefore use following distances:
    • for S ships: octree 50m x 50m
      • Distance to geometry 75m
    • for M ships: octree 200m x 200m
      • Distance to geometry: 250m

exitpath

  • Used by dock areas.
  • Signifies that a waypoint is part of the path out of the dock area.
  • The waypoint needs to be located outside of the octree to be a valid target, therefore use following distances:
    • for S ships: octree 50m x 50m
      • Distance to geometry 75m
    • for M ships: octree 200m x 200m
      • Distance to geometry: 250m

speed_<x>

  • Used by mass traffic.
  • Defines the flight speed associated with roads starting or ending at that waypoint.
  • Tags to be used at the art side of things:
    • speed_slow
    • speed_normal

    • speed_fast
    • speed_faster
  • The following values can be used by the game even if they're not referenced in an asset:
    • speed_welder_slow
    • speed_welder_normal
    • speed_highway_entry
    • speed_highway_exit
    • speed_highway_parallel
    • speed_empty_space

start

  • Used by mass traffic and dock areas.
  • Signifies the start of a manually defined waypoint path.

typedock

  • Used by mass traffic.
  • Requires either 'start' or 'end' tag - never use both at once.
  • Only waypoints with this or the 'typenormal' tag are used for mass traffic.

typenormal

  • Used by mass traffic.
  • Only waypoints with this or the 'typedock' tag are used for mass traffic.

width_<x>

  • Used by mass traffic.
  • Defines how much ships can deviate from the lane's centre on roads starting or ending at that waypoint.
  • These tags are only used if defined by an asset:*

    width_narrow

    • width_normal

    • width_wide

  • The following tags can be used by the game even if they're not referenced in an asset:
    • width_welder_slow
    • width_welder_normal
    • width_local_highway
    • width_super_highway
    • width_highway_parallel
    • width_empty_space
    • width_blocklink

Group - tags

pilotcontrol

  • Group used on chair or console.
  • Takes control of ship.

gunnercontrol

  • Group used on chair or console.
  • Opens Ship Menu.

navigationcontrol

  • Group used on chair or console.
  • Opens Map.

commscontrol

  • Group used on chair or console.
  • Opens Message Menu.

coordinationcontrol

  • Group used on chair or console.
  • Opens Property Owned Menu.

engineeringcontrol

  • Group used on chair or console.
  • Opens Player Ship Info Menu.

flightcontrol

  • Group used on chair or console.
  • Opens Ship Menu.

managercontrol

  • Group used on chair or console.
  • Opens Property Owned Menu.

console_secret

  • Group used on a scenario console's parts that have the trigger_interact tag.
  • Makes the menu open the "secret" scenario list.

Material - tags

glass

  • Whether the material should use envmap probes in forward rendering.
  • This is only relevant for semi transparent materials and not needed for normal deferred rendering.

glassinside

  • Whether the material should or should not use envmap probes with the interior tag.

noenvmap

  • Whether the material should NOT be used when rendering envmaps.

Other

buildtags = primary

  • Used in buildtrees to define a "main" use for a buildstep.

rotconstraint = rotation_xyz

  • Used for IK aligned weaponry.
  • By defining the axis, you force the part to be rotating around the defined axis.
    • E.g. "rotation_x" will make the part rotate around the X axis.
  • Multiple axis are allowed.
    • E.g. "rotation_xy" will make the part rotate around the X and Y axis.
  • Defining the limits of the rotation from its resting position is done by adding a set of rotmin/rotmax parameters, e.g.:
    • rotmin = -10.0
    • rotmax = 10
  • You can not animate a part, which has a "rotconstraint" on it.
    The IK targeting will cease to work if you animate it.

transconstraint = translation_xyz

  • Used for IK aligned weaponry.
     

scaleconstraint = scale_xyz

  • Used for IK aligned weaponry.
     

Tag compatibility modes:

  • ANY - same as before, any tag that appears in both connections means they will be considered compatible.
  • ALL - all tags in this connection must be in the other connection for them to be considered compatible, but the other connection may have additional tags.
  • OTHERALL - all tags in the other connection must be in this connection for them to be considered compatible, but this connection may have additional tags.
  • EXACT - all tags in both connections must match, with no additional tags in either one.

The modes are set in the code as they depend on the way it's being used. E.g. all ship upgrades will use OTHERALL from the slot side (or ALL from the upgrade side, which is equivalent) to decide whether upgrades are compatible with a slot.

Undocumented tags

  • iklink - for part connections - the connected part uses IK to animate with the parent/connection

  • nobuildshader - forces a part not to be rendered during building, even if it would be normally

  • triggerpart
  • blocker (found in highwayblocker asset)
  • booster (connection in highway tube asset)
  • speedscale (connection in highway tube asset)
  • highwaygate (connection in highway entry gate asset)
  • exitgate (and value = -1) (connection in highway exit gate asset)
  • entrygate (and value = 1) (connection in highway entry gate asset)
  • engine (connection for placing engine)
  • cockpit (connection for placing cockpit)
  • cargotube
  • computer
  • storage
  • player
  • dockingbay
  • dock_xs
     
  • tags below found in "renderparam_library.xml". Are these just the "class" names? Could also detail_XX tags in there.
  • default_lodtag
  • effectobject
  • scaneffect
  • cluster_l_detail
  • cutsceneanchor
  • cluster_inside_detail
  • destructible
  • storage
  • positional
  • production
  • radar
  • buildmodule
  • fogvolume
  • interior
  • nebulanear
  • nebula
  • nebulamedium
  • nebulafar
  • position
  • station
  • rendereffect
  • effect
  • street
  • asteroid
  • debris
  • asteroidxl
  • highwayentrygate
  • highwayexitgate
  • entrygate
  • exitgate
  • gate
  • character
  • ship
  • masstraffic
  • engine
  • enginejet
  • turret_small_mg
  • turret_small_sg
  • turret_medium_pe
  • turret_medium_lb
  • turret_missile_df
  • turret_missile_sm
  • shieldgenerator
  • turret_big
  • dockingbay
  • drone
  • harvestable
  • bullet
  • bulletcloud
  • laser
  • billboard
  • cockpit
  • planet
  • ui
  • cluster
  • celestialbody
  • highwaytube
  • lensflare