Launcher

Launcher is a customizable delivery tool for partners who develop video games. The product optimizes content delivery costs while centralizing modules for everything from virtual currency to video streaming. Features:

  • Selling virtual items and physical goods in Store
  • Built-in Login with customizable UI and authentication methods
  • Customizable Launcher UI
  • Runs on Windows
  • UI localized into 20 languages
  • Automatic delivery of Launcher updates to users
  • P2P/CDN game delivery and updates
  • Multigame support
  • Purchasing game via Launcher with automatic key activation
  • Configurable from Xsolla Publisher Account
  • News and banner management
  • Friends from social networks
  • In-game friends list
  • Users can select game region
  • Channeling Partner Bridge: seamless integration of games into pre-integrated game platforms

Note: If you already have any of the Xsolla modules installed and want to integrate Launcher, please contact your Account Manager.

Integration Flow

  1. Register an Xsolla Publisher Account.
  2. Create a project.
  3. Set up Launcher.
  4. Customize Launcher UI.
  5. Generate a Launcher installation file and build archive.
  6. Upload the game build to the Xsolla update server.
  7. Send the Launcher installation file to new users.

Creating a Project

  1. Go to Projects and click Create new project.
  2. In setup mode:
    1. Add Project Name.
    2. Set a link to the game’s Website.

Note: Each project in Publisher Account corresponds to one game.

Setting up Launcher

Create a Launcher instance in your Publisher Account:

  1. Set Launcher name.
  2. Choose the UI languages.
  3. Pick one of the predefined Login configurations or create your own by sending its name.
  4. Add one or more projects that you have set up in Publisher Account.

After finalizing Launcher settings in Publisher Account, do the following:

  1. Clone the Launcher from its GitHub repository.
  2. Go to the launcher/win folder of the cloned repository and specify values for the objects in the config.json file.

Example

{
   "launcher_project_id": "8c91ecf3-e7b0-46a8-aaf7-4c419ef8ef4b",
   "login_project_id": "bd2e1104-5494-48f9-ac50-98f230062df1",
   "callback_url": "https://callback_url.com",
   "product_name": "Launcher",
   "link_support": "https://support_example.com",
   "link_community": "https://community_example.com",
   "default_p2p_enabled": true,
   "game_autoupdate": false,
   "hide_peer_seed_info": false,
   "hide_email": false,
   "build_number": 1
}

Customizing Launcher UI

To change images, fonts, and Launcher color theme:

  1. Go to the launcher/win folder of the cloned repository.
  2. Specify the values for the objects in the UIStyle.json file.

Example

"error_window": {
  "bg_color": "#313131",
  "text_color": "white",
  "bottom_line_color": "white"
},
"error_report_window": {
  "bg_color": "#313131",
  "header_text_color": "white",
  "error_text_color": "white",
  "send_error_text_color": "#80FFFFFF",
  "bottom_line_color": "white"
},
"game_page": [
  {
    "game_id": 4,
    "bg_game_image": "img/Backgrounds/game_screen_bg.jpg",
    "version_text_color": "#7FFFFFFF",
    "social_text_color": "#7FFFFFFF"
  },
  {
    "game_id": 6,
    "bg_game_image": "img/Backgrounds/div_background.jpg",
    "version_text_color": "#7FFFFFFF",
    "social_text_color": "#7FFFFFFF"
  }
]

To customize Store in Launcher use config.json.

Replacing Images

You can find Launcher images in the img folder, grouped by Launcher sections — Background, LoginWindow, etc. To add your own image, replace the corresponding file or add a new file to the folder and change the link in UIStyle.json.

Example

To use my_custom_bg_image.jpg as the background of Login Widget:

  1. Place the image in img/LoginWindow.
  2. In UIStyle.json, find the login_window object and change
  3. “bg_image”: “img/LoginWindow/login_background.png” to “bg_image”: “img/LoginWindow/my_custom_image.jpg”.

Note: You can adapt Launcher to 4K screens by adding double-size images with a “@2x” suffix after the file name and before the extension, e.g., login_background@2x.png.

Replacing Fonts

Launcher uses Lato Regular, Medium, Bold, and Black fonts. The font files are located in the fonts folder.

To replace a font:

  1. Add the new font to the fonts folder.
  2. In UIStyle.json, specify the path to the new font in the following lines:

"fonts": {
    "regular": "fonts/Lato-Regular.ttf",
    "medium": "fonts/Lato-Medium.ttf",
    "bold": "fonts/Lato-Bold.ttf",
    "black": "fonts/Lato-Black.ttf"
}

Example

To replace Lato-Black.ttf to My_Own_Cool_Font.ttf:

  1. Add My_Own_Cool_Font.ttf to the fonts folder.
  2. In UIStyle.json, indicate the path to My_Own_Cool_Font.ttf as follows:

"fonts": {
        "regular": "fonts/Lato-Regular.ttf",
        "medium": "fonts/Lato-Medium.ttf",
        "bold": "fonts/Lato-Bold.ttf",
        "black": "fonts/My_Own_Cool_Font.fft"
}

Changing Colors

