一文读懂休闲游戏埋点

作者:扫地僧悟空 OPMETA优化研习社 2022-11-25 27.5k
很多开发者在完成自己的产品后,都会有疑问:我的游戏究竟做的是好还是差呢?玩家在游戏里又是怎样玩的呢?

将这些问题围绕玩家「用户行为」进一步拆解后,你是否了解游戏内的这些情况呢?

  • 玩家在游戏里都玩了多久?玩到多少关了?
  • 游戏难度设计的合理吗?玩家是否存在卡关现象并反复挑战?
  • 玩家在游戏里都获得了多少资源?游戏的资源平衡设计是否合理?
  • 游戏运行正常吗?玩家有遇到崩溃的情况吗?

要想知道应用内的用户行为,离不开“应用埋点”这件事。本文将围绕“应用埋点”,为大家详细讲解「埋点的基本概念和原理」、「埋点点位设计和分析」的全链路内容。

什么是埋点?

“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。比如用户对某个按钮的点击次数、某个视频的观看时长等等。

埋点上报的数据通常都是按照用户的某一个行为动作一条一条的进行数据上报,数据维度根据使用分析工具的不同呈现的数据维度也会不一样,但最核心的三项关键数据是:【事件(Event Name)】、【参数名(Parameter Name)】和【参数值(Parameter Vaule)】。

Tips: 在各项事件/参数名字或者数值上报的时候,我们都建议使用英文进行命名,以避免由于字符与分析平台不兼容导致的数据丢失,还能减少数据的存储空间。

事件名(Event Name):事件名是游戏埋点数据最基本的组成元素,它是对于玩家发生某种行为的一个命名,比如「游戏开始」,「玩家升级」,「获取资源」,「观看广告」等,每一种行为动作都可以作为一个事件去触发数据埋点上报。

参数名(Parameter Name):参数是对于事件的补充,能为事件提供更多背景和信息。比如,「用户内购」这一行为中,内购就是一个事件,为了更深入地分析内购事件,还可以为其设置日期、金额、项目等参数。参数名设计需要紧密结合事件(Event Name),思考哪些参数能为该事件提供更多背景、使数据更丰富。

参数值(Parameter Value):参数值是参数名的具体值,与游戏紧密相关,结合游戏内容给出参数值。

由于数据的值是有格式区分的,所以在埋点的时候还需要考虑上报参数值的数据类型,常用的数据类型有String(字符串),int(整数),Boolean(布尔)等等。数据类型的使用取决于是否需要通过埋点工具有额外的统计逻辑,比如如果以int(整数)格式上报的“123”,是能够用于服务器或者分析平台去合计和统计数据的,但是如果以String(字符串)的形式去上报,“123”是以文本格式,无法进行计算。

感兴趣的盆友可以额外学习以下文章:

https://learn.microsoft.com/zh-cn/dotnet/visual-basic/language-reference/data-types/

了解完事件名、参数名和参数值的定义后,举个例子来帮助大家更好的理解。

案例:玩家消耗了500金币升级狙击枪武器

将这个案例进行拆解后,可以发现玩家的两个动作【消耗金币】和【升级武器】,对应的可以按照分析目的,输出以下两种事件和参数设计:


Tips:开发者可以基于不同的分析目的来为同一件事情上报两个埋点,比如分析金币消耗情况(Spend Coin事件)目的是为了解整体的资源消耗数值和消耗渠道,那么Weapon Upgrade就只是其中一种消耗渠道。分析武器系统使用情况时(Weapon Upgrade事件),这里的Amount参数也可以协助分析「玩家最愿意投入资源去升级哪些武器」。

埋点是怎么实现的呢?

SDK埋点 VS S2S埋点

客户端埋点 (SDK埋点)

描述:客户端或前端页面直接记录用户的行为,进行上报 。

优点:

(1)可采集的字段更丰富,记录详细齐全;
(2)用户不请求服务器时,在客户端的行为数据也能采集 ;
(3)用户设备标识与用户行为可以关联 ;

