Unity官方于上周宣布发布了Unity Analytics,这项服务用于帮助游戏开发者收集游戏玩家数据。Unity Analytics的当前版本为open beta版本,目前仅支持IOS和Android平台。
Unity是一个跨平台的游戏引擎,使得开发者可以基于同一套代码开发多平台游戏。其支持3种编程语言,包括C#、Unity Script (JavaScript for Unity) 和Boo语言,目前统计编程语言超过80%的为C#语言。 Unity目前支持17个平台,横跨web、移动、桌面和终端,包括iOS、Android、BlackBerry 10、Windows Phone 8、PlayStation 4/Vita、Xbox One/360和Wii/Wii U。 其跨平台特性对移动开发者而言非常有吸引力,其中很多在app store上排名靠前的游戏正是使用了该引擎,包括神庙逃亡(Temple Run)、愤怒小鸟:史诗(Angry Birds Epic)、捣蛋猪(Bad Piggies)和暗影之刃(Shadow Blade)。
如下的特性在open beta版本中已可用:
- Metric Monitor- 仪表盘,它提供了常用的KPI(key performance indicators),如玩家数量,会话时长和留存率。
- Segment Builder- 支持基于用户属性或游戏行为模式来分割玩家。
- Funnel Analyser- 可分析玩家失去兴趣的原因。
- Data Explorer- 提供深度数据挖掘功能,用于解读目标玩家的数据,如对比IOS和Android用户的留存率。
- Custom Data Collection- 捕获客户数据以追踪你所关注的重要事项,如通过收据确认查明你的应用内赢得的收益是不是正常的,还是存在一些虚假的成分。
Analytics扩展包作为一个Unity的独立插件,可通过Asset Store下载(在Unity 编辑器中选择Assets菜单)。当Analytics 插件包被导入到Unity工程后,可通过C#脚本来初始化SDK:
using UnityEngine;
using System.Collections;
using UnityEngine.Cloud.Analytics;
public class UnityAnalyticsIntegration : MonoBehaviour {
// 初始化SDK
void Start () {
const string projectId = "PROJECTID-GOES-HERE-66fb5cf028d728bb";
UnityAnalytics.StartSDK (projectId);
}
}
这段脚本可以附属于任意游戏场景的GameObject之上(推荐添加到游戏的第一个场景的某个GameObject中,以此尽可能多地获得用户交互的数据记录)。整合Analytics后的基本功能可以追踪游戏的KPI(performance indicators),如玩家数量、会话时长等。开发人员可以手工调用analytics使用上面所提到的这些附属功能。
analytics API可记录关于货币的相关事件。例如,在应用内完成的购买。开发者可调用API的交易函数传递有关支付的信息。
// 引用 Unity Analytics SDK命名空间
using UnityEngine.Cloud.Analytics;
// 当游戏玩家触发购买事件则调用该API记录
UnityAnalytics.Transaction(string productId, decimal price, string currency, string receipt, string signature);
开发者能够使用API的CustomEvent自定义事件来追踪游戏指定的事件,该事件接受事件名称和额外的字典参数。
// 引用泛型集合命名空间
using System.Collections.Generic;
int totalPotions = 5;
int totalCoins = 100;
UnityAnalytics.CustomEvent("gameOver", new Dictionary
{
{ "potions", totalPotions },
{ "coins", totalCoins }
});
注意,在CustomEvent API使用时有一些限制:
- 所需的字典参数要控制在10个之内。
- 所需的字典参数总长度不能超过500个字符。
- 在1小时之内每个客户端发布的自定义事件不能超过100次。
- 每个游戏只能有最多50个自定义事件类型或名称。
最后,开发者可以使用API以分片的方式分析玩家的人口统计数据:
SexEnum gender = SexEnum.F;
UnityAnalytics.SetUserGender(gender);
int birthYear = 2014;
UnityAnalytics.SetUserBirthYear(birthYear);