概览
这篇指南用于帮助伙伴为用户创建最佳的体验,同时还符合Epic Games商城的要求。以下小节将关于跨平台游玩多人游戏的要求、Epic在线服务(EOS)和其它玩家体验相关方面提供测试案例和建议。
在Epic Games商城中发布产品或者任何更新之前,我们 强烈建议 你检查并验证这些测试案例,从而确保成功发行。
Epic在线服务
Epic账号服务中的玩家授权
使用Epic账号服务的游戏需要玩家同意才能共享数据。只要游戏使用正确的CredentialType,当玩家下一次启动游戏时,应该指示他们授予单次同意。对于在Epic Games商城出售的游戏,此同意会在购买流程期间自动授予。然而,玩家能够随时从其账号连接页面撤回同意。
测试步骤
- 登录 未 与你开发人员门户组织关联的账号
- 确保该游戏未在账号连接页面列出
- 启动游戏
- 出现提示时完成同意流程
- 退出并重启游戏,确认未显示同意流程
预期结果
- 账号应该能够继续进入Gameplay,不会第二次出现同意流程,Epic Games商城上的游戏应该使用ExchangeCode(而非AccountPortal)确保正确行为。
- 游戏启动时,Epic账号服务应用程序应处于已验证状态;未经验证的应用程序将阻止贵组织外部的账号授予同意。
通过情况
- 同意流程仅在初次运行游戏的时候出现。
- Epic账号服务应用已经完成品牌审核。
失败情况
- 第一次提供过同意之后,再次启动游戏仍然显示同意流程。
- Epic账号服务应用未完成品牌审核。品牌设置为 未配置(Not Configured) 或者 审核中(Under Review) 。
连接接口访问令牌更新
连接接口(Connect Interface)要求游戏每小时更新玩家的访问令牌,以保持与Epic在线服务的连接。
游戏应使用AddNotifyAuthExpiration函数,以便在访问令牌即将到期时收到通知,并更新其登录。令牌过期后,未能执行此更新流程将导致服务调用失败。
测试步骤
- 启动游戏并完成初始登录流程
- 等待60分钟
- 尝试使用游戏实现的Epic在线服务功能(成就、多人游戏、玩家数据存储等)
- 通过你游戏应用程序的本地日志文件验证游戏客户端收到来自EOS SDK的OnAuthExpirationCallback 通知,并使用 EOS_Connect_Login 成功刷新身份验证。
预期结果
- 使用Epic在线服务的游戏功能在至少60分钟后继续按预期运行。
通过情况
- EOS功能在游戏运行60分钟后仍然能够使用。
失败情况
- EOS功能在初始登录60分钟后不能继续使用。
离线模式支持
Epic游戏启动程序允许用户选择离线模式,这将在启动时将 epicusername
和 epicuserid
命令行参数传递给游戏进程。
不过,此时并不提供交换代码,也不为该游戏提供Epic在线服务功能,包括权利检查。开发人员可以选择限制或允许访问由权利控制的任何其他内容,或者可以实现安全权利缓存,允许玩家在设定的时间内离线进行。
测试步骤
- 连接到互联网时,在Epic Games启动程序的设置(Settings)菜单中,选择启用离线模式浏览(Enable Offline Mode Browsing)。
- 退出启动程序,删除计算机的互联网连接
- 重启启动程序,输入账号的邮件地址继续
- 启动游戏
预期结果
- 游戏保持稳定,并在尝试进入需要有效连接的游戏区域时,向玩家发送需要互联网连接的消息。
通过情况
- 游戏在离线模式下可以游玩。
- 游戏在离线模式下可以游玩,但是无法访问特定内容。
- 游戏告知玩家离线模式下不能启动。
失败情况
- 游戏在离线模式下试图启动时崩溃。
- 游戏在离线模式下启动时显示错误或者无用的信息。
沙盒/部署ID处理(仅限发布工具产品)
使用发布工具(SPT)配置的所有产品都配备了标准的三沙盒组合:Dev、Stage和Live。初始化Epic在线服务时,需要静态沙盒ID和部署ID值,我们建议以下实现方案,确保构建能够处理在多个沙盒中的下载和使用:
由于初始化Epic在线服务(EOS)需要静态沙盒ID和部署ID,建议进行以下实现来确保构建能够被下载,并且在多个沙盒中使用。
- 沙盒ID(Sandbox ID) :该ID可以在启动时从Epic Games启动程序以提供给全部游戏的
epicsandboxid
启动参数的形式获取。 - 部署ID(Deployment ID) :该ID可以在你的构建中在一个自定义的针对当前沙盒预期部署的if/switch语句块中设置。
测试步骤
- 将构建从Dev提升到Stage沙盒
- 登录同时在Dev和Stage沙盒中拥有游戏的账号。
- 在Dev沙盒中启动游戏,确保实现的Epic在线服务功能如预期运行
- 退出并在Stage沙盒中重新启动游戏,测试相同功能
预期结果
- 游戏功能应该在不同的沙盒中保持可用。
- 沙盒之间的玩家状态应该有区别;如果成就或附加购买仅在单个沙盒中完成,则不应在其他沙盒中显示。
通过情况
- 游戏处理
epicsandboxid
启动参数,并且动态设置正确的沙盒ID和部署ID。 - 游戏依赖项要求硬编码的沙盒ID和部署ID数值,并且分别使用实时数值。
失败情况
- 游戏从Live沙盒下载时参考Dev或者Stage沙盒/部署,从而阻止玩家登录。
- 游戏发布时Live部署仍然设置为 私人(Private) ,从而阻止开发人员门户以外的玩家登录。
玩家体验
Epic Games商城成就
在Epic Games商城中发布的游戏可以使用Epic Games商城成就来按照与游戏的各种互动奖励玩家经验点(XP),从而增强玩家体验。这些成就使用Epic在线服务成就的功能来实现游戏内互动。
游戏中实现了Epic在线服务之后,可以在开发人员门户中配置Epic Games商城成就,指定成就的XP数值。Epic Games商城成就要求使用Epic账号服务来验证玩家并记录其成就解锁进度。
为了优化玩家体验,我们建议启用Epic Games覆层来在游戏内显示成就和成就进度。
测试步骤
- 启动游戏。
- 在游戏中登录一个Epic Games账号。
- 进行游戏并达到解锁成就所要求的进度。
预期结果
- 如果启用了Epic Games覆层:
- 覆层(按下 Shift+F3来打开)会在成就选项卡中显示游戏可用的成就。
- 成就选项卡中每个成就都会显示对应的XP数值。
- 成就解锁通知会在屏幕顶部的中间显示,并且会播放解锁音效并显示对应的成就等级(比如青铜,白银,黄金或者铂金)。
通过情况
- 成就在游戏中通过Epic Games覆层正确显示并解锁。
- 成就在游戏中正确解锁并且展示在Epic Games商城的游戏产品页面上。
失败情况
- Epic Games覆层中的成就仅显示Epic在线服务成就(不显示XP、稀有度和等级)
Unicode字符支持
Windows和Epic账号都允许玩家在显示名称中使用拉丁字母以外的字符。游戏应在其测试通道中包含具有此配置的用户。
测试步骤
- 使用一个包含非拉丁字符的Windows用户账号进行登录
- 登录到使用包含非拉丁字符的显示名称的Epic账号
- 将游戏安装到一个文件名包含非拉丁字符的目录中。
- 启动游戏
- 进入每种游戏模式并创建保存数据
- 退出并重新启动游戏
预期结果
- 所有游戏模式都应该按照预期运行。
- 保存的数据应该在重新启动游戏后仍然可用。
通过情况
- 用户的Windows用户账号名和安装路径中包含非拉丁字符,而游戏仍然能够正常运行。
- Epic Games的账户名称在游戏中正常显示。
失败情况
- 游戏安装路径包含非拉丁字符时无法启动。
- 游戏安装路径包含非拉丁字符,或者Epic Games账号名称包含非拉丁字符时,游戏无法保存或加载玩家数据。
- 游戏显示null字符而不是账户名称中的非拉丁字符。
可再发行程序包安装
Epic Games商城目前不处理DirectX或Visual C++等常见可再发行程序包的自动安装;合作伙伴必须处理自己游戏所需的先决条件的相关安装。有关可用选项的更多信息,请参阅游戏先决条件安装工具选项文档。
在使用BuildPatchTool上传构建时,Epic Games启动程序将安装使用PrereqIds参数配置的必备可再发行程序包。但是,玩家可以随时选择卸载这些可再发行程序包;游戏应该传送有关缺失先决条件的消息,并为玩家提供解决问题所需的信息。
测试步骤
- 安装游戏,包括任何配置的可再发行程序包。
- 注意: 成功后启动程序会返回代码0、1638和3010。
- 启动游戏,进入Gameplay
- 卸载所需的可再发行程序包
- 尝试启动游戏
预期结果
- 游戏应该通知玩家缺少所需的可再发行程序包
通过情况
- 游戏在初次启动时安装需要的可再发行程序包。
- 游戏发现可再发行程序包被移除时提醒玩家。
失败情况
- 可再发行程序包被移除时,游戏无法启动。
- 游戏不告诉玩家如何解决无法启动的问题。
语言和区域设置
游戏可以使用三个关键设置,来详细说明玩家的位置、语言和区域:
- 账号区域 :商城使用账号区域来确定玩家看到的优惠、价格和年龄等级。对于使用与本地时区相关的区域构建和启动时间的游戏,账号区域也用于驱动这些功能。玩家可以通过EOS_UserInfo的国家/地区属性获取该区域码。
- 首选通信语言 :首选通信语言用于确定通过电子邮件联系玩家时使用哪种语言。玩家可以通过EOS_UserInfo的PreferredLanguage属性获取该语言码。
- 启动程序语言 :启动程序语言用于确定在Epic Games启动程序中显示哪种语言。此语言代码在启动游戏时通过epiclocale参数提供给所有游戏:
支持的启动程序语言
启动程序语言 | epiclocale参数 |
---|---|
阿拉伯语 | ar |
英语 | en-US |
德语 | de |
西班牙语(西班牙) | es-ES |
西班牙语(拉丁美洲) | es-MX |
法语 | fr |
意大利语 | it |
日语 | ja |
韩语 | ko |
波兰语 | pl |
葡萄牙语 | pt-BR |
俄语 | ru |
泰语 | th |
土耳其语 | tr |
中文(简体) | zh-Hans |
中文(繁体) | zh-Hant |
测试步骤
- 将Epic Games启动程序语言设置设置为游戏支持的语言
- 启动游戏
预期结果
- 游戏自动设置正确的显示语言,或允许玩家通过游戏内选项在支持的语言之间自由切换
- 游戏能够处理和解析启动程序提供的所有命令行参数而不会崩溃
通过情况
- 游戏处理
epiclocale
参数并且自动设置游戏内语言。 - 游戏以一个默认语言启动,但是运行玩家手动通过游戏内选项设置语言。
失败情况
- 游戏在商品界面上显示支持的语言,但是玩家无法通过
epiclocale
参数或者游戏内选项设置该语言。
构建更新的大小优化
作为构建上传过程的一部分,BuildPatchTool自动将构建中的数据与此前上传的数据进行比较,并优化生成的补丁,从而为现有玩家减少下载大小。
此过程已通过BuildPatch Tool v1.5.0进行了改进,现在比较与产品相关的所有瑕疵的数据,而不是原始上传的单个瑕疵。我们 强烈建议 使用可在开发门户中下载的最新版BuildPatchTool。
测试步骤
- 使用暂存瑕疵或私有沙盒安装当前版本的游戏。
- 注意: :从私有沙盒下载的功能仅适用于参与自助发布工具封闭测试的合作伙伴。
- 在测试环境中设置实时游戏的下一个更新
- 重启启动程序,并了解更新的下载大小
预期结果
- 更新结果应该是,下载大小大致代表版本之间的二进制增量,而不是完全重新下载游戏
- 使用BuildPatchTool的BinaryOptimiseDelta模式可以进一步优化两个特定构建版本之间更新的下载大小;此命令应使用空的CloudDir文件夹运行,与此前的游戏上传相比,完成处理可能需要更长时间
通过情况
- 玩家可以正常下载不同版本之间的更新。
失败情况
- 由于上传时使用了过时的BuildPatch Tool,玩家在不同版本之间更新时需要重新下载整个游戏。
启动程序云存档
我们建议在本地保存数据的所有游戏都利用启动程序云存档(Launcher Cloud Saves)功能。有关测试用例详情,请参阅云存档页面。
轻松反作弊
所有使用轻松反作弊的游戏都应该在发布前确保验证过反作弊整合检查单中的案例。
跨平台游戏
在Epic Games,我们希望玩家可以和他们的朋友以及其他玩家一起游戏,无论他们通过哪个商城购买游戏。因此,所有支持在线多人游戏的作品在进入Epic Games商城后,都必须支持所有其他PC商城的跨平台多人游戏。与其他非PC平台(如主机)的跨平台游戏是可选的,但我们鼓励这样做。
你不需要借助任何特定服务或账户系统来实现跨平台游戏。Epic将Epic在线服务和Epic账号作为一种潜在解决方案免费提供。不过,我们支持并欢迎其他基于发行商的方案或第三方解决方案。
为了确保你的产品符合要求,我们提供了一系列测试案例,供你测试跨平台功能。更多详情请参阅跨平台多人游戏指南。