缺点:

(1)网络环境不稳定容易影响数据的上报,导致延时;
(2)变更埋点方案需要更新包体,且用户不一定使用最新版,导致埋点数据与用户行为的变化未得到同步;
(3)如果用户清除未上报的数据,会导致上报失败 ;

案例:玩家在游戏中「进入游戏关卡」、「点击购买商品」、「提交订单」等事件均为客户端的用户行为,一般建议使用客户端埋点;

服务器埋点 (S2S埋点)

描述:将用户与服务端的交互记录进行上报

优点:

(1)服务端记录比较精准,能实时收集数据,没有延时 ;
(2)如果改变埋点,无需更新包体;
(3)在连接服务器的情况下,能够收集用户不在App内发生的行为。

缺点:

(1)缺少用户设备标识,无法关联用户行为信息;
(2)缺少用户行为上下文环境,采集信息有限。

案例:有些金融或者借贷类的应用,处于安全考虑,需要玩家在产品的服务器或者官网上进行注册或者完成信息申报。这些用户行为大多数发生在开发者的服务端而不是在客户端,这个时候需要通过S2S将自己服务器记录的数据去上报给分析平台。

分析工具所推荐埋点

大部分分析工具会有自己建议使用的埋点命名格式,以适配自己平台的报表逻辑。如AppsFlyer就会有部分af开头的预定义事件和参数如af_purchase, af_revenue等等事件,要是用GameAnalytics的漏斗分析功能也需要使用固定的一些漏斗事件格式来进行上报,具体可以参考各家分析平台的帮助文档。

自定义埋点

AF自定义埋点方法

使用AppsFlyer “埋点“需要用到「logEvent」方法,「logEvent」需要4个参数:


- 第一个参数(context)是应用程序/行为情景,可以理解为触发器;

- 第二个参数(eventName)是应用内事件名称;

- 第三个参数(eventValues)是事件参数;

- 第四个参数(listener)是非必需的上报参数,AppsFlyerRequestListener(用于处理事件提交成功/失败);

示例:发送“添加到心愿清单”事件

例如,记录用户在他们的心愿清单上添加了一件商品:



在上面的「logEvent」调用中:

- 事件名称是ADD_TO_WISHLIST;

- 事件名为下方绿色的的内容,而紧跟参数名逗号“,”之后的内容,就是参数值:

* AFInAppEventParameterName.PRICE:与事件关联的价格

* AFInAppEventParameterName.CONTENT_ID:添加商品的标识符

想要了解更多,请访问Appsflyer帮助文档:应用内事件

https://zh.dev.appsflyer.com/hc/docs/in-app-events-android

除开AppsFlyer,我常用的还有Firebase,以下为Firebase自定义埋点方法

https://firebase.google.com/docs/analytics/events?platform=web

了解完大致的埋点实践方法之后,那我们常用的分析工具又有哪些呢?

埋点常用的工具有哪些?

当前业内常用的免费的游戏埋点和分析工具主要有:

Firebase

Firebase是Google旗下的一款免费的全方位应用开发平台,功能齐全且拓展性强,能够协助开发者更好的接入和分析各种谷歌生态中的产品如Google Play,Google Admob,Google Cloud Platform等等。如果买量渠道为单一的Google Ads,Firebase可以协助开发者区分素材,广告组等维度的用户行为数据。

Tips:如果是多渠道买量的状态,Firebase则无法统计跨渠道的收益和用户行为。



GameAnalytics

GameAnalytics主打的是数据报表可视化和用户漏斗和同期群分析,开发者可以通过GameAnalytics提供的预定义事件来设定玩家达成的一个个成就漏斗(Achievement),并且依据开发者的需求分析每一个环节的渗透率。但如Firebase一样,GameAnalytics无法支持开发者的归因需求以及跨渠道转化效果的追踪。但单作为一款分析工具来看的话,GameAnalytics的功能也能满足大部分项目的分析需求。