Launcher UI element colors are grouped in UIStyle.json by windows and components. To change an element’s color, go to the corresponding section and edit the property value.

You can use the following color formats:

  • SVG Color. Example: “white”.
  • #RRGGBB. Example: “#F13900”.
  • #AARRGGBB. Example: “#40FFFFFF”.

Example

To change the setting window background to red:

  1. Open UIStyle.json and find the settings_screen object.
  2. Change bg_color to “bg_color”: “#FF0000”.

Customizing Store

To customize an in-game store in Launcher, add an array of store objects into config.json. You can change the value of the objects specified in the table:

Object Description
id Project ID in Publisher Account.
theme Store color theme. Can be ‘default’ and ‘dark’. Default is ‘dark’.
size Element size in Store. Can be ‘small’, ‘medium’, and ‘large’. Default is ‘large’.
view Element location in Store (horizontal or vertical menu). Can be ‘vertical_navigation’ and ‘horizontal_navigation’. Default is ‘horizontal_navigation’.

Example

"store": { "id" : 12345, "theme" : "default", "size" : "large", "view" : "horizontal_navigation" } 

Changing Standard Icon

To open Launcher at a particular game’s page, a user can add a shortcut to the Start menu. The defaultIcon.ico file, located in the img/GamesIcons folder, is used as a shortcut icon by default.

You can change this default icon by one of the following methods:

  • Upload a new image in project settings in Publisher Account.
  • Upload a new file into the img/GamesIcons folder. The file format is {publisher_project_id}.ico, where {publisher_project_id} is your project ID in Publisher Account.

Example: the 12345.ico icon for Launcher to which the project with ID ’12345’ was added.

For full Store customization in Xsolla Launcher, please send your UI Kit or Design Assets to your Account Manager.

Generating an Archive and Installer

The scripts/win/deploy.bat script generates:

  • a Launcher installer that you can send to new users,
  • a Launcher build archive for automatic update delivery to the users.

You can launch deploy.bat by:

  • double-clicking the script file - this will place the build in the cloned project folder > target subfolder;
  • from the command line prompt, using an additional --out {directory} key, where {directory} is your desired build installation path.

Example

deploy.bat --out C:/Target

Notice: The installation file needs to be verified by a digital signature confirmed by the SSH256 certificate. You can get the certificate in any of the following certificate authorities: Thawte, Verisign/Symantec, Comodo and Digicert.
Note: You need to upload the generated archive with the Launcher build to your Publisher Account.

Uploading Game Build

To load a game build to the update server, use the Build Loader command-line utility.

Build Loader system requirements:

  • Windows 7/8/10 64-bit OS
  • 1.6 GHz CPU
  • 100 MB free RAM
  • Free disk space: 1.5 × build size

Build Loader accepts the following arguments:

  • --init — initialize the utility
  • --update — send game build to the server
  • --builds-list — get list of game builds
  • --descr {..} — send build description
  • --api-key {..} — send API key
  • --game-path {..} — send path to the game build

To upload a game build:

  1. Go to Publisher Account > Build settings.
  2. Copy the API key.
  3. Download and install Build Loader.
  4. Initialize the utility.
  5. Upload the game build(s) to the server.
  6. Place the game build to the stage.
  7. Set up the game files.

Initializing Build Loader

To initialize the utility, you need to pass the previously copied API key and the path to the game build:

> xbuild_loader.exe --init --api-key {..} --game-path {..}

Note: You only need to initialize the utility once, unless you want to change said parameters.

Uploading Game Build to the Server

To upload a game build to the server, indicate the build path:

> xbuild_loader.exe --update --game-path {..}

You can omit this parameter if you have already used it when initializing the utility or uploading the previous build.

During the first upload, the update server receives the whole game build. Afterwards it will receive game patches generated by Build Loader.

Placing the Game Build on the Stage

When uploaded to the server, game builds are displayed in Publisher Account in Project setup > Build Settings > Build list.

Select one of the two stages to place the game build to:

  • master: the game will be available for the end users,
  • test: the game will be available only for testing.

Note: To test your game, start Launcher with the --game_stage test parameter passed in the console. For example: launcher.exe --game_stage test.

Setting up Game Files

To let Launcher send the correct files to users, first set up and initialize the installation files:

  1. In Publisher Account, go to Build settings and then Game file settings.
  2. Enter the name and the extension of the file that launches the game (for example, coolgame.exe).
  3. Specify the game installation path.
  4. Add any redistributable packages necessary to launch the game (for example, Microsoft Visual C++ 2017 Redistributable).

Launcher sends the game the following parameters:

  • --xsolla-locale {locale}: interface language;
  • --xsolla-login-token {token}: Xsolla Login JWT (JSON Web Token);
  • --xsolla-playfab-token {token}: PlayFab token.

Launcher System Requirements

Recommended configuration for optimal Launcher operation:

  • Windows 7/8/10 64-bit OS
  • 1.6 GHz CPU
  • 300 MB free RAM
  • Free disk space: 180 MB
  • Up-to-date DirectX version

Recipes

