- Joined
- Feb 2, 2011
- Messages
- 437
- Reaction score
- 453
Short Description
Allods Online client uses update system. So on each application launch game checks new updates and installs them if there are any. Also this system can check game client on consistency. Short check of binary executable files and serialized data bases is proceed on each launch. Full check is proceed after patch implementation and can also be started manually from Launcher.exe interface.
Here is a scheme of update system:
Client Part
Client part consists of three modules:
Code:
• Launcher.exe - module of data downloading and repair tool. They can be executed by user. • SyncVersion.exe - module of updates installation. It is launched by Launcher.exe file. • Repair.exe - special installer that fixed problems in repair system. It can be downloaded from publisher's web-site if needed. Launcher.exe can redirect use to the proper link if there are any problems.
Server Part
Patch-server old
Patch-server old
Patch sequence calculation was transferred to client side. Java application was removed from Patch-server structure. For these purposes all data files from Patch Server should be avaliable on WEB.
For Example PatchesHistory.xdb contains following.
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<torrentServer.TorrentPatchesTree>
<ripTorrentFile>*Operator_2.0.02.96.torrent*</ripTorrentFile>
<versionFile>*Operator_2.0.02.96.version*</versionFile>
<repairInstallerFile>Operator_Repair.exe</repairInstallerFile>
<versions>
<Item>
<versionNumber>2.0.02.92</versionNumber>
<isCritical>true</isCritical>
<updates>
<Item>
<beaten>false</beaten>
<syncVersionID>777</syncVersionID>
<weight>30</weight>
<patchedTo>2.0.02.96</patchedTo>
<torrentFile>*Patch_Operator_2.0.02.92_2.0.02.96_.patch.torrent*</torrentFile>
</Item>
</updates>
</Item>
<Item>
<versionNumber>2.0.02.96</versionNumber>
<isCritical>true</isCritical>
<updates />
</Item>
</versions>
</torrentServer.TorrentPatchesTree>
The following files should be available for downloading:
Code:
• PatchesHistory.xdb - Patch history description.
• current.version - txt file with version string. For this example it will be 2.0.02.96
• Operator_2.0.02.96.torrent - full client torrent
• Operator_2.0.02.96.version - version CRC file - it should be copied from latest client Profiles\game.version
• Patch_Operator_2.0.02.92_2.0.02.96_.patch.torrent - Patch torrent
All files should be avaliable by url template
http:\\patchServerDNS\OptionalString\filename
Where
Code:
• patchServerDNS - DNS of Patch Server
• OptionalString - additional string for WEB team purposes - can be Empty
• filename - file name for download
Launcher.exe will upload current.version as first step and compare it with client version. In case when client need update, it will download PatchHistory.xdb and get a list of patch torrents from it, and start downloading process.
Patch-server 3.0
Config files CurrentVersion.xdb and Launcher.torrent have been added.
Current.version has been removed.
CurrentVersion.xdb file strcture:<?xml version="1.0" encoding="UTF-8" ?>
Code:
<currentVersion>
<gameVersion>current_live_server_version</gameVersion>
<prepatchVersion>prepatch_version</prepatchVersion>
<launcherVersion>required_launcher_version</launcherVersion>
</currentVersion>
, where:
current_live_server_version – string; equals to current string from current.version
prepatch_version – string; game version which has available in next patch, for preloading, you can make it blank
required_launcher_version – string (blank)
Launcher.torrent file consists of latest file versions which are necessary to launcher work. Also it includes game.version file of latest update. I.e. this torrent always has the latest launcher and game version.
Launcher.torrent file contents:Launcher/
Code:
Launcher.exe
libeay32.dll
libexpatw.dll
mfc80.dll
mfc80u.dll
mfcm80.dll
mfcm80u.dll
Microsoft.VC80.CRT.manifest
Microsoft.VC80.MFC.manifest
msvcm80.dll
msvcp80.dll
msvcr80.dll
ssleay32.dll
zlib1.dll
game.version
Tracker
We use opentracker program for torrent distribution. It has free lisence, but you may use any other program for such purposes.
You must be registered to see links
Seeders
We use clienttransmission program for seeding. It is free, but it can be changed with any other program you like.
You must be registered to see links
For WEB seeds we use nginx.
You must be registered to see links
Working schema
We use the scheme with test and live torrent servers. All patches are implemented on test server at first. They are tested and if patch is approved and no bugs found we switch patching port and update becomes available to players. So our patch server is always available.
Here is a scheme of how it works:
PatchServer schema