如果还有跨渠道的归因+分析效果追踪的需求,常用的为以下两家付费平台,平台会针对非自然安装的归因进行收费。如果不开付费套餐的话,报表的数据分析功能可以正常使用,但是无法获取用户的RawData数据。

AppsFlyer

AppsFlyer是一家专注于做用户归因,用户质量和跨渠道回收监测的归因分析平台。它的好处在于合作方较多,比较容易能够汇总产品的变现收入和广告支出,从而实现数据整合,跟踪自己的产品在各个渠道的回收效果。但平台的非自然安装归因成本相对其他工具偏高,可以基于自身产品的量级去考虑适合的套餐。


Adjust

Adjust也是老牌的归因分析平台了,相比AppsFlyer价格会稍微便宜一点,主要的优势也是跨渠道的归因和回收跟踪。在前几年,Adjust的数据可视化一直做的相对较差,但从去年推出他们的新产品Data Canvas之后,整体的报表可视化效果提高了很多。

需要注意的是:虽然Adjust优化了他们的可视化报表,但是在应用自定义事件集成和分析上,每个要分析的事件都需要在平台上创建事件识别码,在集成的时候也需要用识别码和事件名一一对应才能上报成功。如果项目需要分析的东西特别多,那么Adjust会明显增加集成的工作量。


除开此类SaaS分析平台,开发者也可以自建服务器,将相关的数据按照一定格式上报给自己的系统,也可以实现埋点分析的目的。由于自建服务器和埋点方式形态各异,本文将不围绕此类情况展开讨论。了解完可以使用的分析工具之后,我们正式开始进入埋点设计与分析的内容。

埋点应该如何设计呢?

PART 1游戏埋点的拆解思路

常规游戏在埋点的时候会有一个大的分析框架,以下六个部分是我所常用的,没有明确方向的可以用于参考。


新手引导:主要关注的部分就是玩家进入游戏后新手引导各个环节的通过率如何,在新手引导环节是否有出现。

游戏进度:核心分析点位

针对关卡制游戏(通常为塔防,肉鸽,休闲街机等类型),这种游戏常规的游戏进度就是玩家的通关进度,如《弹壳特工队》、《HitMasters》等等。

针对于非关卡制的游戏,如模拟经营类的,常规的游戏进度就是通过玩家解锁建筑物的进度,或者玩家的任务进度,游戏时长来统计的。

还有如《神庙逃亡》这种无限挑战类型的游戏,通常会将玩家的游戏次数来视为游戏进度进行统计。

游戏变现:游戏变现常规会分为广告埋点和内购埋点。由于横幅和原生类广告的单用户展现次数过多,记录这两类广告数据容易导致数据量过多,影响数据导出效率。广告埋点通常是围绕着游戏内插屏视频和激励视频来进行设计的,会将玩家触发广告场景进行一次埋点,广告实际展现出来也进行一次埋点以分析游戏内真正的广告展示率。

内购埋点通常是围绕玩家的内购的行为,对玩家进入商店、各种内购弹窗的转化率、还有每个商品具体购买情况进行埋点的,在「商品购买」这里一般也会分为两个步骤,玩家点击内购商品和实际完成支付进行埋点。通过内购埋点也可以将自身游戏的内购收入上报到三方的分析工具以实现ROI的计算统计。

资源分析:资源分析考虑的是玩家对于游戏资源的获取和消耗情况是否平衡,了解玩家是否有意识的去使用货币、什么时候最需要货币,这就需要在玩家获得和消耗资源的时候进行埋点记录数据。

外围功能:外围功能指的是核心玩法之外的各项附带功能,比如签到系统,装备武器系统等。

