Skip to content

[FEATURE] ISteamUserStats:SetUserStatsForGame support #1109

@blaberry

Description

@blaberry

Description

Currently, change suggestions to neotokyo has been a consensus driven process, where the judgement of players have been leveraged heavily with regards to making changes to core gameplay. This has been done without the use of data analysis and statistics tracking, making quantification of whether a change has had the desired effect or not very difficult.

Example

As an illustrative example, if you were to suggest a damage boost to the SRM-S, you'd want to track:

Indicators for improved weapon variety

  1. The number of times the SRM-S is picked - if this rises to within a given tolerance band, that's a indicator of a good balance change
  2. The number of kills made by the SRM-S - This should rise, but you should define a ceiling to the number of kills. You probably also will want to normalize the value against how often it's picked, but this should be done in calculation, not during logging.

Counter-indicators that may demonstrate too much of a balance change:

  1. Average recon KDR - If this rises too sharply, you have probably boosted damage too much.
  2. Class selection - If people who play assault or support start picking recon to counterstrat or take advantage of the gun after the change, your change was definitely too harsh. This will be a trailing, longer term indicator.

Proposed Solution

  • As a change suggester, I would like to be able to point to tracked metrics to define whether my suggested change is successful at achieving it's intended effect or not. I'd like these stats to be available through the ISteamGameServerStats::GetGameServerPlayerStatsForGame interface, as it allows me or someone with data visualization skills to create a dashboard where the community can monitor the results of my experiment.

The easiest way to achieve this would be through a new server side logging library. The library exposes an interface for logging metrics to steam, which can be added in the appropriate places into the game engine. The library checks whether sv_neo_comp is 1 and whether a sv_publisher_api_key is set and if true, the library updates the metrics at round conclusion or match end.

The ISteamUserStats::SetUserStatsForGame interface can be used for sending the statistics to steamworks.

Alternatives Considered

A sourcemod plugin could be written for tracking metrics and a separate statistics server could be hosted. But since steam provides free centralized storage, that seems unnecessarily burdensome to maintain.

Additional Context

The interface definition for the REST call is available here: https://steamapi.xpaw.me/#ISteamGameServerStats, but these interfaces are better available through the steamclient library https://partner.steamgames.com/doc/api/ISteamGameServerStats

Metadata

Metadata

Assignees

No one assigned

    Labels

    EnhancementNew feature or requestToolingTooling related works (EX: OS fixes, libraries)

    Type

    No type

    Projects

    Status

    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions