View your VALORANT performance in different areas of every map in the game!

Overview



Valorant-Zone-Stats

Inspired by Leetify's awesome Map Zones Tool for CS:GO

A simple desktop program to view your VALORANT performance in different areas across all maps!

map page

Quick Links

Installation

Download the exe from the latest release, then double-click to run the program!

Alternatively, download the zip in the release. Extract it to anywhere you would like, then run valorant-zone-stats.exe.

Info: Application data is stored in your APPDATA folder, typically C:\Users\USERNAME\AppData\Roaming\Valorant-Zone-Stats.

Explanations for each file:

  • matches.db: Stores your past matches for analysis, since Riot does not provide all past matches.
  • storage.json: Keeps track of matches the program should ignore (e.g. deathmatch) to reduce loading time.
  • settings.ini: Stores your settings, currently only your region.

Usage

Make sure the program is running on a computer where you are logged into VALORANT. Click on the "Fetch User" button, then click on the "Fetch Matches" button. This may take a while the first time, since it will be grabbing your recent matches from VALORANT. If matches do not appear, try changing your region (which is automatically detected the first time you run the program.

The regions are: NA (North America), AP (Asia Pacific), EU (Europe), KO (Korea), BR (Brazil), LATAM (Latin America)

home page

Once a list of your recent matches is populated, navigate to the "Map" tab on the top left. From there, you can choose the map you would like to see your zone stats in, as well as filter by attacker/defender/both side.

map page

You are also able to click into each zone to see the specific kills/deaths that occurred. You can also zoom with your scrollwheel and pan by dragging on the map.

zone kills

Icon Legend

  • Solid Green: Position where you killed someone
  • Empty Green: Position of the victim
  • Solid Red: Position where you died
  • Empty Red: Position of the killer

Note that you will need to fetch matches again when you open the program again in the future. It should be a bit faster since all your older matches are already stored on your computer.

Building

Python 3.8.8 was used to develop this program.

Create a virtualenv with the dependencies (listed in requirements.txt), start a terminal in the root directory of the project, activate the virtualenv, then execute run.bat.

To package the program run either build.bat (for a folder) or build_onefile.bat (for a single exe). Don't forget to activate the virtualenv first!

Credits

TODO

  • Make UI polygons non-rectangular (match the shape of the map)
  • Add more filters for statistics (e.g. per-agent)
  • Improve match list and add statistics for each match
  • Improve color coding for the maps (current it is green if K/D >= 1.0, red otherwise)
  • Potentially remake the map zones
  • Analyze other types of matches (unrated & customs) instead of only competitive
  • Offline mode (without needing VALORANT to be running)

How?

The program uses the same data the careers page gets (scoreboard, timelines, performance). The polygons that form the map zones were handcrafted in Desmos, based on a general idea of the map zones. A small script is used to convert Desmos polygons into a format the code can utilize (namely the Shapely library).

Legal Disclaimer

This project is in no way affiliated with Riot Games. It only uses VALORANT's client API to download matches on behalf of the user.

Comments
  • Fracture Map Added

    Fracture Map Added

    Hello fracture:) Most significantly this uses a new way to generate the zones to make it quicker. For adding maps. I added the photoshop file with the template I fed in. The background of it is what I started with. Zone names are the official so renaming always a potential option. Not sure if we want a manual zone across the middle for the ropes as you can kill and be killed on them. Clearly no ability to differentiate when in tunnels vs on top. the x/y multiplier and x/y offset are just the official valorant-api.com values without manual tweaking. They seem quite accurate.

    opened by mitchcapper 2
  • Create logs directory at startup for first time use

    Create logs directory at startup for first time use

    When running the program for the first time, the program tries to use logging.FileHandler to create the debug.log file in the Valorant-Zone-Stats folder in AppData. The issue is that this folder does not exist when a new user starts the app for the first time. and logging.FileHandler will not create this directory on its own.

    Hence the program crashes with the following error

    FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\<username>\\AppData\\Roaming\\Valorant-Zone-Stats\\debug.log'
    

    I notice that migrate_files tries to create that directory if it does not exist, however it is after the logger is attempted to initialize, hence the required directories are never created.

    Instead of creating the app folder in migrate_files function which is run on module's main method. We can create that folder one time (if does not already exist), right before the logger is loaded, this will ensure that the folder is always present in all cases.

    This PR should fix the above issue and has been tested on my machine.

    bug 
    opened by Ashesh3 1
  • Simplify coordinate calculations

    Simplify coordinate calculations

    Simplify how we calculate coordinates (exact same numbers obtained). Note this also is storing numbers exactly how the official game does. One non-change is the zones in our per map custom config info. Those have the Y value really at 1-y, so when we load in the zones we will just revert the 1-y there.

    Top left would be 45 (so want -45 to cancel it out to 0).

    Coordinates are officially: for x that is left 0 right 1 for y that is top 0 bottom 1

    minus the map zones stored in the json those are y is inverted to top is 1 bottom is 0.

    We don't need to re-run stats because the cached stats only stores the ingame raw coordinates.

    opened by mitchcapper 0
  • Improved an Auth Failure Exception Message

    Improved an Auth Failure Exception Message

    Throw our own exception during the auth flow that is a bit more clear if access_token is not present.
    

    This error is thrown if the riot client is launched but not valorant. We can still fetch matches.

    opened by mitchcapper 0
  • Add Single Match Debugging

    Add Single Match Debugging

    Added Debug constant options to just look at a specific match in the database.
    Can also optionally specify the PUUID to avoid logging in.
    Print zone names on map if debugging too.
    

    Clarified one console message to be more clear as well.

    opened by mitchcapper 0
  • Pearl map addition

    Pearl map addition

    Hey there, when will pearl be added to the map selection? I really, really like this project and I tend to use it often.

    Thanks for all the hard work!

    enhancement 
    opened by JonJaded 1
  • StatsVersion per map

    StatsVersion per map

    Right now there is just a global stats version, works well if you change the stats itself in some way (so all maps need to re-run), which is what it was likely designed for. If you do something like adjust the zones on a map you either have to re-run stats on all matches for all maps or won't get those stats updates for existing matches. I have code so that if a zone is missing in the match stats cache to flag the match for re-running stats. This would allow you to make a minor name change to a zone (or add a new zone) if you wanted to force only the matches for that map to update.

    If the version was per map though you could increase it on a zone update.

    opened by mitchcapper 0
