相关文章

GRG:游戏分析中的可视化动态行为流分析

游戏分析最重要的挑战之一是充分利用定量分析并让每一个人能理解分析的结果,而不仅仅是那些经验丰富的分析师才能理解。在本文中,我们将描述开发一个行为概要文件生成方法的全过程,以及如何随着时间的迁移将这些文件可视化。为了便于理解,我们后面将使用拍卖的行为作为案例来分析,来自于非常有趣的一款MMORPG页游《Glitch》。最后,我们将会讨论为什么这样的可视化在屏幕中是不错的表现。

游戏可以生成大量的行为数据,这些数据可能是时间序列的也可能是高纬的。例如,记录玩家在数月内的游戏行为,会有几十种不同类型的行为、活动和相似的跟踪记录。问题其一是分析这些数据,其二是得出这些数据的分析结果,然后让相关人士基于这些分析结果做出下一步决策。

在过去的2-3年中,数据可视化领域在处理通信数据和分析结果的挑战中不断成长。在游戏中,鉴于其数据的复杂特性,可视化将是一个相当大的挑战。

贯穿在游戏中的行为分析将是另一个挑战。我们想去熟悉玩家,从而进行行为监测、销售记录、病毒传播数据的分析等等。提供优质的原始数据,生成和验证行为概要文件,从而得出玩家的模型组件,这需要一些数据挖掘方面知识。此外,随着时间的推移,玩家的行为会不断改变,所以描述文件必须是动态的。

在本文中,我们会试图应对这两个挑战,专注于游戏内行为监测(游戏玩法监测)和一个独特的机器学习方法:集群。我们所呈现的不会在所有情况下有效,集群构建配置文件也不是唯一途径,但它将提供一个生成行为概要文件的有效性,并作为时间函数的动态可视化的案例(我们希望如此)。

我们将采用《Glitch》为例子。由Tiny Speck开发的这款热门的MMORPG页游,已经上线大约14个月,拥有超过2W的玩家。我们需要关注的重点是这些玩家的交易行为,在游戏的整个生命周期中,大约生成300万次拍卖和超过650款物品,并且高达85%的成功率。

《Glitch》在游戏中使用一种软货币——醋栗。玩家可以通过探索、研磨/收获或者售卖给其他玩家来获得此货币。与其他的MMO游戏类似,玩家可以将此物品挂在拍卖行。3天的期限,Tiny Speck会从这些交易中抽取少量的费用。

将玩家分组

真正了解玩家的最好办法是细分玩家,将玩家分配到一个或多个特征的组中,例如:年龄、所在地区、是否付费、流失率等等。研究领域越紧密则会导致不同玩家群体更明确;而且可以用来评估参与度,A/B测试,封测情况等等。这就是为什么游戏分析工具值得去做某种形式的功能分割(包括队列分析和漏斗分析)。

非监督式的数据挖掘——是指我们不对我们关注的数据做任何类别的假设(概括来说就是不对数据自身做任何假设),但会采用更多的探索性方式——最常见的一种发现数据中的模式的方法是聚类分析

聚类分析,或者仅是聚类,是将一组对象进行分组(通常是玩家),这样任何一组对象(称一个集群)他们之间相对于其他的群组在某种程度上会存在相似的地方。而这种组成员之间特定的相似性可以利用模型来计算获得。

众多聚类分析的技术,也许最常见的是k-means 聚类。这个特定的技术是为了把具有相似性的并且非常不同于其他组的玩家聚在一起。新的观察结果通过组中心的最短距离进行分类,可以基于任何你选择的维度(付费、游戏时间、游戏天数、游戏中的朋友、游戏等级…..等等)。虽然有一些规则可以完成这个任务的定义,但将玩家进行分类是一门艺术,我们将玩家分成几组,这些组应该怎么命名(事实上,给集群命名相比较解释更重要)。

我们将k – means聚类应用到一系列拍卖行指标中(像已完成拍卖,总拍卖等KPI指标),通过《Glitch》14个月中的玩家如何使用和参与拍卖的行为将他们分类。我们还有包括玩家在游戏的经济论坛中是否活跃的信息。

这个细分导致每月4个等级的玩家群组,以及一些基于发生频率较低的特定指标的一些额外的细分。

硬核:在拍卖系统中有频繁的销售成功纪录,这些玩家处于所有KPI的上限。

