Uploading game distribution packages

Introduction

Developers can use the Mail.ru infrastructure to distribute packages of their games. The Game Center provides the developer with options for high-speed downloads of game packages by users and a set of tools for preparing updates (patches), minimizing data volumes.

Attention: Developer should upload/update builds himself! As an exception the game update process could be done by Games.Mail.Ru Platform engineers but in common queue order with other tasks.

Game distribution logic

The game client is downloaded through the Game Center (GC) from GC servers and a p2p download network. If the user does not have the downloaded game on their computer, the GC downloads its package and installs the game on the computer.

If the user has previously installed the game on their computer, the GC downloads a patch for it and applies it to the installed game (updates the game). Every version of the game client packaged for downloading via the Game Center is called a build of the game client.

The game developer collects and distributes builds [game client] to GC servers with the help of package assembly utilities, the operation of which is described below. The developer area can be used to download this utility and also manage assembled game client builds. The assembly utility publishes each newly assembled build to the testing repo. This build will be available in the Game Center only if GC is configured for the testing repo. More information about this can be found under "Testing an uploaded package" below. Ordinary users will not see this build. To make the build visible to all GC users, you must move it to the main repo using the functionality available in the developer area.

When preparing builds, the build utilities access port 80 (HTTP) to the servers pkg.dl.mail.ru, pkg-store.dl.mail.ru and pkg.gc.my.com. When assembling and distributing builds on the GC servers, assembly utilities contact GC servers on port 80 (HTTP) and 21 (FTP) at adm-store.dl.mail.ru and admin.dl.mail.ru. The assembly computers must be able to access the indicated resources.

Server Port
pkg.dl.mail.ru 80 (HTTP)
pkg-store.dl.mail.ru 80 (HTTP)
pkg.gc.my.com 80 (HTTP)
adm-store.dl.mail.ru 80 (HTTP) и 21 (FTP)
admin.dl.mail.ru 80 (HTTP) и 21 (FTP)

Product configuration

1.1. Log in to your dashboard with an account with the corresponding privileges, and with two-factor authentication active, at https://games.mail.ru/dev/login/

1.2. Select the required product from the list and go to the "Upload game packages" section.

1.3. Press "edit" and configure the client launch parameters.

1.4. If the project does not have two versions of the launch file (x32 and x64), only one of the fields needs to be filled in. You must set a path to the executable file relative to the game client’s folder.

1.5. Command-line client launch parameters
Only additional parameters from the partner are included; including additional sz_pers_id parameters is not required. For example, you can include the IP of a server or other game parameters that will run on launch.

1.6. Name of the game’s icon file 
Specify the path relative to the game client’s folder.

1.7. Name of the launch button menu group 
For example, "Mail.Ru\Royal Quest"

1.8. Expanded client settings
Example:

  • SZPersIdParam=-sz_id
  • SZTokenParam=-sz_token

Example with all form fields filled out

Using the Windows GUI utility (MailRuGameUploader.exe)

2.1. All assembly of game client packages is carried out in the Assembly Folder. Within this folder, the assembly utility creates service subfolders with packages and patches for assembled builds. The assembly settings files are also within this folder. The folder can be quite large since it contains several recent assembled client builds.

2.2. Utilities for assembling builds and uploading them to the GC server can be downloaded (Windows 64 bitLinux (Gentoo 64 bit), MacOS 64 bit) and unpacked to a separate folder. Only 64-bit versions of these utilities are available, so for them to work correctly, you will need a 64-bit version of Windows installed.

2.3. Launch the MailRuGameUploader.exe utility in the folder where the assembly utilities were unpacked.

2.4. In the "Path to source client files folder" field, enter the path to the client’s source files from which the new build will be assembled.

2.5. In the "Path to Assembly folder" field, enter the path to the assembly folder. This folder may be empty when assembling the first build. It is best to use one and the same folder for all subsequent builds of the client, since during the assembly of a new build it should contain the folder of the previous assembled build. If the folder of the previous build is not present in the assembly folder, then the utility will automatically start downloading it from the server at the start of the assembly process.

2.6. Press "Accept these folders." The system will check the validity of the folder assignments.

2.7. In the "Authorization token" field, copy the token from your developer dashboard. To do this, open the required game, look in the "Upload game packages" section, find the field "Your token for authorizing utilities to download packages," and copy its value. Then paste this token into the "Authorization token" field.

