Understanding ships
Now we got to this stage, lets open up a ships macro file.Opening up a ships macro file
You will now see a list of properties and connections. For example, lets look at units_size_xl_builder_ship_macro.xml (the Construction Vessel):
<macros>
<macro name="units_size_xl_builder_ship_macro" class="ship_xl">
<component ref="units_size_xl_builder_ship" />
<properties>
<identification name="{20101,4001}" description="{20101,4002}" />
<hull max="1400000" />
<effects>
<explosion ref="capital_explosion" />
</effects>
</properties>
<connections>
<connection ref="ConnectionFor_props_tradeoffer_buy_buildership"> <macro>
<component ref="props_tradeoffer_buy_buildership" connection="space" />
</macro>
</connection>
<connection ref="connection_buildmodule01">
<macro ref="buildmodule_stations_albion_macro" connection="buildmodule" />
</connection>
<connection ref="connection_cockpit01">
<macro ref="cockpit_bridge_size_xl_macro" connection="Connection01" />
</connection>
<connection ref="connection_dock_m01">
<macro ref="props_surf_ar_docks_size_m_inv_macro" connection="connection_component01" />
</connection>
<connection ref="connection_dock_p01">
<macro ref="playerdock_capship01_macro" connection="connection_component01" />
</connection>
<connection ref="connection_dock_s01">
<macro ref="props_surf_ar_docks_size_s_floor_macro" connection="Connection_component" />
</connection>
<connection ref="connection_engine01">
<macro ref="engine_size_l_builder_ship_01_macro" connection="Connection01" />
</connection>
<connection ref="connection_engine02">
<macro ref="engine_size_l_builder_ship_01_macro" connection="Connection01" />
</connection>
<connection ref="connection_engine03">
<macro ref="engine_size_l_builder_ship_01_macro" connection="Connection01" />
</connection>
<connection ref="connection_engine04">
<macro ref="engine_size_l_builder_ship_01_macro" connection="Connection01" />
</connection>
<connection ref="connection_jumpdrive01">
<macro ref="props_surf_ar_jumpdrive_macro" connection="Connection01" />
</connection>
<connection ref="connection_radar_fallback01">
<macro ref="radar_ship_xl_fallback_01_macro" connection="ship" />
</connection>
<connection ref="connection_shieldgen01">
<macro ref="shieldgenerator_size_m_mk2_macro" connection="connection_component" />
</connection>
<connection ref="connection_shieldgen02">
<macro ref="shieldgenerator_size_m_mk2_macro" connection="connection_component" />
</connection>
<connection ref="connection_storage01">
<macro ref="storage_ship_xl_universal_01_macro" connection="ShipConnection" />
</connection>
<connection ref="connection_storage02">
<macro ref="storage_ship_xl_fuel_01_macro" connection="ShipConnection" />
</connection>
<connection ref="connection_turret_small_mg01">
<macro ref="turret_small_mg_macro" connection="connection_component01" />
</connection>
<connection ref="connection_turret_small_mg02">
<macro ref="turret_small_mg_macro" connection="connection_component01" />
</connection>
<connection ref="connection_turret_small_mg03">
<macro ref="turret_small_mg_macro" connection="connection_component01" />
</connection>
<connection ref="connection_turret_small_mg04">
<macro ref="turret_small_mg_macro" connection="connection_component01" />
</connection>
</connections>
</macro>
</macros>
<macro name="units_size_xl_builder_ship_macro" class="ship_xl">
<component ref="units_size_xl_builder_ship" />
<properties>
<identification name="{20101,4001}" description="{20101,4002}" />
<hull max="1400000" />
<effects>
<explosion ref="capital_explosion" />
</effects>
</properties>
<connections>
<connection ref="ConnectionFor_props_tradeoffer_buy_buildership"> <macro>
<component ref="props_tradeoffer_buy_buildership" connection="space" />
</macro>
</connection>
<connection ref="connection_buildmodule01">
<macro ref="buildmodule_stations_albion_macro" connection="buildmodule" />
</connection>
<connection ref="connection_cockpit01">
<macro ref="cockpit_bridge_size_xl_macro" connection="Connection01" />
</connection>
<connection ref="connection_dock_m01">
<macro ref="props_surf_ar_docks_size_m_inv_macro" connection="connection_component01" />
</connection>
<connection ref="connection_dock_p01">
<macro ref="playerdock_capship01_macro" connection="connection_component01" />
</connection>
<connection ref="connection_dock_s01">
<macro ref="props_surf_ar_docks_size_s_floor_macro" connection="Connection_component" />
</connection>
<connection ref="connection_engine01">
<macro ref="engine_size_l_builder_ship_01_macro" connection="Connection01" />
</connection>
<connection ref="connection_engine02">
<macro ref="engine_size_l_builder_ship_01_macro" connection="Connection01" />
</connection>
<connection ref="connection_engine03">
<macro ref="engine_size_l_builder_ship_01_macro" connection="Connection01" />
</connection>
<connection ref="connection_engine04">
<macro ref="engine_size_l_builder_ship_01_macro" connection="Connection01" />
</connection>
<connection ref="connection_jumpdrive01">
<macro ref="props_surf_ar_jumpdrive_macro" connection="Connection01" />
</connection>
<connection ref="connection_radar_fallback01">
<macro ref="radar_ship_xl_fallback_01_macro" connection="ship" />
</connection>
<connection ref="connection_shieldgen01">
<macro ref="shieldgenerator_size_m_mk2_macro" connection="connection_component" />
</connection>
<connection ref="connection_shieldgen02">
<macro ref="shieldgenerator_size_m_mk2_macro" connection="connection_component" />
</connection>
<connection ref="connection_storage01">
<macro ref="storage_ship_xl_universal_01_macro" connection="ShipConnection" />
</connection>
<connection ref="connection_storage02">
<macro ref="storage_ship_xl_fuel_01_macro" connection="ShipConnection" />
</connection>
<connection ref="connection_turret_small_mg01">
<macro ref="turret_small_mg_macro" connection="connection_component01" />
</connection>
<connection ref="connection_turret_small_mg02">
<macro ref="turret_small_mg_macro" connection="connection_component01" />
</connection>
<connection ref="connection_turret_small_mg03">
<macro ref="turret_small_mg_macro" connection="connection_component01" />
</connection>
<connection ref="connection_turret_small_mg04">
<macro ref="turret_small_mg_macro" connection="connection_component01" />
</connection>
</connections>
</macro>
</macros>
At first you may think what the heck?.. well lets break-down the file.
Macro name
On the second line you will see two bits of infomation, the macro name and the ship's class, in the above example XL.Properties
These will give some basic properties of the ship, like the name, description, hull value etc. Once again any field with { } brackets, means to look-up in the language file.Connections
Now we got to this far, we have a bunch of connections. The connections are basically all the parts of the ship, including engines, weapons, turrets, docking points etc. Not all, but most are sub-systems of the ship.Each connection has a name (ref) and a macro node. The macro node tells you where this item is defined. ie. turret_small_mg_macro (which is one of the turrets on this ship).
Where are macro locations defined?
You now are wondering: How does the game know where turret_small_mg_macro is? Well, if you go to the index folder and open up macros.xml, you see a list of macros defined. Do a search and you will see that the macro has a node, which tells you where the part is defined:
<entry name="bullet_turret_small_mg_macro" value="assets\fx\weaponfx\macros\bullet_turret_small_mg_macro"/>