Seekr is now standalone! beta.seekrstats.com
Documentation

System Mechanics

A transparent breakdown of how Seekr processes data, calculates stats, and interacts with Rocket League.

Statistics Calculation

Seekr sends a Heartbeat every few minutes with the API key and version in the request. The heartbeat response tells Seekr if an update is available.

The API key is used to reference a Seekr user and set a last heartbeat time. If the last Heartbeat time is within 10 minutes, the Active User count goes up.

ELO Calculation is based on weights and averages.
As it would be unfair for a player with 100 matches who plays poorly to be higher than a player with 10 matches who plays better, average match statisitcs, win loss ratio, mmr, and total statistics are all weighted.
These weights determine the final ELO calculation.

Playstyle is calculated based on match averages and weights. If a player has a high goal average per game, and a low assist/save average, they are more likely an Offensive player. Vice versa.

However, the statistical averages for a rotating 2s player, who may play further up more than back, likely will show a high defense average. This means we needed to incorporate a weight system so that Goals/Match are worth more than Saves/Match.

Playstyle Fingerprinting maxes at 100 points per Playstyle.

Shot Efficiency is calculated using Goals divided by Shots. A player with high shots and low goals will have a lower efficiency than a player with a higher goals to shots ratio.
Match Data

Seekr only transmits data relevant to Heatseeker gameplay. We do not access inventory, trading logs, or chat history. Specifically, we upload:
Match Data:
- Match GUID
- Match Status (In Play - LIVE, or Finished - FINISHED)
- Uploader Platform ID
- Match Type (Casual, Private, Tournament, Splitshot, Ricochet)
- Team Size (1v1, 2v2, 3v3, 4v4)
- Blue Team Goals
- Orange Team Goals
- Winning Team (not based on Goals, but based on who is winning/has won, such as in the event on a forfeit but the forfeiting team has more goals)
- Server Region
- Server Name
- Map Name
- Time Played (elapsed time since initial count down started)
- DDoS Detection Results
- Plugin Version

Player Data:
Platform ID
Username
Team (0 or 1, Blue or Orange)
If they are Winning
If they are the designated Uploader
If they are in a Party
Tournament or Competitive Rank
Playlist MMR
Current Score
Current Goals
Current Assists
Current Saves
Current Demos
Current Shots
Current Own Goals
Current Ball Touches
Current Ping

Your API key acts as a bearer token for authentication. All traffic is encrypted via TLS 1.3.
Seekr has it's own Private Key embedded into the plugin which must match the servers key.
Plugin Functions

Seekr uploads the Version and current set API Key to the server every few minutes for automatic updating and Online Player count.

The plugin checks the version on Heartbeat (every few minutes). If a newer version is found, then Seekr enables Seekr-Updater (if it's not able to be enabled, it is automatically downloaded from the Seekr server).
Seekr updater disables Seekr, as updates cannot happen to a plugin while they are loaded, then runs the update, and re-enables Seekr. On Seekr start, Seekr always attempts to disable Seekr-Updater in order to prevent Seekr from being disabled for no reason.

Updates are delivered securely via HTTPS. We prioritize stability, so updates are only pushed for critical bug fixes or new feature rollouts. No executable files are ever downloaded, only the compiled DLL plugin file.

Seekr hooks into the internal GameEvent wrapper provided by BakkesMod.

Specifically, we listen for the following functions:
TAGame.GameEvent_Soccar_TA.PostBeginPlay - Triggers match LIVE and begins data push every few seconds
TAGame.GameEvent_Soccar_TA.EventMatchEnded - Triggers match FINISHED and final data push
TAGame.GameEvent_TA.EventPlayerAdded - Triggers the Heads Up function (if enabled) to check if players have a known reputation