src | ||
.editorconfig | ||
.gitignore | ||
package-lock.json | ||
package.json | ||
README.md | ||
tsconfig.json |
This tool is used for fetching releases from SWTOR’s patch server CDN and installing them.
Dependencies
For this tool to work, tsc
and tslint
must be globally available, e.g. by running:
npm install -g typescript tslint
Overview
SWTOR’s patcher is licensed from Solid State Networks, so it is mostly using code from SSN. However, SWTOR does not use the original software by SSN; instead they wrote their own patch deploy pipeline which interfaces with the SSN command line tools.
Also, SWTOR does not use all features offered by SSN. Notably, for public-facing products they do not use the peer-to-peer download of patches; instead all patches are downloaded from a CDN. In addition, they do not use the upcoming
feature where you can preload an upcoming patch before it is released.
Terminology
SSN uses the following terms; make sure you are familiar with them since we use them as well in documentation and in code.
product
: SWTOR is split into multiple products. That way, you can choose to only install part of SWTOR. For example, if you install the productsassets_swtor_main
andassets_swtor_en_us
, you only have the English-language live client files and no other languages and no PTS.release
: Colloquially, this is known as a “patch” (or Game Update). For example, release264
in productassets_swtor_main
refers to Game Update 5.2.0. However, not every release can be mapped to a “patch” (or Game Update); sometimes there are multiple releases between two actual “patches”, e.g. because of built errors or because they need to add another hotfix before releasing the “patch”. A release is always an integer starting at0
.patch
: In a SSN sense, a patch refers to the difference between two releases. For example,263to264
is a patch that can be used to update a product from release263
to release264
. The first number is calledfrom
while the second number isto
. If thefrom
number is-1
, e.g. in patch-1to0
, the patch does not store the differences but the full file contents to allow a fresh install. Otherwise, you must already have thefrom
release installed in order to apply the patch.environment
: An environment consists of multiple products. For example, thelive
environment has products likeassets_swtor_main
while thepts
environment hasassets_swtor_test_main
.
SWTOR conventions
SWTOR uses the following products:
assets_swtor_de_de
: German language files for the live environment.assets_swtor_fr_fr
: English language files for the live environment.assets_swtor_en_us
: French language files for the live environment.assets_swtor_main
: Main game data for the live environment.assets_swtor_test_de_de
: German language files for the PTS environment.assets_swtor_test_en_us
: English language files for the PTS environment.assets_swtor_test_fr_fr
: French language files for the PTS environment.assets_swtor_test_main
: Main game data for the PTS environment.eualas
: End user access and license agreement, and other legal documents you need to accept in the launcher before you can play the game.movies_de_de
: Intro movies by Blur in German language.movies_en_us
: Intro movies by Blur in English language.movies_fr_fr
: Intro movies by Blur in French language.patcher2014
: The old launcher, now replaced bypatcher2017
.patcher2017
: Current version of the launcher, used to download and install patches.retailclient_betatest
: The client used during the closed beta (2011 and earlier) to play the game.retailclient_cstraining
: No longer used.retailclient_liveeptest
: No longer used.retailclient_liveqatest
: The current client used by QA the day before a maintenance to log into a private server and check that the upcoming patch is correct.retailclient_publictest
: The current client used to play the game on the PTS.retailclient_squadron157
: The client used during the closed beta by the Squadron157 testing group to play the game.retailclient_swtor
: The current client used to play the game in the live environment.
In addition, there are a few private products which are only reachable through BioWare’s VPN and are not publicly accessible:
....
CDN
Manifests are hosted on manifest.swtor.com, while patches are hosted on cdn-patch.swtor.com. They can only be downloaded via HTTP (port 80) but the files are integrity-checked via their included signatures.