Our Recipes will help you try out some of the advanced features of Launcher:

FAQ

Q. Why would I use Xsolla Launcher when I can create my own?

A. You don’t want to spend the resources creating your own launcher during the final stage of development or once the game is complete.

Q. How much is Xsolla Launcher going to cost me?

A. Launcher is a value-added product, meaning access to Launcher is already included in the standard Xsolla fee. Additional costs may appear if you decide to deliver games and updates via Xsolla CDN ($0.01 per GB). However, by using the P2P balancing system, you can cut the costs by 80% on average.

Q. Does the game require Launcher to be running in order to work?

A. By default, Launcher is always running. When it launches your game, it hides in the system tray so it’s not using up resources. A gamer can shut down Launcher process and the game will still be running as there is no connection during the actual gameplay session.

Q. How does Xsolla Launcher differ from Steam? How is it similar?

A. Xsolla Launcher acts like a bridge between Steam and a game.

Q. When released on Steam, will everything be downloaded from Launcher? Or will the upload to Steam be the full game + Launcher, and then additional updates fetched from Launcher?

A. Launcher can do any of the above. You can wrap the latest version of your game into Launcher and then distribute it on Steam, so there are no additional downloads needed (game delivery costs will be on Steam). If you want to quickly deliver an update, you can use Launcher as a fast delivery solution without the need to wrap the game into Launcher, and upload it into Steam again. So it’s up to you.

Q. Do I need to maintain two separate builds for Steam and for a standalone? Or is it the same build that gets uploaded to Steam?

A. No, you won’t need two separate builds. Moreover, if you have both standalone and Steam methods of delivery, then Xsolla Launcher will serve you well by collecting your users from both platforms into one database. There is a feature that we call “seamless registration”, which allows new users who run the game for the first time in Steam to seamlessly pass the registration process as we don’t ask them anything, but at the same time they can go to your official website outside of Steam ecosystem, log in there using Steam OpenID, and become a part of an official/centralized community (e.g. communicate on the forums, discover new games, read news, etc).

Q. I’m using Steam’s tools, including their launcher, and I have no CDN costs to worry about. Why should I take that risk?

A. You can use Xsolla Launcher while Steam will be paying for CDN and you can distribute your game wrapped into Launcher through Steam. There is no risk, but plenty of benefit, because via Launcher you can communicate with your active community the way you want as it’s fully customizable. You can also collect a users storage, so you can reach this audience outside of the Steam ecosystem and communicate with your fans there.

Q. Do you have a list of CDNs which are pre-integrated with your Launcher? Do I need to contact the companies that provide CDN for further integration? Can I use a CDN which is not on your list?

A. Yes, Xsolla has a list of the pre-integrated CDNs: G-Core Labs, Akamai. You don’t need to contact any companies providing CDNs pre-integrated with Xsolla Launcher. If you want to use a different CDN, please contact your Account Manager.

Q. Why shouldn’t I just use Solid State Networks?

A. Solid State Network’s main business is CDN, so their launcher solution isn’t designed to optimize CDN expenses.

Q. Is there some kind of IPC solution in Launcher?

A. There is no IPC for now, as Launcher doesn’t have features that require IPC communication. We will be adding more features in the future, such as live streaming, and the Store in the overlay that will require IPC (via SDK), so we do have plans to add it.

Q. How can Xsolla Launcher users get access to games? Can games be distributed via subscriptions, coupons or promo codes?

A. For now, users can only access games by redeeming game keys.

Q. Can Xsolla Launcher users download game updates if they don’t have any game keys purchased?

A. No. Games and game updates are not available without purchasing game keys.

Q. Is there a solution to connect PCs on the same LAN via P2P connection, so that data would only be transferred within this LAN?

A. No, there’s no such solution for now.

Q. Does Xsolla Launcher support access levels? For example, “alpha” for testing and “beta” for end users.

A. Yes, Xsolla Launcher supports access levels. When uploading your game build, you can select one of the two stages: test for testing or master for end users. To start Launcher with the games published on stage=test, pass the --game_stage test parameter in the console. For example: launcher.exe --game_stage test.

Q. What games are displayed in the game list in Xsolla Launcher? All added games or only the ones purchased by a user?

A. The list contains all the games that have been added to Launcher. The games purchased by a user have the Play button and the rest of the games have the Buy button.

Q. Can particular users get free game keys? How can they use them?

A. Yes, you can download game keys from Publisher Account and send them to your users for free in any way you wish. The users will be able to activate their keys in Launcher.

Q. Can users be authenticated in games automatically after they authenticate in Launcher?

A. Yes, there is a solution for automatic in-game authentication. The --xsolla-login-token parameter is used to send user data from Xsolla Launcher to the game. To get user data, decode the value of the parameter (see the recipe).

Q. Can I send the Launcher download link to users, for example, in the game key activation instruction?

A. The link to downloading Launcher is not included into the game key activation instruction. To send the link independently:

  1. Generate the installation file.
  2. In game keys settings in Publisher Account, upload the installation file as a distribution package for DRM Free.
After purchasing the game, users will get a link to download the distribution package.