Game AI SDK開源版本釋出:基於影像的遊戲場景自動化框架
導語
2020年7月,我們探討了AI與自動化測試的關係,並向大家介紹了騰訊互動娛樂事業群TuringLab團隊出版的《AI自動化測試:技術原理、平臺搭建與工程實踐》一書。這本書將TuringLab團隊基於深度學習的自動化AI測試框架基礎的開發與應用經驗詳細的展示在讀者面前,與讀者分享了騰訊遊戲是如何將AI技術與自動化測試相結合完成測試需求的。在 文章推送(超連結:https://mp.weixin.qq.com/s/vKhfddXnWZFXcQmU1734xQ)後,不少使用者留言反饋了對書中提到的AI SDK的濃厚興趣,並詢問如何下載使用。
現在,Game AI SDK開源版本正式對外發布!歡迎各位開發者 下載體驗(超連結:https://wetest.qq.com/product/game_ai_sdk)。
本篇文章將用4k字左右的篇幅,向讀者們詳細介紹Game AI SDK的相關內容。同時,為了更好的瞭解使用者的使用反饋和意見,TuringLab團隊的技術大佬們建立了技術交流QQ群(群號:1095989343),歡迎大家加入。
基於影像的遊戲場景自動化框架
一、 概述
在自動化測試領域,針對遊戲場景的自動化是一個難點,目前還沒有通用的技術方案。這是由於遊戲是高度個性化的產品,不同品類遊戲玩法差異極大。每款遊戲通常都是獨立設計開發,遊戲開發商也不對外暴露統一的介面,這也意味著傳統的基於API介面進行自動化的方案在遊戲領域並不通用。此外,期待遊戲開發商對外提供統一的自動化介面,也是件不現實的事情。
為了支援遊戲場景的自動化,基於影像識別和遊戲AI等方面技術,騰訊Turing Lab開發了基於遊戲影像的AI自動化框架——Game AI SDK。整個方案不依賴遊戲開發商提供任何API介面,以遊戲影像作為輸入,以觸屏操作為輸出,類似於我們人類玩遊戲的過程。示意圖如下所示:
目前Game AI SDK已經在多個品類多款遊戲的自動化測試上進行了驗證和應用,並取得了良好的效果。一個典型的AI SDK應用示意圖如下所示:
l 左側為遊戲終端裝置,執行待自動化測試的遊戲;
l 右側為遊戲自動化框架AI SDK,根據輸入影像決策遊戲操作;
l AI Client連線了遊戲終端裝置和AI SDK,從終端裝置上實時獲取遊戲影像,並將AI SDK決策的遊戲操作轉換為觸屏操作
二、 AI SDK架構介紹
1、 技術架構
AI SDK整體技術框架如下圖所示,主要包含IO Service、Manager Center、UI自動化、遊戲場景識別、AI自動化等幾個模組。
各模組的核心功能如下:
l IO Service
負責AI SDK的輸入輸出控制,輸入為遊戲影像,輸出為點選、滑動等遊戲動操作;同時還負責AI SDK內部服務狀態的上報。
l Manager Center
從IO Service接收輸入影像,分發給UI自動化模組或AI自動化模組,並轉發UI自動化和AI自動化的遊戲動作輸出;同時也負責AI SDK服務狀態的異常監控等。
l UI自動化
透過影像識別演算法,識別遊戲影像中使用者配置的UI按鈕或彈窗,並根據使用者配置的UI操作,決策出該如何進行UI自動化流程,並最終進入遊戲場景中。
l 遊戲場景識別
根據使用者定義的場景識別配置檔案,識別遊戲場景內的遊戲元素(敵人、血條、技能狀態、數字等)。場景識別的各項遊戲元素的結果,將作為特徵資料輸入給AI自動化模組,具體需要識別哪些遊戲元素,根據AI需求自行定義。
l AI自動化
根據場景識別後得到的特徵資料,進行AI決策,輸出遊戲操作,遊戲操作通常為點選某個畫素、在某畫素區間滑動。
1、 資料流程
AI SDK自動化流程可分為遊戲UI自動化和遊戲場景自動化兩個階段,UI自動化根據使用者配置定義進入特定遊戲場景,遊戲場景自動化則在遊戲場景中進行戰鬥、駕駛、升級等各種遊戲自動化操作。兩個階段可以不斷迴圈重複,每個階段的資料流程如下:
1) 遊戲UI自動化階段
l AI Client從手機端獲取遊戲影像後,經過1、2、3步驟將影像傳送給UI自動化模組
l UI自動化模組識別UI介面中的按鈕或彈窗,決策出需要進行的UI操作,並經過4、5、6步驟將UI動作輸出至AI Client
經過若干次UI自動化操作後,遊戲從UI場景進入到遊戲場景,進入遊戲場景自動化階段。
2) 遊戲場景自動化階段
l AI Client從手機端獲取遊戲影像,經過1、2、7步驟將影像傳送給遊戲場景識別模組,並識別出遊戲場景中各項遊戲元素
l AI自動化模組經步驟8獲取到識別結果後,根據遊戲AI演算法或特定邏輯規則決策出AI動作,經9、10、11步驟將AI動作輸出至AI Client
經過一段時間的遊戲場景自動化操作,遊戲場景結束,又返回到UI自動化階段。
三、 遊戲場景自動化
由於遊戲品類比較多,從格鬥遊戲、賽車游到FPS射擊遊戲,不同遊戲場景的遊戲玩法差異極大;遊戲畫面中的元素包括敵人、道具、怪物甚至卡牌,不同遊戲畫面中需要識別的遊戲元素也存在極大差異。能夠適用於多種遊戲場景的自動化是AI SDK的核心功能,下面主要介紹AI SDK針對遊戲場景的自動化方案。
1、 遊戲場景識別
遊戲場景識別模組中提供了模板匹配、梯度模板匹配、特徵點匹配、目標檢測、深度神經網路等多種演算法,識別遊戲場景中的遊戲元素,並對外輸出影像識別結果。具體識別哪些元素,使用者可由場景識別配置檔案自行定義。在AI SDK的場景識別中,主要將遊戲中需要識別的元素分為以下幾類:
l 固定物體目標
主要採用各種模板匹配演算法檢測遊戲場景中的固定目標物,如遊戲中的按鈕、圖示、技能狀態等。該方法會返回場景中檢測到的目標物以及畫素座標。
l 形變物體目標
主要採用卷積神經網路檢測遊戲場景中的影像形狀易發生變化的目標物,如遊戲角色、建築物、車輛、怪物等。該方法會返回場景中目標物的位置及類別。
l 畫素目標
檢測出遊戲影像檢測區域內滿足特定條件的畫素點,該方法會返回符合條件的所有畫素點集合。
l 數字
該方法會返回遊戲場景中檢測區域內的數字和其所在的畫素位置等資訊。
l 血條
該方法會返回遊戲場景中檢測區域內的血量百分比和血條位置等資訊。
在實際應用中,通常我們將一個目標物和幾個同類別的目標物定義為一個task任務,一個複雜的遊戲場景可能包含幾十個需要識別的task任務。要完成一次場景識別,需要所有task任務都完成。遊戲場景識別模組的技術架構如下圖所示:
1、為了降低任務檢測的時間消耗(如果場景識別耗費太多時間,那麼場景識別之後進行的AI決策就會存在很高的時延,嚴重製約AI自動化的表現),採用了多檢測任務並行執行的方式,充分利用多核CPU資源。
2、對於採用深度網路模型進行檢測的可形變目標物,任務耗時往往比較長,會嚴重影響每一次場景識別的效能。這裡對深度網路模型進行了裁剪最佳化,減少卷積核數目、減少全連線層神經元個數,在保證識別準確率的情況下,儘量降低深度網路模型的效能開銷。
負責AI SDK的輸入輸出控制,輸入為遊戲影像,輸出為點選、滑動等遊戲動操作;同時還負責AI SDK內部服務狀態的上報。
l Manager Center
從IO Service接收輸入影像,分發給UI自動化模組或AI自動化模組,並轉發UI自動化和AI自動化的遊戲動作輸出;同時也負責AI SDK服務狀態的異常監控等。
l UI自動化
透過影像識別演算法,識別遊戲影像中使用者配置的UI按鈕或彈窗,並根據使用者配置的UI操作,決策出該如何進行UI自動化流程,並最終進入遊戲場景中。
l 遊戲場景識別
根據使用者定義的場景識別配置檔案,識別遊戲場景內的遊戲元素(敵人、血條、技能狀態、數字等)。場景識別的各項遊戲元素的結果,將作為特徵資料輸入給AI自動化模組,具體需要識別哪些遊戲元素,根據AI需求自行定義。
l AI自動化
根據場景識別後得到的特徵資料,進行AI決策,輸出遊戲操作,遊戲操作通常為點選某個畫素、在某畫素區間滑動。
1、 資料流程
AI SDK自動化流程可分為遊戲UI自動化和遊戲場景自動化兩個階段,UI自動化根據使用者配置定義進入特定遊戲場景,遊戲場景自動化則在遊戲場景中進行戰鬥、駕駛、升級等各種遊戲自動化操作。兩個階段可以不斷迴圈重複,每個階段的資料流程如下:
1) 遊戲UI自動化階段
l AI Client從手機端獲取遊戲影像後,經過1、2、3步驟將影像傳送給UI自動化模組
l UI自動化模組識別UI介面中的按鈕或彈窗,決策出需要進行的UI操作,並經過4、5、6步驟將UI動作輸出至AI Client
經過若干次UI自動化操作後,遊戲從UI場景進入到遊戲場景,進入遊戲場景自動化階段。
2) 遊戲場景自動化階段
l AI Client從手機端獲取遊戲影像,經過1、2、7步驟將影像傳送給遊戲場景識別模組,並識別出遊戲場景中各項遊戲元素
l AI自動化模組經步驟8獲取到識別結果後,根據遊戲AI演算法或特定邏輯規則決策出AI動作,經9、10、11步驟將AI動作輸出至AI Client
經過一段時間的遊戲場景自動化操作,遊戲場景結束,又返回到UI自動化階段。
三、 遊戲場景自動化
由於遊戲品類比較多,從格鬥遊戲、賽車游到FPS射擊遊戲,不同遊戲場景的遊戲玩法差異極大;遊戲畫面中的元素包括敵人、道具、怪物甚至卡牌,不同遊戲畫面中需要識別的遊戲元素也存在極大差異。能夠適用於多種遊戲場景的自動化是AI SDK的核心功能,下面主要介紹AI SDK針對遊戲場景的自動化方案。
1、 遊戲場景識別
遊戲場景識別模組中提供了模板匹配、梯度模板匹配、特徵點匹配、目標檢測、深度神經網路等多種演算法,識別遊戲場景中的遊戲元素,並對外輸出影像識別結果。具體識別哪些元素,使用者可由場景識別配置檔案自行定義。在AI SDK的場景識別中,主要將遊戲中需要識別的元素分為以下幾類:
l 固定物體目標
主要採用各種模板匹配演算法檢測遊戲場景中的固定目標物,如遊戲中的按鈕、圖示、技能狀態等。該方法會返回場景中檢測到的目標物以及畫素座標。
l 形變物體目標
主要採用卷積神經網路檢測遊戲場景中的影像形狀易發生變化的目標物,如遊戲角色、建築物、車輛、怪物等。該方法會返回場景中目標物的位置及類別。
l 畫素目標
檢測出遊戲影像檢測區域內滿足特定條件的畫素點,該方法會返回符合條件的所有畫素點集合。
l 數字
該方法會返回遊戲場景中檢測區域內的數字和其所在的畫素位置等資訊。
l 血條
該方法會返回遊戲場景中檢測區域內的血量百分比和血條位置等資訊。
在實際應用中,通常我們將一個目標物和幾個同類別的目標物定義為一個task任務,一個複雜的遊戲場景可能包含幾十個需要識別的task任務。要完成一次場景識別,需要所有task任務都完成。遊戲場景識別模組的技術架構如下圖所示:
1、為了降低任務檢測的時間消耗(如果場景識別耗費太多時間,那麼場景識別之後進行的AI決策就會存在很高的時延,嚴重製約AI自動化的表現),採用了多檢測任務並行執行的方式,充分利用多核CPU資源。
2、對於採用深度網路模型進行檢測的可形變目標物,任務耗時往往比較長,會嚴重影響每一次場景識別的效能。這裡對深度網路模型進行了裁剪最佳化,減少卷積核數目、減少全連線層神經元個數,在保證識別準確率的情況下,儘量降低深度網路模型的效能開銷。
在實際的遊戲場景自動化中,有以下幾點需要注意:
1、 單純的一個AI演算法很難滿足實際自動化需求,往往需要在AI演算法之上附加一定的規則,如採用模仿學習AI+少量規則的方式來實現;
2、 為了在遊戲場景自動化過程中覆蓋更多的情況,可以在特定AI演算法之上附加一定的隨機性,讓AI能探索更多的場景;
3、 遊戲場景識別的結果不能達到百分之百準確無誤,針對識別結果做一些簡單的過濾或處理,能很好的提升AI自動化的魯棒性;
4、 由於所有的遊戲動作最終以模擬觸屏的方式執行,控制好遊戲動作中觸屏的時長、滑動的畫素距離都能提升我們AI的表現。
四、 應用舉例
目前AI SDK已經在競速類、賽車類、FPS類、MOBA類、MMO類等多種型別的遊戲場景中進行了自動化驗證,取得了不錯的應用效果。能夠針對多種遊戲場景進行自動化測試,且不需要遊戲端提供任何介面。一些遊戲中的應用效果影片如下:
從執行方式上,AI SDK可在本地部署執行,進行單獨的遊戲AI自動化測試。如果要進行批次大規模自動化測試,也可以部署在雲端,提供線上遊戲AI自動化測試服務,如下圖所示:
五、 總結和展望
本文介紹了基於影像的遊戲場景自動化框架,框架的優點是不依賴遊戲端提供介面或資料,方案通用性強,可適用於絕大多數遊戲場景的自動化測試。且遊戲場景自動化外掛完成後,隨著遊戲版本的迭代更新,只要遊戲的玩法不改變,已經實現的自動化過程一般不需要做修改,自動化過程維護的成本比較低,不需要隨著遊戲內部實現的改變而修改。
同時AI SDK目前也存在一些問題,尤其在易用性方面,如何讓使用者更容易的使用是下一步要解決的問題。雖然AI SDK內建了常用遊戲AI演算法,提供了常見遊戲型別的AI自動化框架模板,可以有效的降低接入新遊戲進行遊戲場景自動化的成本,但對使用者也有一定能力要求。我們也在嘗試將一些簡單且通用性強的AI自動化過程來透過工具配置的方式讓使用者來完成,讓一些普通使用者也能夠完成一些場景的AI自動化。其次,在場景識別模組,提升目標物識別準確率,對實現AI自動化有諸多好處。而在提升識別準確率的同時降低效能開銷,也是需要持續最佳化的問題。
目前騰訊Turing Lab編著的關於AI SDK及其應用的書籍《AI自動化測試:技術原理、平臺構建與工程實踐》已上架可於 京東進行購買(超連結:)。AI ADK也已經對外開源開放,歡迎各位開發者 下載體驗。(超連結: https://wetest.qq.com/product/game_ai_sdk)
AI SDK 技術交流Q群|1095989343
效能測試技術交流群:720150565
檢視PerfDog詳情:https://perfdog.qq.com/?ADTAG=media.dev_website
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31420651/viewspace-2719458/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Game AI SDK 開源釋出:基於影像的遊戲場景自動化框架GAMAI遊戲框架
- facebook instant game 釋出指南-小遊戲 SDKGAM遊戲
- 【開源】釋出一個基於JavaFX的小遊戲:CrazyAlphaJava遊戲
- 基於Selenium + Python的web自動化框架PythonWeb框架
- 基於WebGL HTML5 的場景小遊戲WebHTML遊戲
- 基於DotNetty實現自動釋出 - 自動檢測程式碼變化Netty
- 基於AI的移動端自動化測試框架的設計與實踐AI框架
- 基於Redis訊息的訂閱釋出應用場景Redis
- 剛剛,華為全場景 AI 計算框架MindSpore開源!AI框架
- Java + SikuliX 基於影像實現自動化測試Java
- web自動化測試框架-03 介紹標籤,背景,場景,場景大綱Web框架
- 騰訊釋出混元大模型Turbo版本 用AI助力場景創新大模型AI
- 基於Selenium+Python的web自動化測試框架PythonWeb框架
- 一種基於 cypress 的 UI 自動化測試框架UI框架
- jenkins實踐篇(1)——基於分支的自動釋出Jenkins
- 基於DotNetty實現自動釋出 - 實現一鍵打包釋出Netty
- Netflix釋出用於Spring Boot的GraphQL的開源服務框架DGSSpring Boot框架
- 基於Python3.7 Robot Framework自動化框架搭建PythonFramework框架
- 【開源】小程式、小遊戲和Web運動引擎 to2to 釋出遊戲Web
- 生成式AI助力遊戲開發:騰訊推出3D虛擬場景自動生成解決方案AI遊戲開發3D
- 第 1 天|基於 AI 進行遊戲開發:5 天建立一個農場遊戲!AI遊戲開發
- 基於 Laravel 的 CatchAdmin 新版本釋出啦?Laravel
- 基於微服務SDK框架與JavaAgent技術,低成本助力應用高效釋出微服務框架Java
- 自動駕駛方程式賽車,微軟釋出機器學習開源框架 | AI一週學術自動駕駛微軟機器學習框架AI
- 利用人工智慧實現基於影像的自動化檢查人工智慧
- 基於開源IM即時通訊框架MobileIMSDK:RainbowChat v10.0版已釋出框架AI
- 基於開源IM即時通訊框架MobileIMSDK:RainbowChat v8.1版已釋出框架AI
- 基於開源IM即時通訊框架MobileIMSDK:RainbowChat v8.2版已釋出框架AI
- 基於 Windows Server 2022 2025 到未來版本的遷移指導框架 自動化遷移工具WindowsServer框架
- Micronaut框架3的GA 版本釋出!框架
- 基於影像差異識別與頁面自動遍歷的開源 web ui 測試庫WebUI
- 原始碼推薦:基於uni-app前端框架,開源版本還開源免費商用原始碼APP前端框架
- 前端開發:基於cypress的自動化實踐前端
- 音數協敖然釋出《超級數字場景源動力——遊戲科技與創新應用研究》報告遊戲
- Knativa 基於流量的灰度釋出和自動彈性實踐
- [自動化]基於kolla的自動化部署ceph叢集
- 聯邦學習開源框架FATE新版本釋出!配套引擎EggRoll更新聯邦學習框架
- 市場洞察 – 基於知名 IP 的移動遊戲表現遊戲