论坛:核心群体中较小的一部分群体,更多的参与社区论坛活动。

中度:这个群体处于KPI中比较适度的值,有三种分类:在一个较小类别范围内每天发布大量拍卖的农场主(Farmers),这些玩家在贸易区都比较集中;混合者(Miscellanea)会更少关注,在一个更广泛的类别中代替拍卖发布(也就是每天很少进行拍卖);失败者(Losers )比混合者在拍卖行中发布更为频繁,但是成功率比中度其他2类低很多。

休闲:这个群体的特点是活动频率很低,在不同的KPI值中普遍较低。一般有两个不同的类别:一种是很少通过拍卖赚钱或者是干脆没去过拍卖,另一种是特别容易流失群体。

可视化流

另一个处理行为数据的挑战(并且挺有趣)是玩家一时的头脑发热。随着时间的推移玩家很难有持续的行为。虽然我们可以概括玩家的行为类型,如果我们想看到这些行为随时间变化会怎样改变呢?玩家会在接下来的时间内从一个阶段进行到另一个阶段么(还是流失掉)?

可视化流,我们来看桑基图,历史上曾经应用在自然科学领域,可视化能量状态之间的转移或者制造行业中的流程。当然,本文如果不包含最著名的桑基图的话会显的不够专业,桑基图经常在数据教科书中出现:Charles Minard的拿破仑入侵俄罗斯的图解,显示3月份俄罗斯大量的军队数量下降。我们觉得这个的修订版作为玩家随着时间推移的不同游戏行为研究是一个非常不错的工具。

桑基图示例

上图展示了右边能源需求之间的连接,左边是原材料输出,中间是材料转化,链接是在接收节点的大小与量的多少的对应。单机并拖动在演示中内置,让观众在屏幕上可以拖动节点。

我们如何想象行为变化?

我们想从发电能源跳跃到随着时间推移的玩家行为。虽然桑基图视觉效果丰富,但我们需要通过深入点击功能和原始值以及玩家的信息让功能更齐全。堆叠柱形图的合并元素可以为更多样的玩家建立更丰富的图表。

过滤例子

通过上图我们可以更好的了解玩家分布,从而进行选择,包含新的玩家。虽然更复杂,但也不会阻碍桑基图链接到这个系统视图。

创建分段条形图

下图是一些代码。虽然D3可以在任何格式处理数据,Sankey.js在包含的信息节点解析JSON文件(分层数据格式)。

节点和链接

图形生成

我们将这些输入来生成堆叠柱形图的格式。特别是,我们减少了节点并将其填充为零(垂直节点之间空格的数量),改变布局为1(用处理迭代定位算法来找到最好的位置,并为我们减少从顶端向下的条状图),利用SVG转换特性来上翻转到屏幕上,这样节点就能从下往上生成。最重要的是,我们规范JSON文件以确保段的顺序保持一致(在每个区间段存在)。

可视化动态玩家行为

我们可以很容易的扩展这种类型数据不同维度的想法,这个在等级、XP进展、事件或漏斗分析的基础上查看玩家趋势非常强大。

这个框架也可以在移动游戏中用来查看随着时间的推移玩家的付费情况。测量在不同时间的ARPU和ARPPU值,不用再去计算随着时间的变化独立玩家的话费情况。例如,是否所有玩家购买后才进入游戏,或者是否在游戏中持续进行付费?此外,此组不需要分割结果,仅仅是代表玩家的花费、交易、游戏中完成事件、渠道等等。另一个例子,通过此工具简单添加不同的图表来追踪新玩家和下线玩家的流失行为。《Glitch》的可视化表明这些文本信息展示在图标的底部。不管怎样,经营数据的可视化很简单。总的来说,桑基图在游戏分析领域有很广泛的应用,可以修改各种利益相关的关键性能指标。

总之,为了获得这些可视化并运行多个可视化工具,需要更多的可定制互动视觉解决方案来监控玩家行为。在这种情况下,视觉化包含很多信息,例如,使用更少的集群或时间盒建立一个密度较低的图。然而,桑基图是有效组织复杂性和多维度以及在一个小范围内展示大量信息的技术。桑基图的插件提供了一个较温和的条目来得到视觉化和运行最小的自定义代码。

希望这篇文章能够引出一些在视觉化和快速的实施路线图的新想法。