启动器是供游戏开发合作伙伴使用的可定制交付工具。该产品既可降低内容交付成本,又可集中管理虚拟货币、视频流等各种模块。其功能包括:
- 多游戏支持
- 多种游戏分发方式
- 在商店销售虚拟和实体商品
- 包含自定义UI和认证方法的内置登录管理器
- 自定义启动器UI
- 在Windows和macOS上运行
- 20种语言的本地化UI
- 自动向用户交付启动器更新
- P2P/CDN游戏交付和更新
- 可在艾克索拉发布商帐户中进行配置
- 新闻和横幅管理
- 用户可选择游戏区域
- 协助合作伙伴侧对接:将游戏无缝集成到预集成的游戏平台
要了解启动器技术实现的详细信息,请参阅白皮书。
集成过程
创建项目
- 转到项目,然后单击创建新项目。
- 在设置模式下:
- 添加项目名称。
- 设置游戏网站的链接。
设置启动器
在发布商帐户中创建一个启动器实例:
- 设置启动器名称。
- 选择UI语言。
- 选择一个预定义的登录管理器配置或通过发送名称来创建自己的配置。
- 添加一个或多个已在发布商帐户中完成设置的项目。
在发布商帐户中完成启动器设置后,请执行以下操作:
- 从GitHub存储库复制该启动器。
- 选择包含所需启动器版本的复制存储库的文件夹。Windows版本前往launcher/win,macOS版本前往/launcher.app/Contents/MacOS。在config.json文件中指定对象的值。
示例
- php
{
"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",
"game_autoupdate": false,
"hide_peer_seed_info": false,
"hide_email": false,
"build_number": 1
}
自定义启动器UI
自定义启动器UI的方式取决于您集成的产品版本。关于不同版本的自定义参数描述,请访问此链接。
生成压缩文件和安装文件
scripts/win目录下的deploy.bat脚本将生成一个用于向用户自动交付更新的启动器编译版本压缩包。
可通过以下方式启动deploy.bat:
- 双击脚本文件。该操作将把编译版本放在项目文件夹副本下的target子文件夹中;
- 通过添加--out <directory>从命令行界面中启动。<directory>为所需的编译版本安装路径。
示例
- php
deploy.bat --out C:/Target
要生成启动器安装程序并获取其链接以交付给用户:
- 在发布商帐户中前往启动器 > 常规设置,然后单击生成Windows安装程序链接。
- 在显示的窗口中,上传ZIP格式的启动器编译版本压缩包和ICO格式的安装程序图标。单击生成。
- 等待系统生成安装程序、用艾克索拉证书签名以及上传至艾克索拉CDN。
- 复制Web安装程序的链接以分发给用户。如要获取独立安装程序的链接,请在下拉菜单中选择获取独立安装程序链接。
Scripts/macOS/目录下的deploy.sh脚本将生成:
- 可发送给新用户的启动器安装程序。
- 用于向用户自动交付更新的启动器编译版本压缩文件。
- 一个APP文件。
要让macOS的安全系统将启动器编译版本识别为安全程序,需要:
- 使用开发者证书对编译版本签名。
- 让编译版本经过Apple公证。
准备步骤
要签名并验证应用,必须拥有:生成App专用密码
- 前往Apple ID。
- 通过双重认证。
- 前往安全部分。
- 单击生成密码。

- 输入密码标签,然后单击创建。
获取证书签名
- 打开Keychain Access应用。
- 前往Keychain Access > Certificate Assistant,然后选择Request a Certificate From a Certificate Authority。

- 在随后显示的窗口中输入您的数据,选择Save to disk,然后单击Continue。
- 指定要保存证书的文件夹路径,然后单击Save。
- 前往Apple Developer并登录。
- 前往Certificates, Identifiers & Profiles,打开Certificates选项卡,然后添加新证书。

- 将证书类型设置为Developer ID Application,然后单击Continue。
- 选择生成的证书文件,然后单击Continue。
- 单击Download下载开发者证书。
- 打开下载的文件并安装证书。
- 打开终端并运行security find-identity -p basic -v命令。
注册捆绑包ID
- 前往Apple Developer。
- 前往Certificates, Identifiers & Profiles,打开Identifiers选项卡并添加一个新ID。

- 选择App IDs类型,然后单击Continue。
- 将应用类型设置为App,然后单击Continue。