玩家状态:玩家状态指的是玩家触发某些条件时来记录的事件。比如玩家缺少金币的时候,如果只是记录到玩家消耗了金币,我们比较难了解玩家缺乏金币的状态。这时候就可以在玩家金币不足的时候,去上报类似NoCoin的事件来表明玩家的缺钱状态。诸如此类的还有缺少体力,缺少钻石、玩家第N次打开游戏,玩家游戏时间累积达到N分钟/小时等等。此外,还可以记录玩家在游戏期间的一些状态,比如游戏资源加载/失败。

(部分游戏也不存在新手引导或者资源系统,可视情况分析)

PART 2 游戏埋点的具体实践

根据游戏的阶段性分析需求,我们常规会沿着上文提到的拆解思路分为初阶埋点方案和高阶埋点方案,初阶埋点方案主要分析的是各功能模块(新手引导、变现模块、外围系统)的渗透率、玩家整体的关卡游戏情况、资源系统的平衡性和使用率几个方面。

而高阶埋点方案通常是基于初阶方案的升级版,需要增加更多的参数项来更深度的分析每个游戏内容里潜藏的优化点,比如玩家游戏中途是否有使用各种道具,肉鸽游戏中玩家选择的各种技能组合对于玩家的通关率影响是怎样的,通过设计更深度的参数来寻找影响游戏玩家进度,游戏体验,数值平衡等方面的调优点。

(OPMETA优化研习社公众号后台回复【埋点方案】,即可获得高阶版本埋点案例)

接下来我们将以最近爆火的《弹壳特工队》海外版也叫Survior.iO来进行埋点方案讲解。

游戏拆解

设计游戏埋点的第一步是需要先体验游戏并且拆解游戏,《弹壳特工队》在游戏内容的拆解下来主要分为几个部分:

场景截图

新手引导相关场景拆解

开局引导

外围系统引导

游戏进度相关场景

游戏通关

等级提升

游戏变现相关场景

内购礼包

广告宝箱

外围系统相关场景

成就系统

游戏状态相关场景

游戏加载

初阶埋点方案

虽然我们在上面拆解出来了游戏非常多的模块,但一般在游戏初阶段的埋点设计,主要分析的还是整体产品在关卡设计是否合理,各项功能是否有玩家使用,这几个模块的分析深度通常都不会很深。以下是我们针对新产品在第一次上线或者测试投放的时候的通用埋点案例,适用性比较广,可以面对大部分的分析需求。

但对于大部分休闲产品,在首次测试投放的时候甚至都不需要关注到他们的外围系统设计和资源的使用消耗,更多的是需要关注到核心的游戏数据,主要体现在【游戏进度分析】和【变现点位分析】两块。通过两块数据快速确认产品是否足够好玩,能否留住用户。

产品初步的变现能力和触发情况判断产品自身回收潜力。然后再逐步基于分析出来的问题去调整自身产品的玩法、数值、外围设计等内容。

【新手引导分析】

常用事件为:【Guide Start】、【Guide Finish】

常规可用参数为:【新手引导步骤 Steps】、【耗时 Duration】

【游戏进度分析】

常用事件为:

【游戏开始(Level Start)】、【游戏通关(Level Complete)】、【游戏失败(Level Fail)】、【玩家升级(Level Up)】、【游戏重试(Level Retry)】

常规可用参数为:

【关卡/章节数 Level ID/Chapter ID】、【关卡时长 Duration】

【资源分析】

常用事件为:

【xxx Gain】、【xxx Spend】(xxx指代的某种资源 如 钻石,金币等)

常规可用参数为:

【关卡/章节数 Level ID/Chapter ID】、【数量 Amount】、【商品 Item Name】

【变现点位分析】

常用事件为:

广告 - 【xxx_ad_click】、【xxx_ad_impression】(xxx指广告类型,如激励广告RV,插屏广告IV等)

内购 - 【item_click】、【Purchased】

常规可用参数为:

【关卡/章节数 Level ID/Chapter ID】、【场景 Scene Name】、【商品 Item Name】、【收益 Revenue】

【外围系统分析】

常用事件为:

