目录

1. 接口功能

当游戏界面同时存在多个对象,容易发生卡顿时,例如多人PK、回城、观战、特效较多等情况,应用可以通过该接口将游戏场景ID、卡顿Level、FPS、对象数量、effect数量、是否为挂机模式、latency数据上传给HMS SDK,系统调控资源适配APP场景,使用户体验更加流畅。

2. 调用场景

为避免数据发送过于频繁,请按如下原则调用本接口:
● 游戏场景ID、卡顿Level、挂机模式及时上传。
● 网络延迟数据、对象数量、effect数量按区段上传。

● FPS至多每隔秒上传一次(也可以在FPS低于某个帧率时才发送,例如30帧游戏,低于25帧发送,60帧游戏,低于45帧发送)。

3. 接口约束

● 在调用本接口前必须先向华为游戏中心提交开放硬件能力申请并通过审核,并成功调用registerHardwareCapability接口申请注册开放硬件能力。
合作伙伴提交权限申请邮箱:game.business@huawei.com,华为游戏中心在3个工作日内回复。
● 本接口只支持在中国大陆地区发布的应用。

● 本接口只支持特定的华为手机(目前支持EMUI8.2及以上版本),并且HMS Core(APK)的版本需要大于2.6.1。

4. 调用方法

  1. long rst = HMSAgent.Game.updateGameInfo(GameInfo gameInfo);

5. 请求参数

参数名称必选(M)/可选(O)类型参数说明
gameInfo
M
GameInfo
包含游戏场景详细信息的对象。
GameInfo
参数名称必选(M)/可选(O)类型参数说明
sceneId
M
int
游戏的场景编号,0~50为保留值,50以上开发者可以根据实际场景自己定义。当前已定义的游戏场景取值如下:
● 0:默认场景。
● 1:游戏开始启动。
● 3:游戏启动结束。
level
M
int
场景资源级别,取值范围如下:
● 1:低负载,卡顿风险低。评级标准:同屏人数0到29,技能特效使用频率低。
● 2:中负载,卡顿风险中。评级标准:同屏人数30到59,技能特效使用频率正常。
● 3:高负载,卡顿风险高。评级标准:同屏人数 大于等于60,技能特效使用频繁。
fps
O
Float
帧数。
objectCount
O
int
游戏对象数量。
effect
O
int
特效数量。
safePowerMode
M
int
挂机模式/主角死亡,请固定设置为0。
● 0:false
● 1:true
latency
M
int
网络延迟(50ms变化给一次)。
loading
O
int
场景加载情况。
● 0:结束加载。
● 1:开始加载。
server_ip
O
string
当前链接的服务器ip。
t_fps
M
int
游戏目标帧率。
resolution
M
int
是否开启高清模式。
● 0:关
● 1:高清
如果不涉及,请设置为0。
qualtiy
O
int
画质。
● 0:高
● 1:中
● 2:低
peopleNum
O
int
同屏人数。必须与level参数的值对应。
thread1
M
String
引擎逻辑线程池中的渲染关联线程名字,请设为空字符串。
thread1_id
M
String
引擎逻辑线程池中的渲染关联线程tid。如果有多个tid,使用“|”分隔,例如2531|874|8003。
battle
M
String
一局游戏的开始/结束状态。
● 0:一局结束。
● 1:一局开始。

6. 结果回调

无。

7. 返回码

本接口的返回值即为返回码,如下表所示。
类型返回码常量返回码值返回码说明处理建议
通用返回码
参见通用返回码。
业务返回码
GameStatusCodes.GAME_STATE_SUCCESS
0
成功。
GameStatusCodes.GAME_STATE_PARAM_ERROR
7005
请求参数错误。
请根据logcat日志定位出错的入参。
日志Tag: HUAWEIGameApiImpl。
常见错误:Manifest文件中application节点未配置开发者的支付ID,详细配置请参考配置工程文件。
GameStatusCodes.GAME_STATE_CALL_REPEAT
7012
重复调用接口。
此接口1秒内只允许调用20次。
GameStatusCodes.GAME_STATE_NOT_REGISTER
7015
未注册硬件能力。
请确保调用registerHardwareCapability接口,并且该接口已经注册成功。

8. 调用示例

  1. private void updateGameInfo() {
  2.    if(!isRegister) {
  3.        return;
  4.    }
  5.    showLog("updateGameInfo: begin");
  6.    GameInfo info = new GameInfo();
  7.    /**
  8.     * info.setxxxx;
  9.     */
  10.    long rst = HMSAgent.Game.updateGameInfo(info);
  11.    showLog("updateGameInfo: onResult=" + rst);
  12. }