- 插入捆绑包ID。示例:com.template.launcher。单击Continue。
- 在Info.plist配置文件中进行以下编辑:
- 将
CFBundleIdentifier 参数值设置为您的捆绑包ID。 - 将
CFBundleVersion 和CFBundleShortVersionString 参数的值设置为应用版本号。
- 将
示例
- php
<key>CFBundleIdentifier</key>
<string>com.template.launcher</string>
<key>CFBundleVersion</key>
<string>102</string>
<key>CFBundleShortVersionString</key>
<string>1.0.102</string>
运行脚本
完成所有准备步骤后,运行以下命令:- php
chmod +x deploy.sh
./deploy.sh --username <username> --password <password> --signature <signature> --teamid <teamid> --apppath <apppath> --appname <appname> --outpath <outpath>
- apppath — 要签名的启动器编译版本路径。必填。默认为../../launcher/macos。
- username — Apple开发者帐户用户名。必填。示例:j.smith@email.com。
- password — App专用密码。必填。
- appname — 启动器编译版本名称。选填。默认为launcher。
- signature — 证书签名。必填。示例:Developer ID Application: John Smith (JWZ3331234)。
- teamid — 团队ID。必填。要获取该ID,请运行xcrun altool --list-providers -u "AC_USERNAME" -p "AC_PASSWORD"命令。
- bundleid — 应用程序ID或捆绑包ID。选填。默认为com.template.launcher。
- outpath — 放置签名APP文件、压缩包和DMG启动器安装文件的路径。选填。默认为$apppath/../../target/macos。