【xxx_enter】、【xxx_use】(xxx指代的外围系统名字,如成就系统、武器系统、特殊技能等)

常规可用参数为:

【关卡/章节数 Level ID/Chapter ID】

【玩家状态分析】

常用事件为:

【玩家登陆 Login】、【游戏加载 GameLoad】、【No_xxx】(xxx指代的外围系统名字,如成就系统、武器系统、特殊技能等)

常规可用参数为:

【天数/次数 Times】、【状态 Status】、【关卡/章节数 Level ID/Chapter ID】

高阶埋点方案

高阶埋点是需要围绕游戏初阶埋点分析出来的问题,为了给具体的调优细节去做数据支撑而进行的埋点设计。

以《弹壳特工队》举例,如果分析出某些关卡的失败率过高,那跟游戏中每个阶段出现的技能组合,玩家技能的最高等级情况是否有关联。玩家进入关卡时,身上的装备/品质等与游戏通关率的关系又是怎样的?玩家失败时,他的死因是因为小怪还是因为Boss?这些我们会称之为【事件的影响因子】。

在具体的埋点方案中,我们就需要把这些相关因子一起作为参数给记录进来。


如游戏开始时需要考虑玩家的装备品质,是否有付费等加入进来,则整个埋点就会变为:

事件:【游戏开始(LevelStart)】;

参数:【关卡/章节数 Level ID/Chapter ID】、【装备等级 Weapon level】、【用户种类 Usertype】。

一个事件的影响因子可能有很多,这里也不一一举例了。总而言之,高阶的埋点的方案是基于初阶的埋点分析出来的问题来进一步挖掘造成这种问题的原因。

常见的初阶埋点问题会有:部分关卡难度/流失率过高、玩家资源过剩、玩家对某些外围系统没有进行使用之类的问题,那么要如何分析这些问题呢,我们接下来一起了解一下埋点的分析思路。

埋点应该如何分析呢?

在前文提到的埋点方案中,相信有很多小伙伴注意到了我在很多埋点事件中都会添加【关卡/章节数 Level ID/Chapter ID】这个参数,因为在许多关卡制的游戏中,增加这个参数有助于我们了解玩家的游戏进度,进一步分析出玩家哪些关卡节点喜欢看广告,消耗货币、升级武器等等。

而在非关卡制游戏中,游戏进度通常体现为特定游戏内容/游戏建筑的解锁、游戏时长、任务/成就达成的方式。下面列出的常规分析内容,我们以关卡制游戏常用的分析公式和曲线作为案例,帮助读者们更好的理解这些分析内容。

PART 1 游戏难度分析

关卡失败率曲线

公式:

关卡失败率 = 单关总失败次数/单关总进入次数

曲线示例:


曲线意义:

反映游戏各个关卡难度

曲线特征:

理想Fail rate曲线常规会是一段低失败率和个别较高失败率的交替进行的,这样子能让玩家快速上手游戏且富有挑战性。

可以在固定的关卡节点设置一些坎(比如第5,10,20,30关 之类),让Fail rate在合理范围内上升从而刺激玩家消耗游戏资源和提升战力,进而增加玩家内购、广告触发的概率。

关卡重试率曲线

公式:

关卡重试率 =(进入第x关总次数-进入第x关独立用户数)/第x关总失败次数

曲线示例:

关卡重试率图示

关卡重试率&关卡失败率图示

曲线意义:

失败率高有时候不一定是坏事,结合关卡失败率曲线,如果个别关卡的失败率高,只要该关的重试率也足够高就行,说明玩家挑战该关卡的意愿足够;反之,如果个别关卡失败率很高但重试率无明显提升则需要重点关注。

PART 2 活跃用户分析

关卡活跃曲线

公式:

单关关卡活跃人数 = 单关进入关卡总独立用户数

曲线示例:


曲线意义:

关卡活跃曲线可以反映玩家随游戏进度的活跃与流失情况,曲线中斜率增大的位置标明玩家在这些关卡流失情况严重,可以针对这些关卡的游戏内容和广告设计进行优化,提升游戏留存。

