Unity gets flak about how their services suck. I don’t necessarily share the same sentiment. In fact, I don’t know what they’re talking about. I’m not sure if they’re bragging that they can do a better job because they know web development or that there are better services (of course there are). But hey, they’re free and they’re not totally useless. We do use some of them frequently as supporting tools while developing Academia.
Where are these services? When you login to your account in unity.com, click on your avatar found at the top right. You can then see this:
Click the Services link and it should show you the webpage of all available Unity services.
This is found under Cloud Diagnostics. Basically it lets your players submit bug reports and feedback. You could also attach a bunch of files that you need for analysis or debugging. For example, you can attach the current save file used by the player upon reporting. In our case, we attach the save file, a custom log file, and mods database file. You could also define custom fields. Like in ours, we added a field for email and Steam ID so we could communicate with the player when we are fixing what they reported. These are optional of course.
When we launched the game in early access, we were using a Google form for bug reporting. While this is satisfactory, it’s a bit tedious for the player to look for the save file and the log files for them to upload. Most of the time, they just won’t do it. You’ll get the bug description but not the important things you need to try to replicate the bug and fix it.
We integrated User Reports some weeks later after it was announced. It’s just way better. First is just how the data is shown. With a Google form, you’re looking at a spreadsheet for the reported values. It’s quite noisy. All the data of a single entry may not fit in a single screen so you’ll scroll left and right. With User Reports, you’ll see this for a single report:
This is way better than looking at a long single row in a spreadsheet.
Aside from better layout, you also automatically get some more data from the reporter:
Crashes and Exceptions
This is also found under Cloud Diagnostics. It’s a database of all exceptions and crashes that your game produced while being played by everyone including the developers. For exceptions, it includes a stack trace which informs you where to fix. You ought to fix those as it may lead to wrong game state.
This service also informs you how often the game crashes and how many are affected.
Each crash report includes a Native Stack Trace, some metadata and logs. The stack trace is mostly gibberish to me but sometimes it gives hints on what caused it.
Another thing that I like in this service is you can filter the reports. For example, when I’m checking for exceptions to fix, I only filter the ones that appear on the last publicly released build. You would want those exceptions that were encountered by players, not by your team.
Most devs will setup some kind of CI/CD. In our case, however, it’s kind of overkill. We only need PC and Mac builds. We already have an editor script for building PC. For Mac, we use the Cloud Build for that. I just hate opening the Mac machine just for building. I just want to stay on my main Windows machine. When building for Mac, I’ll just open Cloud Build and do the build there. It’s more convenient.
So yeah, I got nothing more to say here. We use Cloud Build just for building Mac builds.
We integrated some analytics as our designer wanted to understand how our players play our game. The analytics that I mean here are custom events, not the metrics like DAU, MAU and its ilk. For example, we track events like starting a new game, completed a whole school year, completed all grants or completed all research.
Our designer then creates funnel analyzers from these data points:
I could say that Unity’s Analytics is limited compared to other services like Mixpanel. But it’s good enough for our use case.
That’s it. As an indie PC game developer, these four are the Unity services that we actually use. Do note that there are other services that are geared towards mobile developers like for ads and payments. I haven’t explored those but they could be useful.