Game Analytics Pipeline (遊戲服務監控與分析)

- 作者 -
Howard Hsiung, Territory Business Development Manager, AWS
            David Hung, Technical Program Intern, AWS

orange-bar

[挑戰/適用場景]

如何充分了解玩家輪廓、遊戲行為、喜好並進而精準地抓住玩家的目光,保留遊戲新鮮感,增進玩家留存、課金率等,是遊戲產業中相當重要的課題。隨著遊戲推陳出新的速度越來越快,快速、便利與低成本打造遊戲資料分析平台,儼然成為各家遊戲廠商發展的目標與方向。傳統做法往往需耗費龐大的資金做初期硬體投資與採購,等待 4-6 週甚至更多的時間等硬體抵達,再花上幾週的時間做安裝設定。從一個想法到落實一個資料平台,3-6 週的時間間做初期硬體的投資與設定。

遊戲分析管道解決方案可協助遊戲開發人員啟動可擴展的無伺服器資料管道,以擷取從遊戲和服務中產生的遙測資料,並進行儲存和分析。該解決方案支援串流擷取資料,可讓使用者在數分鐘內從其遊戲和其他應用程式取得洞見。該解決方案提供 REST API 和 Amazon Kinesis 服務,用於擷取和處理遊戲遙測。它還自動驗證、轉換並以最佳化的格式傳遞資料給 Amazon Simple Storage Service (Amazon S3),以進行經濟高效的儲存和分析。該解決方案透過在 Amazon S3 中組織和結構化資料,並設定 AWS Glue 針對資料集對中繼資料编目,可讓您輕鬆與其他應用程式和使用者整合和共用資料。

這項解決方案設計用於提供將遊戲活動擷取到資料湖進行分析和儲存的架構,可讓您專注於擴充解決方案的功能,而非將時間花在管理底層基礎架構的運作上。
Game_01

遊戲分析管道解決方案架構

AWS CloudFormation 範本部署 AWS 資源,以啟用遊戲分析資料擷取、分析、監控和報告,設定基礎架構來支援無伺服器資料管道。Amazon API Gateway 提供 REST API 端點,用於在解決方案中註冊遊戲應用程式及擷取遊戲遙測資料,這會將事件傳送至 Amazon Kinesis Data StreamsAmazon DynamoDB 儲存遊戲應用程式組態和 API 金鑰。
Kinesis Data Streams 擷取來自資料生產者的串流遊戲資料,包括遊戲用戶端、遊戲伺服器和其他應用程式,並透過 Amazon Kinesis Data FirehoseAmazon Kinesis Data Analytics 啟用即時資料處理。Kinesis Data Firehose 消耗來自 Kinesis Data Streams 的串流資料,並透過批次事件叫用 AWS Lambda,進行無伺服器資料處理和轉換,然後再擷取至 Amazon Simple Storage Service (Amazon S3) 進行儲存。

AWS GlueAWS Glue 資料型錄中提供擷取、轉換和載入 (ETL) 處理工作流程和中繼資料儲存,這為資料湖整合靈活的分析工具提供了基礎。範例 Amazon Athena 查詢可分析遊戲事件,並與 Amazon QuickSight 整合以產生報告和視覺化。Amazon CloudWatch 監控、記錄並產生有關 AWS 資源使用率的警示,並建立可操作的儀表板。Amazon Simple Notification Service (Amazon SNS) 在觸發 CloudWatch 警示時,向解決方案管理員和其他資料使用者傳遞通知。

[操作步驟]

步驟概覽
步驟一 執行 AWS CloudFormation 範本
步驟二 透過 AWS Cloud 9 發送測試資料
步驟三 透過 Amazon Athena產生 SQL View
步驟四 透過 Amazon CloudWatch 即時監控
步驟五 透過 Amazon Quicksight 進行資料視覺化

步驟一、執行 AWS CloudFormation 範本

1.1

首先透過此連結直接導向 AWS Console 登入介面,登入AWS帳戶後即進入CloudFormation 範本部署介面:

Game_02

1.2

點擊 Next 按鈕即可進入參數輸入介面:
Game_03

1.3

只需輸入 Stack Name 為此範本命名,其他參數維持預設值,即可直接進入 Review 介面:
Game_04

1.4

三個項目都勾選同意後,即可按下 Create Stack 開始自動部署各項AWS資源:
Game_05

1.5

所有資源部署完成後,將可在CloudFormation介面上看到CREATE_COMPLETE狀態,接著便可進入步驟二。
Game_06

步驟二、透過 AWS Cloud 9 發送測試資料

2.1

首先創建新的Cloud 9 環境,只需輸入名稱,其他皆採用預設設定。
Game_07

2.2

創建完成後,在Cloud 9 介面按下 Open IDE 後,即可進入開發環境。
Game_08

2.3

在 Cloud 9 Terminal 中輸入以下指令,完成資料產生程式之環境設定:
git clone https://github.com/awslabs/game-analytics-pipeline

cd game-analytics-pipeline/source/demo/

python3 -m pip install --user —upgrade pip
python3 -m pip install —user virtualenv
python3 -m venv env
source env/bin/activate
pip install boto3 numpy uuid argparse
然後,便能透過 Python Script 產生測試資料,並發送至 Kinesis Data Stream,將以下指令中的 <aws-region> 替換為此範本發布區域 (如:us-east-1, us-east-2 .....), <GameEventStream> 以及 <TestApplicationID> 則替換為 CloudFormation Stack 中 Output的值,執行後即可看到開始發送資料的訊息,直到關閉終端機或手動停止執行。
Game_09
python3 publish_data.py --region <aws-region> --stream-name <GameEventsStream> --application-id <TestApplicationId>
Game_10

步驟三、透過 Amazon Athena產生 SQL View:

上一步驟中,我們將隨機產生的資料發送至 Kinesis Firehose,透過我們部署的Pipeline,此時資料已經儲存於S3 Bucket中,並使用 Glue Crawler 建立 Data Catalog。因此,接下來可以直接進入 Amazon Athena 的 Query Editor 介面中開始,使用SQL語法查詢資料。

3.1

進入 Athena Query 介面,並選擇 Database 為 gameeventsdatabase-xxxxxxx,執行以下指令即可建立名為 Weapon 的 SQL View,此範例中,我們查詢了遊戲勝利時 (event_data.match_result_type = win) 的資料,並從原來 Json 格式的 event_data 中,取出 most_used_spell 以及 map_id,成為新的欄位。
CREATE OR REPLACE VIEW win_spell AS
SELECT
*
, "json_extract_scalar"("event_data", '$.most_used_weapon') "spell_id"
, "json_extract_scalar"("event_data", '$.map_id') "map_id"
FROM
raw_events
WHERE "json_extract_scalar" ("event_data", '$.match_result_type') = 'WIN'
Game_11

步驟四、透過 Amazon CloudWatch 即時監控

4.1

在 CloudFormation Stack Output 中可以找到範本自動產生的 CloudWatch Dashboard,點選後即可進入以下畫面,監控各項服務的即時資訊,並可點選每一項指標進入檢視畫面,調整時間區段,產生需要的分析圖。
Game_21
Game_12
Game_13

步驟五、透過 Amazon Quicksight 進行資料視覺化

5.1

前往 Amazon Quicksight 控制面板,點選右上角的 Manage Quicksight ,並選擇 Security & permissions 進入權限設定頁面,完成後按下 Finish 以及 Update 更新設定。

Game_14

5.2

勾選 Amazon S3 及 Amazon Athena,並在 S3 權限控制頁面中,將此次部署的 S3 Bucket勾選 (注意: “write permission for Athena workgroup 也需勾選”),並按 Finish 送出。
Game_15
Game_16

5.3

返回 Quicksight 主畫面,點選 Datasets → New dataset → Athena → 選擇此次產生的 Athena View (win_spell) 作為資料來源 → 點選 Import to SPICE for quicker analytics 按下 Visualize 即可開始建立視覺化圖表。
Game_17
Game_18
Game_19

5.4

右上角的對話框顯示 Import Complete 後代表資料載入完成,此時可在 Fields list 中 選擇 spell_id 以及 map_id,Visual type 選擇 Vertical Bar Chart 即可產生分析結果。在此範例中,我們展現的分析圖為遊戲勝利時使用的符文統計圖,並依照遊戲地圖進一步區分資料,遊戲業者可以透過此數據進行符文及地圖調整。
Game_20

[常見問題]

Q1: Quicksight 產生的資料圖表是即時的嗎?
A1: Quicksight 的資料需要進行重新整理才會更新,目前可以透過手動或排程的方式進行,詳細資訊可訪問 QuickSight 官方使用手冊

 

Q2: 為什麼我的 Quicksight 資料一直導入失敗?
A2: 請確認您 Quicksight 權限設定中的的 S3 Bucket Write permission 已經正確開啟
orange-bar

免費註冊AWS帳號

數百萬名客戶正使用 AWS 雲端解決方案建立提升彈性、可擴展性、安全性和可靠性的應用程式,歡迎探索各類免費方案在 AWS 上進行建置。

免費註冊>>

與我們聯絡

遇到問題?不管是架構設計、架構優化、效能提升等等,都竭誠歡迎你/妳聯絡 AWS 的雲端業務!

與專人線上對談

有任何新專案的想法,想要評估使用 AWS 服務,或目前在使用上需要原廠協助之處,都可以跟我們聊聊!

開啓對話>>