An easy-to-use collection of all data from X-Wing: The Miniatures Game (Second Edition) by Fantasy Flight Games.
If you're looking for data and images of X-Wing First Edition, you can find that here: xwing-data.
Every ship, pilot, upgrade, etc. has a xws
field that contains an unique id. These ids are used in the X-Wing Squadron Specification (or XWS
).
New XWS ids are generated using the following steps:
- Take the English-language name as printed on the card
- Lowercase the name
- Convert non-ASCII characters to closest ASCII equivalent (to remove umlauts, etc.)
- Remove non-alphanumeric characters
- Check for collisions, and add expansion suffixes until there is no more collision
Expansion suffixes per type:
Pilots: pilotname-shipname-factionname-productsku
Upgrades: upgradename-slotname-productsku
Conditions: conditionname-productsku
XWS ids have to be unique per type (pilot/upgrade/condition/etc) and do not collide with ids of other types. So there can be a hansolo
pilot and a hansolo
upgrade, but there cannot be two upgrades with the hansolo
xws id (regardless of the slot of those upgrades). One of those cards would get the -slotname
suffix (for example: hansolo-gunner
).
There are a few scripts that make it easier to work on the data.
You can run these scripts using npm
or yarn
. For example:
npm run hyperspace
yarn run hyperspace
Script | Description |
---|---|
yarn run hyperspace |
Syncs the hyperspace status of all cards with the FFG squadbuilder |
yarn run ffgscrape |
Syncs all data with the FFG squadbuilder (and alerts on missing cards) |
yarn run ffg2xws |
Generates the data/ffg-xws.json file |
Script | Description |
---|---|
yarn run format |
Format all .json files in the data folder using Prettier |
yarn run changelog A...B |
Generate a changelog between commits A and B , to be used in the release description on GitHub.Example usage: yarn run changelog 1.24.0...1.25.0 |
yarn run validate:json |
Validate that all .json files contain valid JSON |
yarn run validate:tests |
Run all unit tests |
yarn run validate:tests:watch |
Run all unit tests in watch mode |
Go through these steps to create a new release:
- Make sure to run
yarn run ffg2xws
to verify thatdata/ffg-xws.json
has been updated - Bump the version number in
package.json
anddata/manifest.json
according to the Versioning rules listed below - Push the
package.json
anddata/manifest.json
changes to GitHub and/or merge them to themaster
branch - Create a new release on GitHub and use the following:
Tag version
: The tag you just createdTarget
:master
branchRelease title
: The version numberDescribe this release
: The output of theyarn run changelog PREVIOUS_VERSION...HEAD
command (replacePREVIOUS_VERSION
with the latest available tag)
- All done! 🎉
This project uses SemVer. Given a MAJOR.MINOR.PATCH
version number, we will increment the:
MAJOR
version when existing content is changed in such a way that it can break consumers of the dataMINOR
version when new content is added in a backwards-compatible manner, or existing content is changed in a backwards-compatible mannerPATCH
version when fixing mistakes in existing content
See the Releases tab in Github.
Star Wars, X-Wing: The Miniatures Game and all related properties, images and text are owned by Fantasy Flight Games, Lucasfilm Ltd., and/or Disney.