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
Simple car game written in PyGame

Welcome to CarGame 👋 Car Game written in PyGame! NOTE: This is still new and there may be stuff broken... 🏠 Homepage Install install pygame by typin

John 1 Oct 29, 2021
The Turtle Race Game built in Python with Turtle module.

Turtle Race Game The Turtle Race Game built in Python with Turtle module. Installation If you don't have Turtle module on your computer. You can downl

Aytaç Kaşoğlu 1 Nov 09, 2021
A Pygame Hangman Game coded in Python 3. Run Hangman.py in a terminal if you have Python 3

Hangman A Pygame Hangman Game coded in Python 3. Run python3 Hangman.py in a terminal if you have Python 3.

1 Dec 24, 2022
TicTacToc - Simple TicTacToc game played by minimax algorithm

TicTacToc simple TicTacToc game played by minimax algorithm. This app is based o

5 Apr 05, 2022
A Neural Network based chess engine and GUI made with Python and Tensorflow/Keras.

Haxaw-Chess Haxaw: Haxaw is the Neural Network based chess engine made with Python and Tensorflow/Keras. Also uses the python-chess library. (WIP: Imp

Sarthak Bharadwaj 8 Dec 10, 2022
Wordle Solver: A simple script which is also called Wordle solver

wordle-solver this code is a simple script which is also called Wordle solver. t

amirreza 1 Feb 15, 2022
uses Entropy to find the best next guess for Wordle, given the color clues

WordleSolver uses Entropy to find the best next guess for Wordle, given the color clues use player.py and enter in the string for the suggested clue w

Steve Earth 1 Jan 26, 2022
Meu primeiro jogo desenvolvido em Python, usado o módulo do Pygame

📖 Sobre Esse repositório é dedicado ao meu primeiro jogo feito em Python, utilizando o módulo do pygame. O jogo foi desenvolvido seguindo o tutorial

Michael Douglas 0 May 06, 2022
Ghdl-interactive-sim - Interactive GHDL simulation of a VHDL adder using Python, Cocotb, and pygame

GHDL Interactive Simulation This is an interactive test bench for a simple VHDL adder. It uses GHDL to elaborate/run the simulation. It is coded in Py

Chuck Benedict 2 Aug 11, 2022
This is a text-based snake and ladder game .

This is a text-based snake and ladder game .

AKSHAI KRISHNA A 1 Nov 01, 2021
Wordle-Python - A simple low-key clone of the popular game WORDLE made with python and a 2D Graphics module Pygame

Wordle-Python A simple low-key clone of the popular game WORDLE made with python

Showmick Kar 7 Feb 10, 2022
Lint game data metafiles against GTA5.xsd for Rockstar's game engine (RAGE)

rage-lint Lint RAGE (only GTA5 at the moment) meta/XML files for validity based off of the GTA5.xsd generated from game code. This script accepts a se

GoatGeek 11 Sep 18, 2022
You want to uto-update your private minecraft client? Give this to developer and enjoy!

minecraft-hack-installer You want to uto-update your private minecraft client? Give this to developer and enjoy! Steps to do: Install libraries: pip i

EuropeStudio 1 Jun 03, 2022
It calculates the Nim sum of a nim game.

nim-sum It calculates the Nim sum of a nim game. The rules of Nim The traditional game of Nim is played with a number of coins arranged in heaps: the

2 Jan 02, 2022
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
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
Jogo da velha com interface gráfica desenvolvida em Python utilizando pygame e IA(Inteligência Artificial)

Jogo-da-Velha Sobre o projeto Jogo da velha com interface gráfica desenvolvida em Python utilizando pygame e IA(Inteligência Artificial) Layout tela d

Matheus Maia Alvarez 6 Apr 09, 2022
Given some input, spit out the possible words for a Wordle puzzle

Wordle Helper, because why not. Given some input, spit out the possible words for a Wordle puzzle First time setup # Download the dictionary to a file

Richard Duarte 1 Jan 25, 2022
Flappy-Bird AI - Flappy Bird game with AI

FLAPPY BIRD AI Flappy Bird game solved with neat-python, a Python module based o

1 Jan 07, 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