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
The Sinclair ZX Spectrum BASIC compiler!

ZX BASIC Copyleft (K) 2008, Jose Rodriguez-Rosa (a.k.a. Boriel) http://www.boriel.com All files in this project are covered under the GPLv3 LICENSE ex

Jose Rodriguez 143 Dec 13, 2022
An all-inclusive Python framework for the Riot Games League of Legends API. We focus on making the data easy and fun to work with, while providing all the tools necessary to create a website or do data analysis.

Cassiopeia A Python adaptation of the Riot Games League of Legends API (https://developer.riotgames.com/). Cassiopeia is the sister library to Orianna

Meraki Analytics 473 Jan 07, 2023
Box - a world simulator written in python with pygame

Box is a world simulator written in python with pygame. Features A world generation system A world editor Simulates creatures called boxlanders. You c

1up Community 3 Nov 14, 2022
Recreation of HexGame in Pygame. More features will come soon !

Hex with Pygame Historical point of view What Are the rules of this game ? Some Strategies and tips The algorithm for the Win Other fonctionnalities W

4 Mar 26, 2022
BritishTrainsDepartureBoard - A pygame program that immitates the dot matrix departure screens found at National Rail stations

BritishTrainsDepartureBoard - A pygame program that immitates the dot matrix departure screens found at National Rail stations

Finn O'Neill 3 Aug 10, 2022
Brawl Stars private server for version 30.242

Brawl Stars v30 Brawl Stars v30.242 server emulator written in Python. Requirements: Python 3.7 or higher pymongo dnspython colorama Running the serve

15 Oct 17, 2021
A small game I made back in think 2011

Navi Network A small game I made back in think 2011. An online game inspired by the self-hosted nature of Minecraft, made with pygame, based on the Me

Peder Bergebakken Sundt 2 Jan 19, 2022
Game using Python

🎡 Rock-Paper_Scissor Game Using Python Beginner Friendly Easy to use ♟ Want to Play this? Clone this repository Open in any IDE(for eg. VS Code, PyCh

Akash Kumar 1 Oct 17, 2021
Useful guides, tutorials, and FAQs related to LEGO Universe and Darkflame Universe.

Awesome Lego Universe A curated list of awesome things related to LEGO Universe. LEGO Universe was a kid-friendly massively-multiplayer online role pl

Eric Myllyoja 33 Dec 12, 2022
Adventure-Game - Adventure Game which is created using Python

Adventure Game 🌇 This is a Adventure Game which is created using Python. Featur

ArinjoyTheDev 1 Mar 19, 2022
Creating Tetris with Pygame

Tetris 🤝 Contributing Contributions, issues and feature requests are welcome! Feel free to check issues page. Show your support Give a ⭐️ if this pro

Gavin Capriola 0 Mar 01, 2022
Guess The Random Number - A sample Random Number Guessing Game Python Program

Guess_The_Random_Number This repo contains a simple "Random Number Guessing Game

Pramod Kumar 3 Feb 09, 2022
NSI project --> 2D platformer in Python with Pygame

Projet de NSI (2021-2022): Jeu sous Python Collaborateurs: Remi K-S et Nathan D Lien de l'environnement IDE de Python en ligne: https://replit.com/@Re

Remi K-S 3 May 24, 2022
The repository that hosts the code that teaches a reinforcement learning - based bot to play 2048

The repository that hosts the code that teaches a reinforcement learning - based bot (based on policy gradients method) to play 2048

Maxim Rud 1 Dec 16, 2021
Web frontend to play games from 2008 Miniclip - uses Ruffle for playback

cliparchive Description A set of scripts to download games from the Wayback Machine's archive of Miniclip.com, and a Web frontend to play them using r

Simon Garrelou 3 Dec 09, 2022
Allows you to email people wordle spoilers. Very beta, not as many features

wordlespoiler Allows you to email people wordle spoilers. Very beta, not as many features How to Use 1.) Make a new gmail account. Go to settings (Man

0 Jan 04, 2023
Jogo Flappy Bird com phyton e phygame

Flappy-Bird Tecnologias usadas Requisitos para inicializar o jogo: Python faça o download em: https://www.python.org/ Pygame faça o download em: https

João Guilherme 1 Dec 06, 2021
EL JUEGO DEL GUSANITO

EL JUEGO DEL GUSANITO El juego consiste en una línea que no para de moverse, el usuario lo controla con las flechas de: → derecha ← izquierda ↑ arriba

Valeria Saidid Miranda Ibarra 0 Dec 19, 2021
Tic Tac Toe Python Game GUI

Tic Tac Toe is one of the most played games and is the best time killer game that you can play anywhere with just a pen and paper.

Astitva Veer Garg 1 Jan 11, 2022
python script to convert .OBJ files into Minecraft, rendering them in game with a core shader.

samples: random notes about the tool general output format: (animation not supported yet but planned) vertex id Minecraft's gl_VertexID isn't per mode

199 Jan 02, 2023