What the game sends, and what it does not.
This analytics site stores anonymous gameplay telemetry for Beards vs. Claws so players can understand performance, level flow, and community trends without exposing account identity. The only long-lived player identifier in the payload is an opaque UUID that the game uses as playerId. It is not a SteamID, profile name, email address, or computer name.
Anonymous UUID
Sessions are grouped by a random UUID, not by platform account identity.
Timestamps
Request receipt times such as session start/end and event creation are written by the server.
Excluded
No SteamID, computer name, OS username, email, or payment data exists in the analytics schema.
Collected Analytics Fields
The table below reflects the fields currently accepted by the game analytics routes.
| Field | What It Means | Notes |
|---|---|---|
| playerId | Opaque UUID used to connect sessions from the same anonymous player. | This is not a SteamID, username, or real-name field. |
| appVersion | Game build/version string. | Used to compare stability and behavior between builds. |
| gameVariant | Game mode or build variant being played. | Used for aggregate segmentation only. |
| sessionId | Server-issued session token that links events to one session. | Generated by the server when a session starts. |
| averageFps | Average frames-per-second for the keepalive window. | Performance trend only. |
| averageMemoryMB | Average memory use in megabytes for the keepalive window. | Performance trend only. |
| totalDeaths | Running session death count at the time of the keepalive. | Stored as a numeric counter. |
| totalKills | Running session kill count at the time of the keepalive. | Stored as a numeric counter. |
| shotsFiredByWeapon[].weaponId | Weapon identifier for a shots-fired counter entry. | Stored per keepalive window. |
| shotsFiredByWeapon[].count | How many shots were fired with that weapon in the window. | Merged with hit counts by weaponId. |
| hitsByWeapon[].weaponId | Weapon identifier for a hit counter entry. | Stored per keepalive window. |
| hitsByWeapon[].count | How many hits were registered with that weapon in the window. | Merged with shots-fired counts by weaponId. |
| voxelsDug | Running session total of voxels dug. | Gameplay aggregate only. |
| voxelsPlaced | Running session total of voxels placed. | Gameplay aggregate only. |
| currentScene | Current scene name during the keepalive snapshot. | Used for scene dwell analysis. |
| currentLevelId | Current level identifier, when applicable. | Nullable when the player is outside a level. |
| sessionId | Session token marking which session should be closed. | The timestamp itself is written by the server. |
| sessionId | Session token linking the event to a session. | Required on every gameplay event payload. |
| eventType | One of design, progression, log, or level. | Defines which optional fields are relevant. |
| eventId | Event name or identifier for design, progression, or log events. | Level events fall back to levelId as the stored eventId. |
| progressionStatus | Progression state such as Start, Complete, or Fail. | Required for level events. |
| eventDetail | Optional extra detail, including captured log message text. | Only present when the game sends it. |
| value | Optional numeric metric for a design event. | Stored as a floating-point value. |
| levelId | Level identifier for level-specific events. | Required for level events. |
| levelLoadSource | Where the level came from: BuiltIn, External, or SteamWorkshop. | Required for level start events only. |
| gamemode | Gamemode attached to a level or server event. | Stored only when provided by the game. |
| startedSessionBotsCount | Bot count used when a level or server session starts. | Numeric aggregate, not player identity data. |
| startedSessionMaxPlayersLimit | Maximum player limit configured for that session. | Numeric aggregate, not player identity data. |
| sessionId | Session token linking the event to a session. | Required on every server event payload. |
| serverAction | Whether a listen server was started or joined. | Allowed values are started and joined. |
| gamemode / startedSessionBotsCount / startedSessionMaxPlayersLimit | Optional server configuration details attached to the event. | Used for aggregate multiplayer analysis. |
| sessionId | Session token linking the scene event to a session. | Required for both load and unload events. |
| sceneName | Scene name that was loaded or unloaded. | Used to compute time spent in scenes. |
| sessionId | Session token linking the combat event to one anonymous play session. | Required on every per-weapon kill/death event. |
| weaponId | Weapon the player was holding when the kill or death happened. | Deaths are tracked against the victim-held weapon, not the killer weapon. |
| eventKind | Whether the event records a kill or a death for that held weapon. | Allowed values are kill and death. Each row counts as one event. |
| otherActorType | Whether the opposing actor was a bot or a real player. | On kills this refers to the victim; on deaths it refers to the killer. |
Server-generated timestamps and internal row IDs still exist behind the scenes so the site can build charts reliably, but those are not additional personal identifiers provided by players.
Explicitly Not Collected
These fields are not defined in the analytics payload or stored in the analytics tables used by this site.
| Field | Status | Notes |
|---|---|---|
| IP address | Not collected as an analytics field | The analytics schema and validators do not define an IP field. A hosting provider may still see IPs in standard network logs outside the analytics tables. |
| SteamID or platform account ID | Not collected | The app stores only an opaque UUID in playerId. |
| Steam profile name or real name | Not collected | No profile-name field exists in the analytics payload. |
| Computer name / device name | Not collected | No hostname or machine-name field exists in the analytics payload. |
| OS username | Not collected | No local-account field exists in the analytics payload. |
| Email address or contact details | Not collected | No contact field exists in the analytics payload. |
| Hardware serial numbers or hardware IDs | Not collected | The analytics payload does not define any hardware identifier fields. |
| Precise location / GPS data | Not collected | No location fields are sent by the game analytics routes. |
| Payment details or purchase history | Not collected | The analytics payload has no commerce-related fields. |
| Files, screenshots, or desktop contents | Not collected | The analytics payload is structured metrics plus optional game log text only. |
Important nuance: the web host or reverse proxy delivering the site may still maintain ordinary access logs outside these analytics tables. This page describes the application-level analytics schema used by Beards vs. Claws itself.