事件設計與傳送指南¶
什麼是事件分類法?¶
事件分類法(Event Taxonomy)是將收集的事件與屬性以 一致的結構與命名規則系統化整理的分類體系。
如果不加規則地收集遊戲中發生的各種行為資料(登入、購買、升級等),就會出現各團隊以不同名稱傳送相同資料,或在分析時難以判斷某筆資料代表什麼的情況。事件分類法可避免這些混亂,並協助將收集到的資料直接用於分析。
為什麼需要?¶
| 問題情境 | 套用分類法後 |
|---|---|
| 同一事件被各團隊以不同名稱傳送 | 可用一致名稱整合資料 |
| 不清楚某個屬性屬於哪個事件 | 屬性結構明確,能快速掌握分析範圍 |
| 新增事件時沒有標準而隨意定義 | 可依既有規則一致擴充 |
| 事後才發現資料品質問題 | 可依 schema 事先驗證 |
結構¶
Analytics 的事件分類法由 事件 與 屬性 兩層構成。
什麼是事件?¶
事件是將使用者在遊戲內進行的特定行為記錄為資料的單位。它包含「何時、誰、做了什麼」,是分析的最基本單位。
- 例:使用者購買道具 → 發生
item_purchase事件 - 例:使用者通過特定關卡 → 發生
stage_clear事件 - 例:使用者登入 App → 發生
login事件
什麼是屬性?¶
屬性是事件發生時一起記錄的細節資訊。只有事件本身時,只能知道「發生了什麼」,但透過屬性,還能進一步掌握「在什麼條件下、以什麼值」發生。
- 例:
item_purchase事件的屬性 → 道具 ID、付款金額、貨幣單位 - 例:
stage_clear事件的屬性 → 關卡編號、通關時間、使用角色
屬性會依收集主體分為兩種。
- 平台屬性:不需額外設定,只要串接 SDK,Hive 就會預設收集的屬性。包含國家、OS、App 版本、伺服器 ID 等。
- 事件屬性:隨事件直接傳送的屬性。由您直接定義並傳送分析所需項目。
自訂事件傳送¶
遊戲中自行定義的事件(自訂事件)可依下列收集 schema 傳送,並在 Analytics 中用於分析。
實際資料傳送使用 Hive SDK 用戶端日誌傳送 方法。傳送所需的原始碼可在 事件 的 [建立來源] 分頁中依語言自動產生。
在傳送事件前,可先於 事件 定義事件名稱與屬性,方便團隊內分享與管理。不過,即使未事先定義就傳送資料,Analytics 也會自動辨識收到的資料,並會在最長 1 小時內反映到事件清單中。
Note
自動辨識的事件會在事件清單中將建立者顯示為 system,且可在事件畫面中額外輸入說明・屬性資訊進行管理。
Analytics 收集 schema¶
傳送自訂事件時使用的基本 schema。所有事件都必須依下列格式傳送。
| 欄位 | 必填與否 | 說明 |
|---|---|---|
| identifierProvider | 必填 | 指定使用者識別碼發行系統。若已串接 Hive SDK,請輸入 hive。 |
| userId | 必填 | 以帳號為基準的使用者識別碼。若沒有值,可接受 null。 |
| deviceId | 必填 | 以裝置為基準的使用者識別碼。若沒有值,可接受 null。 |
| appId | 必填 | 輸入已註冊於 Hive 控制台 > App Center 的 App ID。 |
| dateTime | 必填 | 事件發生的日期時間。 |
| timezone | 必填 | 事件發生時的時區。 |
| category | 必填 | 決定資料要收集到哪個資料表的區分值。自訂事件必須固定傳送為 raw_event_log。若輸入其他值,該事件資料將無法正確收集到對應資料表。 |
| eventName | 必填 | 用來分類事件的事件名稱。 |
| eventAttribute | 必填 | 與事件一起傳送的屬性集合。項目必須定義,若沒有值可接受 null。 |
| hiveAttribute | 必填 | 由 Hive provisioning server 提供的平台屬性集合。目前仍需開發者直接設定值後傳送。項目必須定義,若沒有值可接受 null。 |
Warning
請盡量避免讓 userId 與 deviceId 兩者都為 null。若兩者都沒有值,將無法辨識使用者,進而使依 cohort 的使用者分析變得困難。
事件名稱命名規則¶
建議 eventName 使用的事件名稱遵循以下規則。
- 建議字元:英文字母(a–z, A–Z,區分大小寫)、數字(0–9)、底線(
_)、連字號(-) - 分隔符號:單字之間使用底線(
_)分隔,不使用空格 - 形式:建議使用可清楚描述事件的
名詞_動詞形式 - 範例:
item_purchase,level_up,tutorial_complete,stage_start
Warning
不遵守上述規則的事件名稱,在分析上的使用可能會受到限制。
hiveAttribute / eventAttribute 結構範例¶
hiveAttribute 與 eventAttribute 分別以 JSON 物件形式傳送。
hiveAttribute — 由 Hive provisioning server 提供的平台屬性。包含 market、server ID 等,目前需由開發者直接設定值後傳送。未來預計改為自動收集方式。
eventAttribute — 與事件一起直接傳送的屬性。包含分析該事件所需的細節資訊。
Note
不論傳送形式為何,Analytics 預設都會將屬性值視為文字型。若需要以數字或日期型進行彙總的屬性,請在 事件畫面 的 [屬性] 分頁中變更該屬性的資料型別。
屬性命名規則¶
建議 eventAttribute 與 hiveAttribute 的 key 名稱遵循以下規則。
- 建議字元:英文字母(a–z, A–Z,區分大小寫)、數字(0–9)、底線(
_)、連字號(-) - 分隔符號:單字之間使用底線(
_)分隔,不使用空格 - 範例:
item_id,contents-type,stage_level
Warning
不遵守上述規則的屬性 key,在分析上的使用可能會受到限制。
屬性 key 轉換規則¶
傳送屬性時,系統會依下列規則自動轉換部分 key 名稱。請注意,實際在分析時查詢到的 key 名稱可能不同。
-Hive 後綴 (hiveAttribute)¶
hiveAttribute 的 所有 key 結尾都會自動加上 -Hive。
| 傳送 key | Analytics 中顯示的 key |
|---|---|
country | country-Hive |
market | market-Hive |
-Event 後綴 (eventAttribute)¶
僅當 eventAttribute 的 key 與下列 8 個共通欄位名稱重疊時,才會自動加上 -Event。
- timezone, dateTime, identifierProvider, userId, deviceId, appId, category, eventName
| 傳送 key | 是否與共通欄位衝突 | Analytics 顯示 key |
|---|---|---|
category | O | category-Event |
level | X | level (無轉換) |
Warning
hiveAttribute 與 eventAttribute 都會以轉換後的 key 名稱作為資料儲存基準。分析時請以轉換後的名稱(-Hive, -Event)查詢屬性。
推薦事件¶
以下是 Analytics 中分析價值較高的事件範例。若依 eventName 與 eventAttribute 傳送這些事件,可直接用 Analytics 的所有功能進行圖表・漏斗・留存等分析。
升級¶
| eventName | 說明 |
|---|---|
account_level_up | 帳號升級 |
character_level_up | 角色升級 |
guild_level_up | 公會升級 |
skill_level_up | 技能升級 |
eventAttribute(共通):
| 屬性 | 說明 | 範例 |
|---|---|---|
levelPrev | 升級前等級 | 10 |
level | 升級後等級 | 11 |
貨幣¶
| eventName | 說明 |
|---|---|
asset_earn | 獲得貨幣 |
asset_spend | 消耗貨幣 |
eventAttribute(共通):
| 屬性 | 說明 | 範例 |
|---|---|---|
assetName | 貨幣名稱 | diamond, gold |
actionName | 變動原因 | inapp_purchase, quest_reward |
amountPrev | 變動前貨幣量 | 500 |
amountVar | 變動量 | 100 |
amountCurr | 變動後貨幣量 | 600 |
isPaid | 是否為付費貨幣 | Y, N |
內容¶
| eventName | 說明 |
|---|---|
contents_start | 接受・開始內容 |
contents_success | 完成內容 |
contents_fail | 內容失敗 |
contents_cancel | 取消內容 |
eventAttribute(共通):
| 屬性 | 說明 | 範例 |
|---|---|---|
modeTypeName | 內容類型 | raid, quest |
userLevel | 使用者等級 | 50 |
playTimeSec | 遊玩時間(秒) | 120 |
Tip
若以 contents_start → contents_success / contents_fail / contents_cancel 的流程建立漏斗,可分析各內容的完成率與流失區段。
App 內商店¶
| eventName | 說明 |
|---|---|
store_view | 查看商店商品詳情 |
store_purchase_click | 點擊購買商店商品 |
eventAttribute(共通):
| 屬性 | 說明 | 範例 |
|---|---|---|
productLocation | 商品曝光位置 | package, main_shop |
productType | 商品類型 | pay, free, advertisement |
Tip
可透過 store_view → store_purchase_click 漏斗分析各商品的點擊轉換率。
夥伴¶
| eventName | 說明 |
|---|---|
mate_earn | 獲得夥伴 |
mate_spend | 消耗・出售・刪除夥伴 |
eventAttribute(共通):
| 屬性 | 說明 | 範例 |
|---|---|---|
mateId | 夥伴 ID | pet_001 |
mateGrade | 夥伴等級 | rare, epic |
mateChangeFlag | 變動途徑 | gacha, purchase, upgrade, sell |
mateChangeAmount | 變動量 | 1 |
社交活動¶
| eventName | 說明 |
|---|---|
party_action | 隊伍活動(邀請・加入・退出) |
friend_action | 好友活動(新增・刪除) |
guild_action | 公會活動(加入・退出・驅逐) |