如果收到altool cannot be found错误,请运行xcrun altool命令。如果返回其他错误,请运行xcode-select -r命令。
上传游戏编译版本
要将游戏编译版本上传到更新服务器,请使用上传助手命令行工具。 上传助手系统要求:- Windows 7/8/10 64位操作系统或macOS 10.14.0及更高版本
- 1.6 GHz CPU
- 100 MB可用内存
- 可用磁盘空间:1.5 x 编译版本大小
--init — 初始化该工具。--update — 将游戏编译版本发送至服务器。--builds-list — 游戏编译版本列表。--descr <build-description> — 编译版本描述。--api-key <API-key> — API密钥。--game-path <path-to-game> — 游戏编译版本的路径。--chunk-size <chunk-size> — 文件块大小,即游戏压缩包分成的文件块大小。单位可以是MB或GB。支持的值为10mb到5120mb,或1gb到5gb。默认为5gb。--retry-timeout <timeout> — 上传文件尝试之间的超时值,单位为秒。支持的值为10到60,默认为20。--retry-count <retry-count> — 上传文件的尝试次数。支持的值为1到10,默认为3。
初始化上传助手
要初始化该工具,需传递之前复制的API密钥和游戏编译版本的路径:- php
> build_loader.exe --init --api-key <api-key> --game-path <path-to-game>
示例
- php
> build_loader.exe --init --api-key E51DPZ486S9IUGVF43AH4T48QB7246OQ --game-path C:\Games\LastGameBuild
- php
> build_loader --init --api-key <api-key> --game-path <path-to-game>
示例
- php
> build_loader --init --api-key E51DPZ486S9IUGVF43AH4T48QB7246OQ --game-path /Games/Yourgame
- 如无需更改上述参数,则该工具只需初始化一次。
- 游戏编译版本路径只能包含英文字母。
将游戏编译版本上传到服务器
要将游戏编译版本上传到服务器,请指明编译版本的路径:- php
> build_loader.exe --update --game-path <path-to-game>
示例
> build_loader.exe --update --game-path C:\Games\LastGameBuild
- php
> build_loader --update --game-path <path-to-game>
示例
> build_loader --update --game-path /Games/Yourgame
将游戏编译版本置于相应阶段
游戏编译版本上传到服务器后,将在发布商帐户的项目设置 > 编译版本设置 > 编译版本列表中显示。 选择两个阶段之一以将游戏编译版本置为:- master:该游戏对最终用户可用;
- test:该游戏仅对测试可用。
设置游戏文件
为确保启动器将正确的文件发送给用户,需先设置并初始化安装文件。- 在发布商帐户中前往编译版本设置,然后转到游戏文件设置。
- 输入游戏启动文件的名称和扩展名(例如:coolgame.exe)。
- 指定游戏安装路径。
- 添加启动游戏必需的所有可再发行包(例如,Microsoft Visual C++ 2017 Redistributable)。
- --xsolla-locale <locale>:界面语言;
- --xsolla-login-token <token>:艾克索拉登录管理器JWT(JSON Web令牌)。
- php
game.exe --xsolla-login-token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InAudHVnb2x1a292QHhzb2xsYS5jb20iLCJleHAiOjE1ODU1MDYxMTMsImdyb3VwcyI6W10sImlhdCI6MTU4NDY0MjExMywiaXNzIjoiaHR0cHM6Ly9sb2dpbi54c29sbGEuY29tIiwicGFydG5lcl9kYXRhIjp7ImFkbWluIjp0cnVlfSwicGF5bG9hZCI6IiIsInByb21vX2VtYWlsX2FncmVlbWVudCI6dHJ1ZSwicHJvdmlkZXIiOiJ4c29sbGEiLCJyZWRpcmVjdF91cmwiOiIiLCJzdWIiOiIyNmYxNzI5Ni00Nzk5LTExZTgtOTBkMC00MjAxMGE4YTAwMTkiLCJ0eXBlIjoic29jaWFsIiwidXNlcm5hbWUiOiJzb21lX3VzZXJAbWFpbC5jb20iLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6Ikk2QTJrTEZPQ2JkcnUzamIxMjNyT3JmWnNkTnFpdVcxMjNpWTdKcW85OHI5b0hPbyIsInhzb2xsYV9sb2dpbl9wcm9qZWN0X2lkIjoiNDBkYjJlYTQtNWQ0Mi0xMWU2LWEzZmYtMDA1NDU2YTBlMTRhIn0.ZsTNiwY2iPp7HKqHs5g6JXzL2kv_RVuMNBlF-Tn2ccE --xsolla-locale en
- php
game --xsolla-login-token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InAudHVnb2x1a292QHhzb2xsYS5jb20iLCJleHAiOjE1ODU1MDYxMTMsImdyb3VwcyI6W10sImlhdCI6MTU4NDY0MjExMywiaXNzIjoiaHR0cHM6Ly9sb2dpbi54c29sbGEuY29tIiwicGFydG5lcl9kYXRhIjp7ImFkbWluIjp0cnVlfSwicGF5bG9hZCI6IiIsInByb21vX2VtYWlsX2FncmVlbWVudCI6dHJ1ZSwicHJvdmlkZXIiOiJ4c29sbGEiLCJyZWRpcmVjdF91cmwiOiIiLCJzdWIiOiIyNmYxNzI5Ni00Nzk5LTExZTgtOTBkMC00MjAxMGE4YTAwMTkiLCJ0eXBlIjoic29jaWFsIiwidXNlcm5hbWUiOiJzb21lX3VzZXJAbWFpbC5jb20iLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6Ikk2QTJrTEZPQ2JkcnUzamIxMjNyT3JmWnNkTnFpdVcxMjNpWTdKcW85OHI5b0hPbyIsInhzb2xsYV9sb2dpbl9wcm9qZWN0X2lkIjoiNDBkYjJlYTQtNWQ0Mi0xMWU2LWEzZmYtMDA1NDU2YTBlMTRhIn0.ZsTNiwY2iPp7HKqHs5g6JXzL2kv_RVuMNBlF-Tn2ccE --xsolla-locale en
教程
启动器系统要求
为使启动器运行效果最佳,请采用以下推荐配置:- Windows 7/8/10 64位操作系统或macOS 10.14.0及更高版本
- 1.6 GHz CPU
- 300 MB可用内存
- 可用磁盘空间:180 MB
- 最新版本的DirectX
高级诀窍
以下高级诀窍可帮助您使用启动器的一些高级功能:- 多游戏支持
- 通过启动器分发游戏
- 更新启动器
- 二进制补丁
- 新闻
- 横幅
- 游戏数据分析
- 深度链接
- PlayFab用户认证
- 静默认证
- 游戏内用户认证
- 将Epic在线服务与艾克索拉登录管理器配合使用
- 启动器开始页
- 向端点URL发送分析数据
- 网页游戏和Flash游戏分发
- 无缝WTL授权
常见问答
问: 如果我能够创建自己的启动器,为什么还要使用艾克索拉启动器?
答: 在开发的最终阶段或游戏完成之后,您肯定不想把资源耗费在创建自己的启动器上。
问: 艾克索拉启动器的费用是多少?
答: 启动器是一个增值服务产品,也就是说,艾克索拉标准费用中已包含启动器访问权限。如果要通过艾克索拉CDN来交付游戏和更新,则可能产生额外费用(0.01美元/GB)。但如果使用P2P负载均衡系统,平均可将该费用减少80%。
问: 游戏需要启动器保持运行才能正常工作吗?
答: 默认情况下,启动器将始终运行。启动器启动游戏后将隐藏在系统托盘中,因此不会占用大量资源。玩家可以关闭启动器进程,游戏将继续运行,因为实际游戏会话过程中不需要连接。
问: 这与Steam有何不同?又有什么相似之处?
答: 艾克索拉启动器相当于Steam和游戏之间的一座桥梁。
问: 如果在Steam上发布游戏,能够从启动器下载所有内容吗?还是只将完整游戏和启动器上传到Steam,之后再从启动器获取额外更新?
答: 这两种方式启动器均支持。您可以将游戏的最新版本打包到启动器中,然后在Steam上分发,这种情况下用户无需另行下载(游戏交付由Steam全权负责)。如需快速交付一个更新,则可使用启动器作为快速交付手段,而无需再将游戏打包到启动器并重新上传到Steam。选择哪种方式由您自行决定。
问: 开发者需要维护两个游戏版本吗,一个用于Steam,一个用于独立程序?还是只需将同一个版本上传到Steam?
答: 不需要两个版本。如果同时使用独立程序和Steam两种交付方式,艾克索拉启动器也可满足您的需要,它可将这两个平台的用户数据收集到一个数据库中。有一个无缝集成的功能可以让在Steam中首次运行该游戏的新用户无缝通过注册流程,因为我们不会询问其任何信息。同时他们也可访问您在Steam生态系统之外的官网,并使用Steam OpenID在官网进行登录,从而加入官方/中心化社区(例如在论坛上进行交流、发现新游戏、阅读新闻等)。
问: 我正在使用Steam工具,包括他们的启动器,也不用操心CDN费用。我为什么要冒这个风险?
答: 您可以在由Steam支付CDN费用的同时使用艾克索拉启动器,并可以将您的游戏打包到启动器以在Steam分发。这不仅没有风险,而且好处很多,得益于启动器充分的可定制性,您可以采用您所希望的方式,借助启动器与您的活跃社群开展沟通。您还可以收集一批用户储备,从而在Steam生态系统之外接触这些受众,并与您的粉丝进行交流。
问: 你们有没有预集成启动器的CDN列表?要进一步集成,我是否需要联系CDN厂商?我能否使用列表以外的CDN?
答: 是的,艾克索拉提供一系列预集成的CDN,包括G-Core Labs、Akamai。您不需要联系艾克索拉启动器预集成的CDN厂商。如要使用其他CDN,请联系您的帐户经理。
问: 用Solid State Networks不行吗?
答: Solid State Networks的主要业务是CDN,所以他们的启动器解决方案并非为优化CDN费用而设计。
问: 启动器中是否包含IPC解决方案?
答: 目前没有IPC,因为启动器中没有需要使用IPC通信的功能。未来将会添加更多功能,例如直播视频流,以及浮层(overlay)中的游戏商店功能(要求IPC,通过SDK实现),因此我们有添加IPC的计划。
问: 艾克索拉启动器的用户可如何访问游戏?可通过订阅、优惠券或促销码等形式来分发游戏吗?
答: 目前用户只能通过兑换游戏密钥来访问游戏。
问: 如果艾克索拉启动器的用户未购买游戏密钥,可以下载游戏更新吗?
答: 不能。如果未购买游戏密钥,则无法访问游戏和游戏更新。
问: 有没有可通过P2P连接来连接同一局域网上的电脑的解决方案?这样数据可以只在该局域网内传输。
答: 暂时还没有此类解决方案。
问: 艾克索拉启动器支持不同访问级别吗?例如"alpha"用于测试,"beta"用于最终用户。
答: 是的,艾克索拉启动器可支持不同访问级别。上传游戏编译版本时,可选择两个阶段之一:test,用于测试;master,用于最终用户。如要使用stage=test阶段发布的游戏来启动启动器,请在控制台中传递-game_stage test参数。例如:launcher.exe -game_stage test。
问: 艾克索拉启动器的游戏列表中会显示什么游戏?是显示所有添加的游戏,还是只显示用户已购买的游戏?
答: 该列表包含已添加到启动器的所有游戏。用户已购买的游戏会显示开始游戏按钮,其他游戏则显示购买按钮。
问: 特殊用户可以获得免费游戏密钥吗?怎样使用?
答: 可以,您可从发布商帐户下载游戏密钥,然后通过希望的方式免费发送给用户。这些用户可在启动器中激活其密钥。
问: 用户在启动器中完成认证后,可以自动在游戏中通过认证吗?
答: 可以,有一个自动进行游戏内认证的解决方案。--xsolla-login-token参数用于将用户数据从艾克索拉启动器发送到游戏。要获取用户数据,可解码该参数的值(请参阅高级诀窍)。
问: 可以将启动器的下载链接发送给用户吗?比如在游戏密钥激活说明中发送。
答: 游戏密钥激活说明中不包含启动器的下载链接。要单独发送该链接,请执行以下操作:
- 生成安装文件。
- 在发布商帐户的游戏密钥设置中,将该安装文件作为DRM Free(无数字版权管理)的分发包上传。