Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/woctezuma/steam-player-level-percentiles
Query and analyze percentiles of player levels on Steam.
https://github.com/woctezuma/steam-player-level-percentiles
centile percentile percentiles steam steam-api steam-community steam-leaks steam-level steam-players
Last synced: 30 days ago
JSON representation
Query and analyze percentiles of player levels on Steam.
- Host: GitHub
- URL: https://github.com/woctezuma/steam-player-level-percentiles
- Owner: woctezuma
- License: mit
- Created: 2022-11-30T17:28:48.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-03T11:10:12.000Z (about 1 year ago)
- Last Synced: 2023-12-03T12:23:11.429Z (about 1 year ago)
- Topics: centile, percentile, percentiles, steam, steam-api, steam-community, steam-leaks, steam-level, steam-players
- Language: Python
- Homepage:
- Size: 29.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Steam Player Level Percentiles
This repository contains Python code to query percentiles of player levels, to infer the total number of Steam players.
![Illustration cover][img-cover]
## Requirements
- Install the latest version of [Python 3.X][python-download-url].
- Install the required packages:```bash
pip install -r requirements.txt
```## Usage
```bash
python player_levels.py
```To apply the method to achievement unlock percentages, run:
```bash
python achievements.py --app-id 788100
```## Assumption
Let us assume that, in order to compute the percentages, Valve:
- divides the total number of players by 100,
- then truncates it.For instance, with `16,483,473` players at level 1, and `104,857,600` players in total,
then the percentile would be:
```
16,483,473 / 1,048,576 ~ 15.719864845275879
```which is finally displayed as:
```
https://api.steampowered.com/IPlayerService/GetSteamLevelDistribution/v1/?player_level=1
``````json
{
"response": {
"player_level_percentile": 15.719864845275879
}
}
```## Results
```
Least Common Multiple: 1048576
```Following our assumption, this would mean that the total number of Steam players is
a multiple of `104,857,6XY`, where `XY` are unknown digits.
This is not super useful info.😅## Truncation
> [!Note]
> Interestingly, the least common multiplier is a power of 2.$$
1048576 = 1024^2 = 2^{20}
$$This could indicate a truncation of the numbers in binary representation,
which would prevent the estimation of a total number of Steam players
of the order $2^{28} - 2^{30}$, i.e. hundreds of millions.## References
- [`GetSteamLevelDistribution`][steamdb-api]: API which returns how a given Steam Level compares the user base at large
- Tyler Glaiel, [*Using achievement stats to estimate sales on Steam*][glaiel-medium-blogpost], June 2018
- [`TylerGlaiel/steamsalesestimator`][glaiel-sales-estimator]: C++ code supporting the aforementioned blog post
- Ars Technica's article: [*Valve leaks Steam game player counts; we have the numbers*][article], July 2018
- Ars Technica's supplemental data: [snapshot of "players estimate"][arstechnica18-data] for 13,281 games[img-cover]:
[python-download-url]:[steamdb-api]:
[glaiel-medium-blogpost]:
[glaiel-sales-estimator]:
[article]:
[arstechnica18-data]: