在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Android 游戲性能調優的一些技巧

谷歌開發者 ? 來源:谷歌開發者 ? 作者:谷歌開發者 ? 2022-09-08 11:16 ? 次閱讀

Android 游戲開發工具大升級中,我們介紹了 Android 游戲開發套件的豐富功能和多項 API 改進,并針對大屏幕設備的游戲開發提供了一些建議,同時介紹了處理、分發大型游戲素材的最佳實踐。本文我們將提供幾則在游戲性能優化方面的技巧,同時向您介紹 Android 在游戲方面引入的新特性。讓我們一起打造卓越的 Android 游戲體驗吧!

如果您更喜歡通過視頻了解此內容,請在此處查看:

△Android 游戲開發工具大升級

Bilibili 視頻鏈接
https://www.bilibili.com/video/BV1B34y1Y7SR/

游戲性能調優

在上一篇文章中,我們了解了如何通過合理的 DPI 選擇、紋理優化等方式讓游戲在更多的硬件上運行。然而僅僅能運行還不夠,或許您也非常希望能了解這些選擇和配置是否為玩家提供了足夠優秀的用戶體驗,以及接下來有哪些方法能幫助您不斷優化應用,并逐漸將應用推廣至更大的用戶群中。

配置 APT 庫

Android 性能調優工具 (Android Performance Tuner,APT) 是專門用于開發者了解游戲性能數據的工具。它可以在 Android Vitals 中幫助您洞察游戲性能表現,使您能夠在整個 Android 設備生態中衡量和優化自己的游戲保真度、加載時間、幀率。并且所有的數據都是來自真實的設備和真實的玩家,具有極高的參考價值。

void InitAPI(JNIEnv* env, jobject activity) {    SwappyGL_init(env, activity);     swappy_enabled = SwappyGL_isEnabled();    TFSettings settings {};    if (swappy_enabled) {        settings.swappy_tracer_fn = &SwappyGL_injectTracer;    }    // ...}

△ 使用 Swappy_injectTracer 自動記錄幀信息

要使用 APT 庫,您需要在每一幀中調用一個 tick 函數。不過如果您已經使用了 Android FramePacing 庫,則通過 FramePacing API 初始化時傳入 Swappy_injectTracer 函數就可以自動記錄幀時間了。

如果您用到了 Unity 游戲引擎,則可以導入我們的自定義軟件包 (插件),然后從 Window --> Android Performance Tuner --> Setup 菜單進入設置界面來啟用和配置它。此外您還可以使用設置腳本來初始化 APT 工具。如果您希望了解關于 Unity 游戲引擎的更多信息和使用幫助,請參閱 Unity Codelab 將 Android 性能調優工具整合進您的 Unity 游戲:

https://developer.android.google.cn/codelabs/android-performance-tuner-unity#0 d72061ee-2e90-11ed-ba43-dac502259ad0.png △?Android 性能調優工具與 Unity 結合使用 下一步是定義注解參數,并將它們與游戲中的質量級別、場景或其他值得關注的信息關聯起來。隨后,您需要在適當的上下文調用 APT 的 API。 d74865ea-2e90-11ed-ba43-dac502259ad0.png △?Unity 的 APT 插件中設置注解參數

如果您使用了 Unity 的 Android 性能調優工具插件,那么可以在配置面板的注解參數中看到幾個默認的注解:

場景 (Scene) 注解映射到當前處于前臺的游戲場景;

加載狀態 (LoadingState);

當然,您也可以在上圖的界面里添加更多自定義注解參數。如果您集成了 C/C++ 的引擎,那么需要您用 Protocol Buffers 來定義這些注解:

import "tuningfork.proto"enum LoadingState {  INVALID_LS = 0; LOADING = 1; NOT_LOADING = 2;}enum Level {  INVALID_LEVEL = 0; Level_1 = 1; Level_2 = 2; Level_3 = 3;}message Annotation {  optional LoadingState loading_state = 1;  optional Level level = 2;}

△定義注解參數

您還可以在 Codelab: 使用 Proto DataStore 中了解到更多關于使用 Protocol Buffers 的內容: https://developer.android.google.cn/codelabs/android-proto-datastore#0

extern "C"void SetAnnotations() {  Annotation a;  a.set_loading(     sLoading ? proto_tf::LOADING : proto_tf::NOT_LOADING  );  a.set_level((proto_tf::Level) sLevel)  auto ser = tf::TuningFork_CProtobufSerialization_Alloc(a);  TuningFork_setCurrentAnnotation(&ser);  TuningFork_CProtobufSerialization_free(&ser);}

△設置注解參數的值

隨后,您需要調用 APT 的 API 告知上下文發生了變化,參見上面的代碼。

完成 APT 庫的集成和注解參數配置后,您需要在 Google Cloud Console 中啟用 Android Performance Parameters API,這樣才能開始收集玩家數據。參照下圖找到該 API 并啟用:

d757839a-2e90-11ed-ba43-dac502259ad0.png △?在 Google Cloud Console 中啟用 APT

游戲加載時間調優

對于玩家來說,游戲的加載時間很大程度影響了他們在閑暇時間打開游戲的意愿。有了 APT,您可以清楚地看到在不同設備、不同啟動類型下游戲加載時間的統計圖表: d77854e4-2e90-11ed-ba43-dac502259ad0.png △?Android 性能調優工具顯示的加載時間 如下圖所示,startRecordingLoadingTime 方法可以使用給定的事件元數據和注釋創建一個加載時間事件,并且將參數中的句柄 (handle) 設置為剛才創建的加載事件,便于后面使用 stopRecordingLoadingTime 方法結束時間記錄過程。 d79292aa-2e90-11ed-ba43-dac502259ad0.png △?Android 性能調優工具記錄加載時間的兩個函數 您一定要記得調用 stopRecordingLoadingTime 方法,它會結束此前啟動的加載時間事件,暫存剛才記錄的結果,并于下一次會話清理時將事件記錄上傳到 Google Cloud 進行統計分析。加載時間事件中包含了許多元數據,可以幫助我們正確地區分不同場景下的加載時間,比如應用首次冷啟動、后臺轉前臺運行、加載新關卡等。如果涉及到網絡加載,還會顯示加載的數據源和網絡類型信息。參見圖中的結構體定義:?

d7b8b41c-2e90-11ed-ba43-dac502259ad0.png

△Android 性能調優工具中加載時間事件包含的元數據

除了提供上面的幾個注解,您還可以添加一些自定義的注解來幫助鎖定引起性能問題的源頭。創建資源加載組也是一種不錯的方法,比如,當您的游戲從 CDN 下載資源時,會形成大量可以單獨追蹤的下載任務和解壓任務,為它們創建資源加載組可以很方便地分析這些任務執行的性能表現。

這些組也可以添加注解,這樣您就可以看到造成特定場景加載緩慢的原因了。此時需要使用另一組方法,圖中給出的是啟動記錄的方法 startLoadingGroup 的函數簽名:

d7cc0440-2e90-11ed-ba43-dac502259ad0.png

△startLoadingGroup 函數簽名 當您完成這些集成和調用后,耐心等待一段時間,Google Play 控制臺的 Android Vitals 中就將顯示這些加載時間的統計信息,比如:首次加載、冷加載、熱加載、關卡加載時間等等。您可以很方便地了解到用戶是否因為加載時間過長,而失去耐心退出游戲,還可以深入了解哪些設備或者關卡可能遇到了問題。 d7f644ee-2e90-11ed-ba43-dac502259ad0.png

△在 Android Vitals 查看游戲加載時間統計信息

Android Vitals 也可以顯示幀率的統計信息,呈現方式非常類似: d809d96e-2e90-11ed-ba43-dac502259ad0.png △?在 Android Vitals 查看游戲幀率統計信息 您可以從中了解到哪些設備的性能不足以支撐游戲流暢運行,哪些場景造成的幀率下降問題最嚴重。有了這些信息,您就可以優先針對那些最需要調整優化的用戶群進行改進,讓您的游戲能在盡可能多的設備上暢玩。

覆蓋面和設備

最近我們在 Google Play 控制臺提供了 "覆蓋面和設備 (Reach and devices)" 功能,它可以幫助您更好地了解游戲覆蓋的設備、國家區域以及在游戲生命周期內的測試和優化。您可以看到游戲的分布情況、安裝趨勢、崩潰率等統計信息,便于深入了解玩家和他們遇到的問題。

d82914aa-2e90-11ed-ba43-dac502259ad0.png

△安裝分布和趨勢統計信息 您還可以從多個維度分析這些數據,比如 SoC (System-on-Chip)、圖形 API (如 OpenGL 和 Vulkan) 等:

d84bce32-2e90-11ed-ba43-dac502259ad0.png

△從多種維度分析數據 您還可以用自己的游戲數據與同類游戲的公開數據進行比較,從而發現新的開發方向,在著手開發下一版本之前做好充分的準備。另外,針對國家/地區的過濾條件能幫助您精確制定發布和擴張的計劃。最后,您還可以選擇導出這些統計數據,點擊如圖所示的 "Export report" 即可:

d85f4002-2e90-11ed-ba43-dac502259ad0.png

△導出統計數據報告

Android GPU 檢查器

剛才我們從統計報告中基本確定了需要針對優化的方面,那么該怎樣做呢?Android GPU 檢查器不僅能提供游戲運行期間系統活動、高頻硬件計數器的事件跟蹤記錄,還可以用類似 systrace 的工具在時間軸上繪制出時間占用圖像。

Android GPU 檢查器在兩年前新增了對 GPU 顯存信息的支持、使用 ANGLE 提供了 OpenGL ES 支持。在兼容了更多設備的同時,也增加了幀檢查器 (Frame Profiler),它可以幫助您深入檢查單個渲染幀,查看分解后的渲染通道級別的時間信息。另外,幀檢查器還能幫您檢查分析包括紋理、幾何體、著色器、渲染管線在內的多種 GPU 信息,從而分析某一幀內進行的各種 GPU 活動。

d866c35e-2e90-11ed-ba43-dac502259ad0.png △?Android GPU 檢查器的新功能

我們也正在與更多的設備制造商合作,希望能盡快為您提供更多的現有設備支持。

跨設備暢玩

截至目前,我們已經實現了在更多的屏幕類型上運行您的游戲,試想這樣一個場景:您的玩家在下班路上掏出手機玩了一會兒游戲,到家后一陣忙碌,終于躺在沙發上,想要打開平板接著玩。那么如何保證玩家可以在平板上繼續剛才手機上的游戲進度呢?

Google Play 游戲 SDK 為您提供了便捷的方法實現剛才的場景。它可以讓玩家登錄,并保存和同步游戲進度。這樣一來,當同一賬號在另一臺設備登錄時,您的游戲就可以檢索并且取回服務器上的玩家數據,讓他們可以直接從最后保存的時間點繼續進行。同時,您還可以集成一些熱門功能,比如游戲的成就系統、玩家排行榜等。

我們正在持續完善 Google Play 游戲服務,它提供了一個更加簡化的登錄 API,您可以在先行體驗版的 SDK 中用一行代碼實現登錄功能,如下所示:

GamesSignInClient signInCli = PlayGames.getGamesSignInClient(this);signInCli.isAuthenticated().addOnCompleteListener(task -> {  boolean isAuthenticated =     task.isSuccessful() && task.getResult().isAuthenticated();  if (isAuthenticated) {    // 繼續使用 Google Play 游戲服務  }});
△ 更新后的登錄 API (預覽版)

我們還計劃簡化用戶賬戶的創建過程,當他們安裝 Google Play 游戲應用時就會順便創建個人資料了。這樣一來,即使用戶還沒有安裝好 Google Play 游戲應用,也能很快完成賬戶創建,然后回到游戲暢玩了。

△簡化后的用戶賬戶設置過程

另外,我們正著力于進一步簡化自動登錄流程,注冊過的用戶重新登錄會變得更加簡單。從 2022 年開始,用戶就不再需要先安裝 Google Play 游戲應用才能使用 Play 游戲服務了。

△ 2022 年 Google Play 游戲的新變化

有了這些更新,全球的 20 億 Google Play 游戲用戶就可以零點擊登錄 Play 游戲服務了。

游戲模式

隨著越來越多玩家青睞移動游戲,我們也致力于讓 Android 系統給游戲玩家和開發者提供更多的便利。從 Android 12 開始,部分設備將提供游戲模式 (Game Mode) API。這些 API 能讓設備按照用戶的需求提供極致的整機性能、平衡的性能或是最佳電池續航。而您前期為了適配各種設備對游戲所做的各項工作,剛好也可以用于響應這些性能相關的用戶偏好。

d8f764fe-2e90-11ed-ba43-dac502259ad0.png

另外,Pixel 6 之類的設備還集成了新的游戲中心面板,它能以懸浮窗的方式為用戶提供游戲模式開關,以及幀率計數器和 YouTube 直播助手等游戲實用工具。

d9076a48-2e90-11ed-ba43-dac502259ad0.png △ 邊下載邊玩功能

從 Android 12 開始提供的 "邊下載邊玩" 功能可以減少玩家的等待時間,讓他們更快開始游戲。為了支持這項功能,您需要使用 App Bundle 來提交游戲,并且需要避免使用一些舊版本的 Ads SDK。這是因為舊版本的 Ads SDK 會在使用資源之前對其進行分析,這類行為會妨礙邊下載邊玩功能的實現。

總結

我們一起走過的漫漫長路因為有您的參與而生機勃勃。我們非常感謝您對 Android 游戲開發事業的支持,同時希望能給您提供更好的支持。在這篇文章中,我們向您分享了 Android 游戲性能調優的一些技巧,以及 Google Play 游戲服務的多項服務開發者和玩家的改進、基于性能調優工具的 Android Vitals 分析面板。我們也希望這些新特性和改進,能讓玩家享受到更優秀的游戲體驗,也能助力您更高效更輕松地開發游戲作品!

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3959

    瀏覽量

    129188
  • API
    API
    +關注

    關注

    2

    文章

    1553

    瀏覽量

    63262
  • 開發套件
    +關注

    關注

    2

    文章

    164

    瀏覽量

    24513

原文標題:打造卓越的 Android 游戲體驗

文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    史上最全性能調總結

    在說什么是性能調之前,我們先來說下,計算機的體系結構。
    的頭像 發表于 05-13 08:57 ?6633次閱讀
    史上最全<b class='flag-5'>性能</b><b class='flag-5'>調</b><b class='flag-5'>優</b>總結

    HBase性能調概述

    HBase性能調
    發表于 07-03 11:35

    基于全HDD aarch64服務器的Ceph性能調實踐總結

    如ISA-L也都在arm平臺上進行了優化。- 對于SPDK,也是從軟件層面在arm平臺上進行了優化。4.3 操作系統調從Linux內核來調Ceph
    發表于 07-05 14:26

    infosphere CDC性能調的文檔

    infosphere CDC性能調的文檔
    發表于 09-07 09:30 ?7次下載
    infosphere CDC<b class='flag-5'>性能</b><b class='flag-5'>調</b><b class='flag-5'>優</b>的文檔

    基于Android平臺的手機游戲的設計與實現

    本文首先提出了Android 游戲開發的總體框架,研究并總結了Android 游戲開發涉及的一些關鍵技術,包括
    發表于 01-31 05:42 ?39次下載

    微軟改進最新版SteamVR游戲性能

    Windows Insiders早期推出,據說,該產品可以提升一些通過Steam購買的游戲性能,例如Samsung Odyssey等微軟支持的耳機。 根據微軟的博客文章所述,其更新包括:
    的頭像 發表于 03-10 17:18 ?4319次閱讀

    如何對電機進行調調的好處是什么?

    如何自動對電機進行調
    的頭像 發表于 08-22 00:03 ?3289次閱讀

    一些獨立游戲的展示介紹

    MIX的賈斯汀伍德沃德介紹了他在加利福尼亞州洛杉磯的SIGGRAPH 2015展示的一些獨立游戲
    的頭像 發表于 11-07 06:51 ?2370次閱讀

    ElasticSearch調需要注意什么

    ? S官方調指南 第部分:調索引速度 第二部分:調
    的頭像 發表于 09-02 17:24 ?1602次閱讀

    Linux用電功耗調的筆記分享

    整理一些Linux用電功耗調的筆記,分享給小伙伴,關于用電調個人覺得
    的頭像 發表于 06-23 15:19 ?4508次閱讀

    javajvm調有幾種方法

    JVM調是Java應用程序性能優化過程中的重要步驟,它通過針對JVM進行優化來提高應用程序的性能和可靠性。JVM調
    的頭像 發表于 12-05 11:11 ?2309次閱讀

    jvm調主要是調哪里

    ,棧內存存儲方法調用和局部變量,非堆內存用于存儲加載的類信息以及一些靜態變量等。 1.1 堆內存調 堆內存是JVM中最主要的內存區域,常見的調
    的頭像 發表于 12-05 11:37 ?1732次閱讀

    jvm調工具有哪些

    JVM調是提高Java應用程序性能的重要手段,而JVM調工具則是輔助開發人員進行調
    的頭像 發表于 12-05 11:44 ?1285次閱讀

    鴻蒙開發實戰:【性能調組件】

    性能調組件包含系統和應用調框架,旨在為開發者提供性能
    的頭像 發表于 03-13 15:12 ?669次閱讀
    鴻蒙開發實戰:【<b class='flag-5'>性能</b><b class='flag-5'>調</b><b class='flag-5'>優</b>組件】

    新Bios更新 !保持出廠游戲性能!

    解讀新 BIOS 的一些特性,以及新老 BIOS 的游戲性能差距。這里多說句,我們的老 BIOS 匹配的是產品剛發布時的性能,這樣才能做
    的頭像 發表于 06-26 17:55 ?689次閱讀
    新Bios更新 !保持出廠<b class='flag-5'>游戲性能</b>!
    主站蜘蛛池模板: 欧美草比| 俺去啦最新官网 | 成人精品一区二区三区电影 | 久久羞羞视频 | 日韩免费观看的一级毛片 | 亚洲国产午夜精品理论片的软件 | 日本免费一级 | yy4080一级毛片免费观看 | 色老板在线视频一区二区 | 国产理论视频在线观看 | 久久性妇女精品免费 | 恐怖片大全恐怖片免费观看好看的恐怖片 | 国产成人v爽在线免播放观看 | 四虎精品影院 | 国产精品免费拍拍1000部 | 色久优优 欧美色久优优 | 亚洲免费三级 | 老师啊灬啊灬用力啊快224视频 | 变态重口极致另类在线 | 精品一区二区三区三区 | 色婷婷亚洲精品综合影院 | 新网球王子u17世界杯篇免费观看 | 午夜免费视频观看在线播放 | 国产精品爽爽影院在线 | 好男人午夜www视频在线观看 | 永久黄网站色视频免费观看99 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 朱元璋传奇1998王耿豪版 | 精品卡1卡2卡三卡免费视频 | 国产亚洲高清视频 | 亚洲午夜久久久久影院 | 免费在线观看大片影视大全 | 美国色天使| 手机看片国产在线 | 国产精品欧美一区二区三区 | 国产美女亚洲精品久久久综合 | 三级黄色录像 | 人人草人人爱 | 性xxxxbbbb免费播放视频 | 无遮挡很爽很污很黄很色的网站 | 老子影院午夜精品欧美视频 |