Can you even data science bro?
Let’s assume you are developing a game: You put your heart into it, make a nice-looking, working prototype and play it by yourself, with your team, with your friends. Everything seems to work well, so it’s time to get your game out there. You manage to release it, maybe on itch.io or even as an alpha on Steam.
So, people are finally playing your game, yay! …but soon you realize that receiving feedback is hard. It has always been, and it will probably always be. Comments are scarce, ratings are too opaque… how are you supposed to make your game better?
You have to keep looking for playtesters and observe them play, and you will do it for sure. But there’s another important thing you can do: Collect data from your game.
Players make lots of choices while playing. These choices/actions can be transformed into extremely valuable data for you: Which character did they choose? How much time did they spend on a level? How many times did they fail before completing the game? How many enemies did they kill? How many shots did they fire?
You can formulate many questions like these, derive the answers from the data inside your game, then use those insights to inform your design.
Collecting data from your game
So… how can we, as penniless indie devs, collect this data?
Before running through data, let’s take a step back and present an example:
Superstarfighter: a Use Case
SuperStarfighter is a local multiplayer party game for 1 to 4 players, in which you play by dashing and shooting bombs with just one button. Controls are that simple to appeal to a broad audience, but mastering the game requires skill. Fine tuning is extremely important in a party game like this, because of the many different play styles and skill levels involved in targeting such a diverse user base.
After the initial release we realized that just a handful of users gave us feedback, and there was no sign that would improve anytime soon. So we decided to bring our game to a convention. It is a very good way to receive feedback, you meet a lot of people, and it’s a really cool and extremely fun experience …
… but it could be very expensive! Too expensive for two spare time devs like us.
Thus, we decided to leverage the power of the Internet, and politely ask users to help us gather data from their play sessions.
Game Analytics: Our analytics tool
In order to actually gather data, we use GameAnalytics (GA), a free analytics tool platform that allow you to setup a free account, which lets you collect anonymous data from your game. Even if it is principally focused on mobile gaming, GA gives you extremely easy-to-use and nice tools to get the most out of your data, without any hassle from the players’ side.
Important ask the player first! We use a disclaimer that pops up the first time you open the game (with the option to opt-out anytime).
The GA dashboard is really nice and gives you a great overview of what data you can collect, and how you can extract important info, along with interactive graphs.
You just have to add some code to your game, or use already available features for GA, according to your engine of choice (as explained in the Integration Guide in the GA docs – There is even a step-by-step integration guide for Unity if interested).
This would allow your game to send data to GA, along with an identification key they provided you when you registered.
Customize data to be collected
GameAnalytics has different so-called types available for tracking different events in your game: user, business, resource, progression, design and error (check out here to know more).
We will focus on design events, since they can be customized to collect anything you want. To be as generic as possible, we will use the GA REST API, that allows you to send JSON data through the internet.
I’ll give you an example:
In SuperStarfighter there is an entire section in which you can personalize the games you want to play, selecting them from a map:
You can send a “design” event, putting in the event_id field something like this:
{"category": "design", "event_id": "selection:gamemode:{gamemode_name}"}
Where the field event_id is made with the following format:
A 1 to 5 part event id. [part1]:[part2]:[part3]:[part4]:[part5]
Another example is when you choose which character to play with. We, as developers, could be interested into knowing which one is the most loved by players.
So this would become something like this:
{"category": "design", "event_id": "selection:species:{species_name}"}
For more info about how to use the event_id and the design customization field, and how checkout the GA API’s doc.
Going the extra mile
We had a first overview of the data we collected directly from the GameAnalytics dashboard. But we can do more: analyze the data with our own tools.
We extracted all the data from GA (thanks to the Export button you can find under Settings->Export choosing your preferred data range), performed some aggregation (we used python) and uploaded everything into the Elasticsearch/Kibana stack (that you can install on your local machine). With Kibana, then, we create some visualization dashboards to find out more.
Here is what we found out about our players:
In the first month of the current release (v0.6) we had 37 players who were kind enough to opt-in in our analytics campaign, and we had 72 play sessions.
The country where most of our player are from is USA, then Italy (the country we’re in), following Argentina and Spain. Most of these players play with Windows, runner-up Linux. Most of these players play alone and in two, whilst some of them played in 3 but no-one in 4.
22,849 bombs have been shot, and 2,238 kills have been done. Deathmatch seems to be the most selected minigame,people seems to love Roborlords…
… and much more. Ask in the comment below, if you want to know more! 🙂
This analytics are yet preliminary but they are already effective for us, and we will take in consideration in order to tune our game.
Ask players for consent!
GameAnalytics itself respects the GDPR, but we also need to make sure that we collect data from players IF they give us the consent to do so. (You can see this screen when you donwload and open the game for the first time)
If you say "Enable analytics" you do us a great favor. Or you can comment what did you prefer, and what can be improved :) Your feedback is EXTREMELY useful for us.
Conclusion
Of course, the specific data we showed makes way more sense to us than you. But you can have the same analytics system set up for your own game, and this might inform and speed up lots of strategic choices you are going to make as you are developing it.
GameAnalytics manages all collected data in a GDPR-compliant mode, giving you a way to interface with their API and a wonderful overview with some cool visualizations.
As we showed above, after having exporting the data, We used python and Elasticsearch as well-behaved Data Scientists, but you can use any tool you like (comment below if you have any suggestion).
Your users will do the rest, they are playing your game, so they are already rooting for your success! Just ask for a little extra help, and someone will answer.
Best of luck.
Get Starship Olympics
Starship Olympics
1 to 4 players fast-paced arcade combat party game
Status | In development |
Author | notapixelstudio |
Genre | Fighting |
Tags | 2D, Arcade, arena-game, Co-op, Godot, godot-engine, godotengine, Local multiplayer, Multiplayer, Versus |
Languages | German, English, Spanish; Castilian, Basque, French, Italian |
Accessibility | One button |
More posts
- Porting to Godot 4May 31, 2024
- v0.14.1 - Keyboard controls hotfixMay 17, 2023
- v0.14.0May 13, 2023
- v0.12-alphaApr 21, 2023
- v0.11-alphaMar 19, 2023
- v0.10.1-alphaMar 10, 2023
- v0.10 - Starship Olympics in its alpha release!Mar 04, 2023
- New major version upcoming! Starship OlympicsJul 26, 2022
- v0.6.4 - Death shockwave, disable rumbling and moreMar 10, 2020
Leave a comment
Log in with itch.io to leave a comment.