Update: Shortly after creating this thread, I completely changed this first post from questions to the results of my research. The 3 posts that follow this one might not make much sense now. ![]()
Seeing as there aren’t many useful threads about Unity and analytics, I’d like to write what I have found on analytics solutions, from the perspective of someone who has never used analytics before.
First of all, from what I could gather, GameAnalytics, Flurry and Google Universal Analytics are probably the 3 most used solutions, in no particular order. For games, Google doesn’t seem to be used as much. Unity Analytics now also looks like a good possibility, benefiting from its strong integration with the engine. Then, there are other services, like Parse, Soomla, Keen IO, among many others. If you think any of them have features that surpass the others in some way, please do post. ![]()
What follows are pros and cons I was able to find for each solution. These do not currently include setup difficulty, most features (heat maps, cohort analysis, etc) and are sometimes subject to opinion (though I should be mostly impartial). Some solutions might also have pros/cons that I mention in another one, without that being mentioned. If that happens, it is only because I don’t know it. Finally, I might simply be taking wrong conclusions in some places. Please share your knowledge!
GameAnalytics
Pros
- Entirely free (no premium plan) and has no discernible usage or event limits.
- Has several events pre-configured for Unity, such as sending an event when a scene is loaded (and sending the time the player spent in the previous scene), your average FPS, when your FPS get to critical levels, error logging, etc. It makes shameless use of the no-limit of events. These are all activated by check boxes in the GameAnalytics settings, which is easy to setup.
- (Their Unity SDK used to work on all Unity platforms, but their new version currently only works on iOS and Android.)
- They have benchmarks, so that you can compare various metrics for your game against other games in the market which use the service.
Cons
-
Events are mainly organized by their ID, such as “Game:Level:Begin” and “Game:Level:End”, but the associated event value must always be a float and what you can do with it is mostly limited to sums and means (no distribution/histograms). If you want to send a “duration” along with your “Game:Level:End” event, you can’t see the distribution of duration from all players; only their mean and sum (though this is a limitation of many other platforms). You can get around this by including the time range in your ID, because GameAnalytics allows displaying a histogram from an ID category. For example, create IDs like “Game:Level:End:0-20s”, “Game:Level:End:21-40s”, etc and send those (this is limited, error prone and seems to involve quite some work).
-
This also makes it difficult to send many values associated with a single event, such as the level ID, a time, a score, etc. You have to send several events, one for each value. This shouldn’t change in the recent future, based on the answer their support channel gave me.
-
Some people report that the dashboard is not useful for more complex comparisons or filtering.
Flurry Analytics
Pros
- Completely free (no premium plan).
- From general feedback, it’s very easy to use and has nice visualization tools.
- One of those tools is the User Path, a flow graph which lets you not only see sequences of actions (like funnels), but what percentage of players took each action after another. Example: from the players that got to the main menu, 60% of them clicked “New Game”, other 35% clicked “Options”, and the rest exited the game.
- Events can take a dictionary of associated values (instead of just a single one), so, along with your “LevelComplete” event, you can send the level ID, the score, etc. However…
Cons
- …the dictionary of parameters is only composed of strings, so it ends up having the same no-distribution problem as GameAnalytics, where values must include hand-made ranges in order to display useful distribution information (correct me if I’m wrong!). Furthermore, strings don’t have sums or means…*
- No SDK for Unity, so it requires a third party plugin to work in all Unity platforms (if there is one like that at all), or many plugins. Flurry supports the following platforms officially (different packages for each): iOS, Android, Windows Phone 8, Windows 8 (using this ridiculous trick), BlackBerry and HTML5.
*Just for the record, when a system uses a dictionary of strings as parameters for its events, those strings are generally called “dimensions”. They are not much different from the GameAnalytics way of separating the event ID in sections/categories, though they are much more flexible.
Other info
- Event limits exist, but seem reasonable (though that always depends on the case). Quoting the FAQ, “there is a limit of 300 Events for each app”. These are event “types”, actually. It means you can create 300 and use event IDs. Each event can then have 10 parameters/dimensions. Each parameter can have an infinite number of different values, though only the 500 more relevant are displayed in the dashboard (the remaining are grouped under “Others”). The display limitation probably exists in other platforms as well and is kind of expected. You can send a max of 1000 events per session (a session is generally started when the user opens the app, and closed when it goes to the background).
Google Universal Analytics
Pros
- Many data visualization tools, though it might be more complex than other platforms, on average (this is just from some feedback; I haven’t checked this).
- Has specific calls to measure timing events - which are common - social events, etc.
[I’m sure it has other advantages, as you can define custom things in the dashboard, but it seems a bit complex and I haven’t had the time to research it more deeply, so if anyone has insight on it, please share]
Cons
-
No official SDK, though it should theoretically support all platforms, thanks to the Rest API. There are paid plugins in the asset store to support Google Universal Analytics.
-
Just like in GameAnalytics, we can only send a single value (*see “Other info” section below) along with the event (this time a long integer), though the event ID should have a complex structure to allow useful queries. In fact, the ID is explicitly divided into Category, Action and Label.
-
Limits (from here): “10 million hits per month per property” (reasonable for some; not enough for others). After this, you must upgrade to Premium. “200,000 hits per user per day”. “500 hits per session not including ecommerce (item and transaction hit types)”. Depending on the expected session length in your game, 500 events might be too little. (?) 2 events per second limit, on average. Max of 20 at once.
Other info
- In fact, Google Analytics allows defining custom dimensions as strings, that seem to end up being similar to sending parameters along with events (which is what happens in Flurry). Nevertheless, these dimensions must be defined in the web interface and not dynamically from code.
Unity Analytics
Pros
- Events have a dictionary of <string, object>. In theory, this means that you can send anything with an event. A time float, a score int, a level ID string, etc. As long as the object type is a basic type, recognized by the server, and there are decent visualizations, this means that anything is analyzable.
- Already supports most if not all relevant platforms in Unity, following the cross platform paradigm.
Cons
- Currently in beta, so many things can and will change, and there’s no final stand on event limits, pricing (although at least a basic solution will be free).
- Limit of 100 custom events per hour (per user), as far as I know. This can go out fast, depending on the game, so you might have to condense some events into a single one somehow.
Other info
- Unity Analytics handles event limits a bit differently, based on points. Some events waste more points than others, based on the types of values sent in the event, and, in the case of strings, how many different values there are.
This is a post that tends to become out-of-date quickly, so if you are a new reader, also read the posts by other users, below!
- Daniel