📓 Update documentation

This commit is contained in:
C-3PO 2018-09-30 15:37:34 +02:00
parent b027d86c5f
commit 806e9fb330
Signed by: c3po
GPG key ID: 62993C4BB4D86F24
2 changed files with 37 additions and 29 deletions

View file

@ -49,14 +49,14 @@ In addition to the SSN patcher, the live game (but not the PTS) can also be inst
SSN uses the following terms; make sure you are familiar with them since we use them as well in documentation and in code. 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 products ```assets_swtor_main``` and ```assets_swtor_en_us```, you only have the English-language live client files and no other languages and no PTS. - __```product```__: SWTOR is split into multiple products. That way, you can choose to only install part of SWTOR. For example, if you install the products ```assets_swtor_main``` and ```assets_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, release ```264``` in product ```assets_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 at ```0```. - __```release```__: Colloquially, this is known as a “patch” or “Game Update”. For example, release ```264``` in product ```assets_swtor_main``` refers to Game Update 5.2.0. However, not every release can be mapped to a “patch”; sometimes there are multiple releases between two actual “patches”, e.g. because of build errors or because they need to add a hotfix via another release before the “patch” can be pushed to the live servers. A release is always an integer starting at ```0```.
- __```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 release ```263``` to release ```264```. The first number is called ```from``` while the second number is ```to```. If the ```from``` 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 the ```from``` release installed in order to apply the patch. - __```patch```__: In the 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 release ```263``` to release ```264```. The first number is called ```from``` while the second number is ```to```. In order to install a patch, the release given in the ```from``` number must already be installed on your disk, with one exception: If the ```from``` number is ```-1```, e.g. in patch ```-1to0```, the patch does not store the differences but it has full file contents to allow for a fresh install.
- __```environment```__: An environment consists of multiple products. For example, the ```live``` environment has products like ```assets_swtor_main``` while the ```pts``` environment has ```assets_swtor_test_main```. - __```environment```__: An environment consists of multiple products. For example, the live environment (```swtor```) has products like ```assets_swtor_main``` while the PTS environment (```publictest```) has ```assets_swtor_test_main```.
- __```manifest```__: Each product has a manifest, a single file that lists all releases and all patches, and specifies which release is the current release (that the launcher must install). - __```manifest```__: Each product has a manifest, a single file that lists all releases and all patches, and specifies which release is the current release (that the launcher must install).
# SSN file format and encryption # SSN file format and encryption
All files used by SSN are password-protected .zip files with a .exe header. The files are stored in the .zip section, while the .exe header (and the signatures at the end) are used to verify the integrity of the file. We are not interested in checking the integrity, so we only look at the .zip file. Check the [.zip specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) for more information on the .zip format. All files used by SSN are password-protected .zip files with a .exe header. The files are stored in the .zip section, while the .exe header (and the signatures at the end) are used to verify the integrity of the file. We are not interested in checking the integrity, so we only look at the .zip sections. Check the [.zip specification](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) for more information on the .zip format.
For each file, the extra field contains the following information: For each file, the extra field contains the following information:
@ -77,14 +77,31 @@ Once a patch is installed, you can look into the .version file to figure out whi
# File download and CDN # File download and 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. 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 lack of HTTPS is not an issue since the files are integrity-checked via their included signatures.
Manifests can be downloaded as follows: `http://manifest.swtor.com/patch/${product}.patchmanifest` Manifests can be downloaded as follows: `http://manifest.swtor.com/patch/${product}.patchmanifest`
Then knowing which patch you need, you can get the patch as follows: `http://cdn-patch.swtor.com/patch/${product}/${product}_${from}to${to}.solidpkg` Then knowing which patch you need, you can get the patch as follows: `http://cdn-patch.swtor.com/patch/${product}/${product}_${from}to${to}.solidpkg`
In cases where the environment is part of the product name, the URL is slightly different since there is a folder for the environment: `http://cdn-patch.swtor.com/patch/${environment}/${product}/${product}_${from}to${to}.solidpkg`
# Appendix # Appendix
## Environments used by SWTOR
Currently, the following three environments are used:
- __```swtor```__: The live game, including the European and North American servers. Open to all players and the default environment when logging into the launcher.
- __```publictest```__: The Public Test Server to allow players to test upcoming content. Open to players most of the time, unless the testing under NDA, in which case only accounts invited to the test have access.
- __```liveqatest```__: The environment where QA can test upcoming patches before they are deployed to the live servers. Not accessible to players.
Previously, the following environments were also used:
- __```betatest```__: The client used during the closed beta (2011 and earlier) to play the game.
- __```cstraining```__: No longer used.
- __```liveeptest```__: No longer used.
- __```squadron157```__: The client used during the early closed beta by the Squadron157 testing group to play the game.
## Products used by SWTOR ## Products used by SWTOR
SWTOR uses the following products: SWTOR uses the following products:
@ -101,28 +118,19 @@ SWTOR uses the following products:
- __```movies_de_de```__: Intro movies by Blur in German language. - __```movies_de_de```__: Intro movies by Blur in German language.
- __```movies_en_us```__: Intro movies by Blur in English language. - __```movies_en_us```__: Intro movies by Blur in English language.
- __```movies_fr_fr```__: Intro movies by Blur in French language. - __```movies_fr_fr```__: Intro movies by Blur in French language.
- __```patcher2014```__: The old launcher, now replaced by ```patcher2017```. - __```patcher2014```__: The old launcher, now replaced by ```patcher2017``` but still available for download.
- __```patcher2017```__: Current version of the launcher, used to download and install patches. - __```patcher2017```__: Current version of the launcher, used to download and install patches.
- __```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_{environment}```__: The client used to play the game, e.g. ```retailclient_swtor``` or ```retailclient_publictest```.
- __```retailclient_publictest```__: The current client used to play the game on the PTS.
- __```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 BioWares VPN and are not publicly accessible: In addition, there are a few private products which are only reachable through BioWares VPN and are not publicly accessible:
- ```biomon_cstraining```, ```biomon_liveeptest```, ```biomon_liveqatest```, ```biomon_publictest```, ```biomon_swtor```: The ```Biomongoose``` tool, possibly to monitor performance like CPU and memory usage. - __```biomon_{environment}```__: The ```Biomongoose``` tool, possibly to monitor performance like CPU and memory usage.
- ```byftools_cstraining```, ```byftools_liveeptest```, ```byftools_liveqatest```, ```byftools_publictest```, ```byftools_swtor```: Unknown tools ```ByfTools``` and ```iPen```. - __```byftools_{environment}```__: Unknown tools ```ByfTools``` and ```iPen```, might be related to Photoshop or other designer tools.
- ```heroblade_cstraining```, ```heroblade_liveeptest```, ```heroblade_liveqatest```, ```heroblade_publictest```, ```heroblade_swtor```: The IDE used for editing the game, either by placing new objects into the game world or editing scripts. - __```heroblade_{environment}```__: The IDE used for editing the game, either by placing new objects into the game world or editing scripts.
- ```morpheme_cstraining```, ```morpheme_liveqatest```: Morpheme is a middleware used for character animations. - __```morpheme_{environment}```__: Morpheme is a middleware used for character animations. Only available in the ```cstraining``` and ```liveqatest``` environments.
- ```patcher```: The old launcher before the 2014 revamp. No longer in use. - __```patcher```__: The old launcher before the 2014 revamp. No longer in use.
- ```playerclient_cstraining```, ```playerclient_liveeptest```, ```playerclient_liveqatest```, ```playerclient_publictest```, ```playerclient_swtor```: A client to play the game, used by the devs instead of ```retailclient```. Has a console and integrates with HeroBlade. - __```playerclient_{environment}```__: A client to play the game, used by the devs instead of ```retailclient```. Has a console and integrates with HeroBlade.
- ```repositoryassistant_cstraining```, ```repositoryassistant_liveeptest```, ```repositoryassistant_liveqatest```, ```repositoryassistant_publictest```, ```repositoryassistant_swtor```: unknown - __```repositoryassistant_{environment}```__: unknown
- ```repositorybrowser_cstraining```, ```repositorybrowser_liveeptest```, ```repositorybrowser_liveqatest```, ```repositorybrowser_publictest```, ```repositorybrowser_swtor```: The repository browser interfaces with HeroBlade to load 3D models, textures and other assets. - __```repositorybrowser_{environment}```__: The repository browser interfaces with HeroBlade to load 3D models, textures and other assets.
- ```toolshub_cstraining```, ```toolshub_liveeptest```, ```toolshub_liveqatest```, ```toolshub_publictest```, ```toolshub_swtor```: Used to launch more tools; most likely SpeedTree, WWise and other middleware. - __```toolshub_{environment}```__: Used to launch more tools; most likely SpeedTree, WWise and other middleware.
- ```visualizer_cstraining```, ```visualizer_liveeptest```, ```visualizer_liveqatest```, ```visualizer_publictest```, ```visualizer_swtor```: Also known as ```VANViewer```; possibly the tool mentioned by Georg Zoeller in his 2011 GDC talk. - __```visualizer_{environment}```__: Also known as ```VANViewer```; possibly the tool mentioned by Georg Zoeller in his 2011 GDC talk.
The following products are deprecated and no longer used.
- ```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_squadron157```: The client used during the closed beta by the Squadron157 testing group to play the game.

View file

@ -10,7 +10,7 @@ interface ISolidFileInfo {
files: ISolidFile[]; files: ISolidFile[];
/** Length of one piece in bytes, i.e. 64 KiB, 128 KiB, 256 KiB, 512 KiB, 1 MiB, 2MiB or 4 MiB */ /** Length of one piece in bytes, i.e. 64 KiB, 128 KiB, 256 KiB, 512 KiB, 1 MiB, 2MiB or 4 MiB */
'piece length': 65536 | 131072 | 262144| 524288 | 1048576| 2097152| 4194304; 'piece length': 65536 | 131072 | 262144| 524288 | 1048576| 2097152| 4194304;
/** Concatenated SHA1 hashes of all pieces, where each hash is 20 bytes long. */ /** Concatenated SHA1 hashes of all pieces, where each hash is 20 bytes (or 40 characters) long. */
pieces: string; pieces: string;
/** Whether the torrent is private, always 0. */ /** Whether the torrent is private, always 0. */
private: 0 | 1; private: 0 | 1;
@ -31,8 +31,8 @@ interface ISolid {
networkgroupid: 16068 | 16097; networkgroupid: 16068 | 16097;
/** The URL where the files from this torrent are stored, in the format `http://cdn-patch.swtor.com/patch/${product}/${product}_${from}to${to}/` */ /** The URL where the files from this torrent are stored, in the format `http://cdn-patch.swtor.com/patch/${product}/${product}_${from}to${to}/` */
reliable: string; reliable: string;
/** Always '0' or '1' */ /** Integer in the range 0-3 */
'reliable-id': '0' | '1' | '2'; 'reliable-id': '0' | '1' | '2' | '3';
/** Contains further information about this torrent, including the list of files. */ /** Contains further information about this torrent, including the list of files. */
info: ISolidFileInfo; info: ISolidFileInfo;
} }