另外,将关卡失败率曲线与关卡活跃曲线叠加,往往会发现失败率高的关卡玩家流失也相对严重。

关卡失败率曲线X关卡活跃曲线图示

关卡流失率曲线

公式:

单关关卡流失率 =(单关完成关卡总独立用户数-下一关进入关卡总独立用户数)/单关进入关卡总独立用户数

曲线示例:


曲线意义:

关卡流失率曲线可以明确反映出随游戏进度各个关卡玩家流失的情况,尤其能够反映个别流失情况严重的关卡。

PART 3 经济系统分析

虚拟货币收入-玩家人均支出/净收入曲线

公式:

单关虚拟货币人均收入 =(玩家在当前关卡进度时,在游戏核心玩法、广告、内购等途径获得的总虚拟货币数)/单关进入关卡总独立用户数

单关虚拟货币人均支出 = 玩家在当前关卡进度消耗的总虚拟货币数/单关进入关卡总独立用户数

单关总虚拟货币人均净收入 = 单关虚拟货币人均收入-单关虚拟货币人均支出

曲线示例:

虚拟货币收入-支出/净收入曲线

曲线意义:

虚拟货币收入-支出/净收入曲线能够反映玩家随游戏进度在各个关卡进程的虚拟货币经济情况,从而分析游戏整体经济体系设计是否合理

曲线特征:

理想状态下,玩家的关卡净收入曲线应该在0坐标轴附近来回波动或贴近,这样代表玩家的游戏货币基本能够随关卡进度收支平衡

净收入曲线如果在某些关卡出现了很大的振幅,则说明玩家在该关卡需要累积很多的虚拟货币才能够顺利通关,可以在这些点位设计适当的内购资源弹窗、广告点位交互等,提升玩家的资源获取途径,从而在让玩家更好通关的情况下,也能提升自己产品的收入。

PART 4 广告场景分析

激励广告触发占比饼状图

公式:

单一激励广告场景触发占比 = 单一激励广告场景总触发次数/激励广告场景总触发次数

图形示例:

激励广告触发占比饼状图图示

图形意义:

激励广告触发占比饼状图能够反映游戏内各个激励广告场景的触发情况,从而分析各个激励广告场景对玩家的相对吸引程度,可以总结是核心玩法类的比如游戏复活、游戏开局Buff等触发的较多,还是对资源类的广告场景比如金币翻倍,获取金币触发的较多。针对不同的触发偏好,可以考虑通过调整游戏奖励数值或者难度,让玩家更多的去触发这些点位。针对少触发的位置,也可以考虑删减或者调整广告场景出现的交互形式或者奖励物,从而提高自身整体的广告展现频次。

关卡广告场景触发分布柱形图

图形示例:

关卡广告场景触发分布柱形图图示

图形意义:

关卡广告场景触发分布柱形图整体上能够反映玩家随游戏进度在各个关卡观看的激励广告频次情况,也能够反映出各个关卡中不同激励视频广告的频次占比,从而帮助开发者分析出最有吸引度的广告场景,最能促使玩家观看广告的关卡游戏内容,并通过复现这些内容进一步优化广告效果。

说在最后

游戏的埋点并不是一蹴而就的,需要开发者团队围绕不同的产品阶段去挖掘对应的分析需求来设计合适的埋点方案。

在每个阶段的分析和调优需求解决了之后,为了减少数据库压力和分析人员的数据处理压力,一些不再需要分析和关注的埋点在版本迭代的时候可以同步移除。

一个优秀的分析人员会维护并更迭自己产品的埋点库,针对每一个埋点都有明确的分析目的,在完成分析目的之后继续调整产品的埋点。


来源:OPMETA优化研习社
原文:https://mp.weixin.qq.com/s/Sd1VtMt6CW19Z3XyldWetQ

最新评论
暂无评论
参与评论