写点什么

游戏与硬件深度协同,打造更精细的体验优化

作者:HarmonyOS SDK
  • 2025-01-24
    贵州
  • 本文字数:1833 字

    阅读完需:约 6 分钟

高画质的游戏往往带来手机的发热和卡顿从而影响游戏体验。开发者希望能够获取到手机运行的实时状态,从而能够进行主动的负载调节,将手机发热时游戏体验影响降到最低;同时手机也可以通过游戏传入的关键场景如"正在下载资源""团战中""大厅中"等,做差异化的调度保障,给玩家提供更好的游戏体验。


HarmonyOS SDK游戏服务(Game Service Kit)提供游戏场景感知功能开发能力,游戏场景感知是指通过开放 API 接口,打通游戏和硬件协同的通道。一方面,游戏可以通过 set 接口为系统提供精细化场景信息、配置信息、网络信息等数据;同时系统可以通过 callback 接口向游戏反馈系统实时状态,发热预测等信息,使得双方能够利用这些信息进行更紧密和深入的协作,在系统资源有限的情况下优化玩家的游戏体验。


游戏服务提供游戏场景感知 API 接口,帮助开发者快速实现游戏与系统的交互,开发者通过游戏场景感知,可以完成向系统发送游戏数据以及从系统获取设备状态信息两大动作。


场景介绍

游戏场景感知主要服务于游戏场景优化,其特点是可以通过 API 接口感知游戏场景和运行状态的不同,使用不同策略调度系统资源以达到更精细化的优化效果。

业务流程

开发步骤

1.导入 Game Service Kit 及公共模块。


import { gamePerformance } from '@kit.GameServiceKit';import { hilog } from '@kit.PerformanceAnalysisKit';
复制代码


2.导入相关模块后,需先调用 init 接口对游戏场景感知进行初始化。


说明:


init 接口是调用其他接口的前提,如果未初始化或初始化失败,将无法调用其他接口。


首次调用 init 接口时,需确保连接网络,否则会导致鉴权失败。


let gamePackageInfo: gamePerformance.GamePackageInfo = {    messageType: 0,    bundleName: "com.example.demo", // 仅示例,请替换为实际的游戏包名    appVersion: "1.0"}try {  gamePerformance.init(gamePackageInfo).then(() => {    // 初始化成功    hilog.info(0x0001, 'demo', `Succeeded in initing.`);  })} catch (error) {  // 初始化失败  let err = error as BusinessError;  hilog.error(0x0001, 'demo', `Failed to init. Code: ${err.code}, message: ${err.message}`);}
复制代码


3.调用 on 接口可以订阅设备状态变化事件,获取设备状态变化的通知(如设备温控档位)。


function onDeviceStateChange(data:gamePerformance.DeviceInfo) {  // 设备信息详情  hilog.info(0x0001, 'demo', `device state changed.`);}
// 订阅deviceStateChanged事件try { gamePerformance.on('deviceStateChanged', onDeviceStateChange);} catch (error) { // 订阅失败 let err = error as BusinessError; hilog.error(0x0001, 'demo', `Failed to subscribe. Code: ${err.code}, message: ${err.message}`);}
复制代码


4.初始化成功后,可以通过调用 updateGameInfo 接口上报游戏信息(包信息、配置信息、场景信息和网络信息)。


// 以更新游戏场景信息为例let gameSceneInfo: gamePerformance.GameSceneInfo = {    messageType: 2,    sceneID: 7,    importanceLevel: 4}try {    gamePerformance.updateGameInfo(gameSceneInfo).then(() => {        // 更新游戏场景信息成功        hilog.info(0x0001, 'demo', `Succeeded in updating.`);    });} catch (error) {    // 更新游戏场景信息失败    let err = error as BusinessError;    hilog.error(0x0001, 'demo', `Failed to update. Code: ${err.code}, message: ${err.message}`);}
复制代码


5.如不再需要订阅,则可以通过调用 off 接口取消订阅设备状态。


function onDeviceStateChange(data:gamePerformance.DeviceInfo) {  // 设备信息详情  hilog.info(0x0001, 'demo', `device state changed.`);}
// 取消订阅deviceStateChanged事件try { gamePerformance.off('deviceStateChanged', onDeviceStateChange);} catch (error) { // 取消订阅失败 let err = error as BusinessError; hilog.error(0x0001, 'demo', `Failed to unsubscribe. Code: ${err.code}, message: ${err.message}`);}
// 取消deviceStateChanged事件的全部订阅try { gamePerformance.off("deviceStateChanged");} catch (error) { // 取消订阅失败 let err = error as BusinessError; hilog.error(0x0001, 'demo', `Failed to unsubscribe. Code: ${err.code}, message: ${err.message}`);}
复制代码


了解更多详情>>


访问游戏服务联盟官网


获取游戏场景感知功能开发指导文档

用户头像

HarmonyOS SDK

关注

HarmonyOS SDK 2022-06-16 加入

HarmonyOS SDK通过将HarmonyOS系统级能力对外开放,支撑开发者高效打造更纯净、更智能、更精致、更易用的鸿蒙原生应用,和开发者共同成长。

评论

发布
暂无评论
游戏与硬件深度协同,打造更精细的体验优化_harmoyos_HarmonyOS SDK_InfoQ写作社区