Session based gameplay statistics for CS:GO servers (no SourceMod plugin/extension needed)
This app uses CS:GO Pipeline in order to receive UDP logs from CS:GO servers pre-processed into JSON form via a Redis list.
A job is dispatched every minute to process pending events:
PlayerConnected
: starts a new session that will be used to hold information.PlayerDisconnected
: closes an existing session and builds a JSON object containing every information collected during the session.PlayerDamage
: collects damage done, damage received, death, kills information.
During a live session, statistics are collected and stored into Redis (for performance reasons) and after it's closed a JSON object is stored as a serialized JSON object into the main SQL database.
Data collected and stored per session are called metrics
, which hold maximum amount of information with minimal redundancy or repetition (amount of damage done with a certain weapon and hitgroup). Metrics can then be processed into statistics
, which are more user-friendly information (total damage done or total damage done with a certain weapon).
This is done to avoid holding redundant statistics (which would need more storage) and to allow other kinds of statistics to be processed after events were collected.
- PHP 7.x
- MySQL/MariaDB
- Redis
- Installation of CS:GO Pipeline
- CS:GO server
- Deploy this Laravel app;
- If you don't have CS:GO Pipeline, deploy it;
- Add a list in your CS:GO Pipeline installation with the key
sessions
(set maximum size to at least 5k items); - Setup a cronjob for the scheduler;
- Add your server address into the
servers
table.
There are no configuration options yet.
- Finish it and complete documentation.
- Add support for object storage
- Add support for compression
- Add email notifications
- Add per-server layouts
- Add support for heatmaps