2.8. Press the "Verify token" button that appears. The system will then verify your token.

2.9. Press "Start Assembly." The assembly of the game client build should take place and be uploaded to the GC server. Once the build successfully finishes uploading, it can be seen in the "Upload game packages" section in the list of builds. The build is then pushed to the testing repo.

2.10. After testing the build, you can move it to the main repo by pressing the button to the right of the build in the list of builds ("Move from testing repo to main repo"). This function is in the private dashboard (not in the utility GUI). After this operation, the builds in the main repo are available for all users to download. 

Using console utilities

Console utilities allow you to publish games from a PC running a Windows, Linux, or MacOS operating system.

3.1. Utilities for assembling and uploading builds to the GC server can be downloaded (Windows 64 bitLinux (Gentoo 64 bit), MacOS 64 bit) and unpacked to a separate folder.

3.2. Launch the bstool.exe application, setting all the required parameters. Here is the command line format and all built-in parameters for this utility:

 > bstool.exe <BuilderFolder> "-src=<SourceFolder>"|-movetesttolive|-removelastbuild|-removefirstbuild|-skipbuilding [-configscheckonly] [-processallpackages] -token=<actual auth token>] ["-versioninfo=<versioninfo>"]
  use "-src=<SourceFolder>" to make a new build (from SourceFolder)
  use "-removelastbuild" to remove the last build
  use "-removefirstbuild" to remove the first build
  use "-skipbuilding" to skip (re-)creation of the build
  use "-configscheckonly" to skip any processing except config synchronization with the server
  use "-processallpackages" to resynchronize all the packages in the project
         (not just the last two builds, as in normal mode)
  use "-skipsynclocalfiles" to skip local file synchronization
  use "-ignoresyncerrors" to ignore errors during local file synchronization
  use "-skipcheckintegrity" to skip the integrity check on local files
  use "-movetesttolive" to move the test build to the live build
  <SourceFolder> - source client files folder
  <BuilderFolder> - builder folder
  <versioninfo> - version identifier (string value)

3.3. To assemble another game build, launch the tool as follows:

 > bstool.exe <BuilderFolder> "-src=<SourceFolder>" -token=<actual auth token>] ["-versioninfo=<versioninfo>"]

where:
<BuilderFolder> is the path to the assembly folder
<SourceFolder>  is the path to the folder containing the source files of the new game client build
<actual auth token> is your authorization token
<versioninfo> is the number of the new build version; the parameter "-versioninfo=<versioninfo>" is mandatory.

The assembled build automatically uploads to the GC server and will be available in the GC’s testing repo.

3.4. To move the assembled build to the main repo, execute the following command:

 > bstool.exe <BuilderFolder> -movetesttolive -token=<actual auth token>

After successful execution of this command, the build will be available in the Game Center in standard mode (i.e. when it only sees builds in the main repo).

 

Testing an uploaded package

Before the uploaded content is published:

4.1. Log in to the Mail.Ru Game Center with the account used to add the game or upload it via the developer dashboard https://games.mail.ru/dev/.

4.2. Switch the Game Center to developer mode (in the top menu, go to "Help" -> "Developer mode").

4.3. In developer mode, the game’s page will show a menu that allows you to switch to the testing repo. By using this mode, you can download updates and packages uploaded for delivery but not published for all users.

Limitations and recommendations

  • Uploaded but not published packages of games can be downloaded by third parties, since they are on public servers.
  • We recommend always packaging the game resources yourself.
  • We recommend you include no more than a thousand files in your game package.
  • For file and folder names, only the first part of the ASCII table (codes 32 to 127) may be used, which means regional characters (Cyrillic, Chinese, etc.) cannot be used.
  • Very long file names (over 200 characters) cannot be used.

Quota limits for projects and free space

The following quotas are set by default for a new developer:

    - number of allowed projects: 5

    - GB per project: 50

How it works

Project creation quotas allow a developer to control the project creation process. If the developer has 5 projects by default, that means that creating a 6th project requires contacting the Mail.Ru platform at integration@games.mail.ru . If this limit is exceeded, the developer will see the following message:

The space limitation given to each project allows the developer to control the process of distributing assembled build uploading to the GC server. The developer can always see a project’s current free space in the "Upload game packages" section.

If the limit is exceeded during the next upload to the server, then you must delete unnecessary (old) packages of the game via the upload utility or contact the Mail.Ru platform at integration@games.mail.ru