To understand how people use GameVault better, we could track anonymous data both in the backend and on the frontend. This means we can collect information to see what parts of the software needs improving and which features users like the most.
The Microsoft Store gives us some basic numbers, but they're not very detailed.
We'll make sure users can choose to turn off this tracking if they want to.
Here are some examples of the information we could collect:
When and for how long people are using GameVault actively. (This could help us decide when to release updates.)
How many games users have, what types they are, and which platforms they're on. (This could help us make GameVault run better.)
Popular preferences like whether users use SQLITE or Postgres, or if they have Auto-Extract turned on. (This could help us make default settings easier to understand.)
Which parts of our user interface are used a lot and which ones aren't. (This could help us focus on adding new features, removing unused ones, and improving the ones that work well.)
Hardware Stats ( For example for Performance Optimization )
We currently use swetrix.com for website analytics. I believe we can also use their API to track data in these services.
[x] The App should log a page-view event on every visual view it opens. (e.g. GameView, LibraryView, GameSettings)
Request:
POST https://analytics.platform.phalco.de/log
{
"pid":"N2kuL4i8qmOQ",
"tz": "Europe/Berlin", //Timezone of the user, as IANA Time Zone Database identifier like (Europe/Berlin) (see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
"pg": "/library", //Imaginary page structure the User is on / is the root (e.g. /library, /game, /settings, /settings/data, /community/user-settings/, etc.)
"prev": "/library", // Previous page the user was on. When switching from /library to /game this is /library
"lc": "en-US", // Locale of the user (IETF language tag standard)
}
[x] The App should track all button click events by using a global eventlistener and some sort of id like automation ID
Request:
POST https://analytics.platform.phalco.de/log/custom
{
"pid":"N2kuL4i8qmOQ",
"ev": "click_Window.MainGrid.MainPanel.SubmitButton" // Visualtreepath of the button.
"tz": "Europe/Berlin", //Timezone of the user, as IANA Time Zone Database identifier like (Europe/Berlin) (see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
"pg": "/library", //Imaginary page structure the User is on / is the root (e.g. /library, /game, /settings, /settings/data, /community/user-settings/, etc.)
"lc": "en-US", // Locale of the user (IETF language tag standard)
}
[ ] The App should track specific custom events with some metadata that are useful to our work. for example:
Request:
POST https://analytics.platform.phalco.de/log/custom
{
"pid":"N2kuL4i8qmOQ",
"ev": "game_download" // custom event name
"tz": "Europe/Berlin", //Timezone of the user, as IANA Time Zone Database identifier like (Europe/Berlin) (see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
"pg": "/library", //Imaginary page structure the User is on / is the root (e.g. /library, /game, /settings, /settings/data, /community/user-settings/, etc.)
"lc": "en-US", // Locale of the user (IETF language tag standard)
"meta": {size: "21252521", game_type: "PORTABLE_WIN"} // js object with anything we need. ONLY STRING VALUES ALLOWED!
}
[x] Clarify together whether we replace or extend the current Phalcode Discord Webhook Error Handler
[x] If Analytics Setting is enabled or Send Crashlog is on, send all unhandled client exceptions to:
Request:
POST https://analytics.platform.phalco.de/log/error
{
"pid": "N2kuL4i8qmOQ",
"name": ex.GetType().Name,
"message": ex.Message, (max 2000 characters.)
"lineno": new System.Diagnostics.StackTrace(ex, true).GetFrame(0)?.GetFileLineNumber() ?? 0,
"filename": new System.Diagnostics.StackTrace(ex, true).GetFrame(0)?.GetFileName() ?? "unknown",
"tz": "Europe/Berlin", //Timezone of the user, as IANA Time Zone Database identifier like (Europe/Berlin) (see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
"pg": "/library", //Imaginary page structure the User is on / is the root (e.g. /library, /game,
"lc": "en-US", // Locale of the user (IETF language tag standard)
}
To understand how people use GameVault better, we could track anonymous data both in the backend and on the frontend. This means we can collect information to see what parts of the software needs improving and which features users like the most.
The Microsoft Store gives us some basic numbers, but they're not very detailed.
We'll make sure users can choose to turn off this tracking if they want to.
Here are some examples of the information we could collect:
We currently use swetrix.com for website analytics. I believe we can also use their API to track data in these services.
Backend: https://github.com/Swetrix/swetrix-node Client: https://docs.swetrix.com/events-api
To-Do:
Settings
Heartbeat
https://analytics.platform.phalco.de/log/hb
Log Page Views
https://analytics.platform.phalco.de/log
Log Button Clicks
https://analytics.platform.phalco.de/log/custom
Log Custom Events
https://analytics.platform.phalco.de/log/custom
Events we need
Track Errors
Swetrix also supports Error tracking!
https://analytics.platform.phalco.de/log/error