Releases(v2.2.0)
Owner
Louis
"Sometimes you need to scorch everything to the ground, and start over... People are like that, too. They start over. They find a way." :)
Louis
A visualization of how much Manchester United fans enjoyed each game from the first half of the 21/22 Premier League season.

Man-Utd-Fan-Satisfaction-Levels-First-19-games A visualization of how much Manchester United fans enjoyed each game from the first half of the 21/22 P

1 Jan 19, 2022
Tool for Path of Exile game to automatically scan Archemesis inventory and display related information

poe-archnemesis-scanner Tool for Path of Exile game to automatically scan Archemesis inventory and display related information Features Controls When

70 Nov 10, 2022
Frets on Fire X: a fork of Frets on Fire with many added features and capabilities

Frets on Fire X - FoFiX This is Frets on Fire X, a highly customizable rhythm game supporting many modes of guitar, bass, drum, and vocal gameplay for

FoFiX 377 Jan 02, 2023
2D Minecraft Clone made with Python & Pygame & OpenGL

2D Minecraft Clone This is a 2D clone of the well-known game Minecraft made in Python using Pygame and ModernGL I started this mostly as a self-improv

Kadir Aksoy 2 Sep 25, 2022
A game based on Motus, to be played on Unix terminals.

Motus python game A game based on Motus, to be played on Unix terminals. How to play? Before playing, you need to install all the requirements needed

Arthur Molia 1 Feb 02, 2022
PyCheckers - A classic board game implemented in pygame

PyCheckers! A classic board game implemented in pygame! Complete with every feature you need to play checkers! (including handsome sprites drawn by a

helaxious 1 Jan 21, 2022
A comprehensive, feature-rich, open source, and portable, collection of Solitaire games.

PySol Fan Club edition This is an open source and portable (Windows, Linux and Mac OS X) collection of Card Solitaire/Patience games written in Python

Shlomi Fish 368 Dec 28, 2022
A chess engine with basic AI capabilities (search for best move using MinMax algorithm)

A chess engine with basic AI capabilities (search for best move using MinMax algorithm)

Ken Wu 1 Feb 02, 2022
Wordle is a web-based word game. Players have six attempts to guess a five-letter word;

Wordle is a web-based word game. Players have six attempts to guess a five-letter word; feedback is given for each guess, in the form of colored tiles, indicating when letters match or occupy the cor

Abhishek 2 May 21, 2022
Text-Adventure-Game [Open Source] A group project by the Python TASK Force

Text-Adventure-Game [Open Source] A group project by the Python TASK Force

Mircea Dumitrescu 2 Sep 17, 2021
Jiminy, fast and portable Python/C++ simulator of poly-articulated systems with OpenAI Gym interface for reinforcement learning.

Jiminy is a fast and portable cross-platform open-source simulator for poly-articulated systems. It was built with two ideas in mind: provide a fast y

Alexis DUBURCQ 122 Dec 29, 2022
Multiple hacks that breaks the game

Blooket-Hack All of the cheats are based on a game mode.

glizzz_y 484 Feb 25, 2022
A Game of Life implementation in Python

Game of Life in Python (Golipy) Golipy is a simulator of John H. Conway's Game of Life, developed in Python based on the Pygame library. This is a toy

Alber 2 Dec 10, 2021
:tada: 2048 in your terminal

term2048 term2048 is a terminal-based version of 2048. Install pip install term2048 To upgrade a previous installation, use: pip install -U term2048

Baptiste Fontaine 798 Nov 21, 2022
View your VALORANT performance in different areas of every map in the game!

Valorant-Zone-Stats Inspired by Leetify's awesome Map Zones Tool for CS:GO A simple desktop program to view your VALORANT performance in different are

Louis 76 Jan 01, 2023
a game of life implementation in python

gameoflife-py python implementation of game of life Installing As long as you have bash and curl installed and are on Linux the install script should

Raghav 5 Jun 09, 2021
What games should I design next quarter?

Project1_Next-Quarter-Game-Design-Prediction What games should I design next quarter? 상황 : 게임회사 데이터팀 합류 문제 : '다음 분기에 어떤 게임을 설계해야할까' Data Description N

Jayden Lee(JaeHo Lee) 1 Jul 04, 2022
Useful tools for Minecraft worlds such as remove unused chunks, find blocks or entities.

Useful tools for Minecraft worlds such as removing unused chunks and finding blocks, command blocks or entities.

Rapha149 1 Feb 17, 2022
A fully automated system that transforms Twitch clips into gaming compilations

A fully automated system that transforms Twitch clips into gaming compilations Authors: Christian C., Moritz M., Luca S. Related Projects: Neural Netw

215 Dec 27, 2022
Jogo da velha escrito em python para 1 ou 2 jogadores

O Jogo da Velha Esse jogo da velha foi desenvolvido por mim em python, como um desafio de programar um jogo da velha em menos de 24 horas, no qual o c

Gabriel Castelo Branco 5 Jun 18, 2021