Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Research Analytics #24

Open
primitiveType opened this issue Aug 27, 2021 · 0 comments
Open

Research Analytics #24

primitiveType opened this issue Aug 27, 2021 · 0 comments
Assignees

Comments

@primitiveType
Copy link
Owner

Here's my thoughts about the analytics.
High level what we need, with some questions:

  • The game will need to be updated with code that listens to events and sends/stores a log of those events that we can look at later to make design decisions.
  • That log will have to be sent in some form to an external server so that we can analyze any game that has been played.
  • Exactly what events and state do we care about? Theoretically we could pretty much log every single event but that might be overkill. Might be easiest to start with that though.
  • How does the server receive this stuff? We could have the server literally just receive plain json and store it in a non-relational DB, that way the server doesn't need to know anything about the data model (potentially, i'm not sure.). One thing to consider is that we have already written a library in c#, so we could pretty easily stand up a .NET rest api that uses that model and receives events and logs them. Depending on how much we need to actually touch this data Python might make zero sense, since you'd basically have to keep a Python version of our api in lock-step with the c# api.
  • Do we need an actual database at all? Seems like all log info could (maybe) just be stored as json for a given user's session, and we could write a basic analytics tool that ingests those files. Especially if the whole log of events is sort of sent at one time (when the player finishes a game.)
  • Does Unity's analytics do anything for us?

Bigger questions:
How does doing analytics work? What types of metrics do people look at when they do analytics on a game like STS? Is it as simple as looking at winrates for particular cards and that sort of thing? Are there tools that automate or simplify the process of making decisions from the data you gather? Depending on how the actual analysis part of this works, that might influence what data we track.

What is the easiest and cheapest option to host this? For instance, if we do a Amazon EC2 instance that is on the free "micro" tier, with a free storage bucket, what are the limitations? I know very little about this and its pretty important to figure out- are aws instances limited by throughput, or total bandwidth used in a month, or what? From there, can we estimate how many users will be supported on the free tier? Example- say a free ec2 instance supports up to 2GB of transfer in a month. We decide to generate a lengthy example log and see that our worst-case log size is 20kb. So we would be able to receive 100,000 logs in one month, which would be plenty for a very long time.

There's a lot of moving pieces here that all have unknowns:
-The game code responsible for tracking data
-What data we choose to track
-Where that data gets sent (Hosting)
-How the data is processed when it arrives (Server application and database) (Or is it processed at all? Maybe it is just stored?)
-What we do with it when we have it

The short-term ask here is to have a (probably very simple) REST application that we can run on a WAMP server or something locally, so we can start figuring out some of these questions. Let's say to start, it would have a single endpoint StoreLog that just takes a json string and saves it as a file on the disk of the "server".
It should also be possible to go ahead and start finding answers to our hosting questions, as well as Unity Analytics questions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants