An easy-to-use collection of all data from X-Wing: The Miniatures Game (Second Edition) by Atomic Mass 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 a unique id. These ids are used in the X-Wing Squadron Specification (or XWS
). Note that ids are only unique per card type (as explained below): a pilot can safely have the same id as an upgrade, for example.
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
- If the pilot has a standardized loadout, add the expansion name as a suffix (eg wampa-battleofyavin)
- Check for collisions with other ids of the same type, and add expansion suffixes until there is no more collision
Expansion suffixes per type:
Pilots: pilotname-shipname-factionname-expansionname-productsku
Upgrades: upgradename-slotname-expansionname-productsku
Conditions: conditionname-expansionname-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
.
Script | Description |
---|---|
yarn ts-node ./scripts/amg/parser.ts |
Scrape ship_points.xlsx and upgrade_points.xlsx for points and format legality (Excel sheets creaed from AMG PDFs using https://www.ilovepdf.com/pdf_to_excel |
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 |
Before opening a pull request, see the following checklist:
- Use sensible commit messages. Good:
add rebel fangs
. Bad:create fang-fighter.json
- Ensure there are no merge conflicts with
master
(rebase on top ofmaster
or merge it into your branch) - Ensure tests pass:
yarn run validate:tests
- Use a sensible PR message, eg
add pride of mandalore rebel content
. PR messages can be the same as commit messages for single-commit PRs.
Go through these steps to create a new release:
- 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 and all related properties, images and text are owned by Atomic Mass Games, Lucasfilm Ltd., and/or Disney.