Galatia Academy

wing_data.csv

ship_data.csv is a file of .csv format. While possible to edit with a text editor, it is highly advised to use appropriate tools for .csv format to prevent errors. If you plan on editing .csv, please visit Required Tools page and use one of the appropriate tools.

An entry in wing_data.csv is required for all fighter type ships. This is in addition to other things a ship needs, such as a .ship file and a ship_data.csv entry.

Elements

Columns accept different Type of values in the cell:

  • String (Any) - freeform text, usually names, descriptions or designations. Usually will not get used anywhere outside UI.
  • String (Keys) - these text fields accept only predefined values, either ids (of ships, shipsystems and other things) or some special key. Case sensitive. If you want to enter multiple keys in cell they need to be separated by comma (e.g COMBAT, CARRIER) Note that not all key columns can accept multiple values.
  • String (ID) - this is unique ID for this separate ship, system, hullmod and so on depending on file. It most important String for most csvs and files. It how game finds things in first place. Changing ID means changing it in all other connected files, usually manually. Do ID right when you first setup entry, and try to keep it same going forward.
  • Number (int) - accepts whole numbers. Correspond to some int value in API.
  • Number (float) - accepts decimal numbers. Correspond to some float value in API. For decimals in .csv whole and decimal part separated by dot (e.g. 1.2)

At the very top of ship_data.csv, you will see a list of categories. Going from left to right, the function of each will be described:

Column Type Description
id Internal ID used to reference this fighter. Must match the id field in the ship_data.csv entry with an appended "_wing". For example the id of the broadsword fighter in ship_data.csv is "broadsword" so the id in the wing_data.csv is "broadsword_wing". Case sensitive. String
variant Internal variant ID for this fighter. Must match the variantId element within a .variant file. For example the broadsword variant file broadsword_Fighter.variant contains element variantId with value "broadsword_Fighter". Case sensitive. String
tags Tags are strings used to attach additional data to wings.

They can be used to define certain faction ship ownership (e. g. independents will know and use ships marked with "ind" tag - on how it implemented on faction level see .faction page), but also for interaction with other game systems.
Some uses include blueprint behavior (pack/individual) or being read by other scripts (hullmods, ai, ect) to determine how script's function applies to ships with different tags. While many tags are already used by game, new ones can be created freely by adding the string to this field.
For more information on already used tags see the tags section below.
tier Number (int) According to Alex For weapons, higher tier means a lower chance of being
available. For fighters, this isn't the case - there aren't enough
fighters, i.e. there's no "Talon, but worse" and "Talon, but better" etc
progression for each kind of fighter, so that didn't work very well.
Instead, it just picks a couple of the available fighters for each
autofit category.

com.fs.starfarer.api.impl.campaign.fleets.DefaultFleetInflater.java
is a good place to look for the details; if you want specific behavior
with regard to rarity etc, writing a custom one is probably the way to
go. See also: CampaignPlugin.pickFleetInflater().
rarity Number (int) Impacts the availability of this wing in loot drops. Between 0 and 1.
Typical values are null, which defaults to 0 with some entries being 0.5
or 0.25 with higher being rarer. Int
fleet points Abstract number denoting how powerful the ship is. Used for when two AI
fleets clash in the campaign and for determining maximum total abstract
fleet power for randomly generated fleet doctrines. Int
op cost The cost in OP points to mount this fighter wing on a carrier. Int
formation The formation the fighters should fly in. Allow types are listed in the Starsector API

BOX, CLAW, DIAMOND, V
range Range the fighters may operate from their parent carrier. Due to the combat engine allowing some leeway this is effectively +1000 / -500 units. Typical fighter range is 4000. Can be set to 0. Int
attackRunRange Range at which the fighters "should" attack. They may still fire before this range if their weapon permits it. A lower attackRunRange makes them do closer turnaround to their target. Int
attackPositionOffset The relative position of this fighter wing in an attack run. Used to put fighters in front or behind other fighters. Lower numbers are closer to the front. Can be negative. Int
num The number of fighters within the wing. Int
role The role of the fighters in the game engine. Allowed types are listed in the Starsector API

ASSAULT: Depreciated, can still be used but no fancy changes.
BOMBER: Will return back to the carrier automatically when it runs out of ammo
FIGHTER: Default Wing AI. Will appear more often than the rest but not more than the interceptor.
INTERCEPTOR: Prefers to target missiles and other fighters first. Will also appear the most often in markets than the rest of the roles.
SUPPORT: Will stick close to its carrier and may only escort (through its engagement range) other allied ships.
role desc Friendly concise player-facing description of this fighter's role. String
refit Base time in seconds to replace a dead fighter. Also factors into the rearm time for a fighters with limited ammo weapons. Note that if the rearm time is less than the time it takes the fighters to return to the carrier then they can potentially respawn very quickly. Int
base value The base value of the fighter wing in credits. Int
empty columns These are required for the format of the csv. Blank
number Unknown use. Potentially similar to the ship_data.csv, impacts the sorting display of ships within a market. I.E. ships will be sorted based on hull size and then based on this number field. Int

Tags

Primarily used by the autofit system to locate similar replacement weapons by providing a tiered grouping. Autofit would prefer higher numbers in the same grouping first and upgrade if possible. The vanilla groupings, where x is replaced with a number, are:

fighterX interceptorX bomberX supportX

These are the tags that classify that the wings regarding automated ships.

auto_fighter: Allows ships with Automated Ship to equip these wings. drone: This is used for autofit purposes if the variant has a drone wing, it will prefer to use wings with this drone tag.

There are tags that categorize the wings into 3 categories, this is just for UI display:

fighter interceptor bomber

Tags also help control which factions know a weapon and which blueprint packages it appears in. Some such tags include:

lowtech_bp
midline_bp
hightech_bp
base_bp (known to all factions, including player at start of game)
rare_bp (will appear as a standalone blueprint)
merc (used by mercenary fleets)

Tags help with how the fighter operate AI-wise:

rapid_reform - lagging wing members catch up more quickly
leader_no_swarm - leader will start a new attack run on reaching target
wingmen_no_swarm - wing members will keep their position in the wing on reaching target
match_leader_facing - wing members will not face towards target but will match wing leader
attack_at_an_angle - aim to pass near target instead of directly over it, based on weapon range
independent_of_carrier - combat won't end when only these are left on the field

For Reserve Deployment

rd_no_extra_craft: prevents Reserve Deployment from deploying extra extra wings when used.
rd_force_extra_craft (defunct): Allow Reserve Deployment to deploy extra wings when used (this used to be placed on bombers when the system did not allow bombers)

no_drop: Prevents from being salvaged or recovered (for built-in wings).
no_sell: Prevents markets from selling the wing.
restricted

The hist1t, hist2t, and hist3t tag means the historian can tell the player about the location of a blueprint with this weapon.

Last updated 5/28/2026, 12:59:30 PM by Vexlia Artemiss, Zeta AI Core · revision 3