"Optimal" Crosshair Colors Based on Customs Game Footage

Posted by Steve

Saturday, September 3, 2022 8:26 AM

"Optimal" Crosshair Colors Based on Customs Game Footage

When Patch 5.04 dropped and crosshair craziness happened, I decided to try and find the best possible crosshair color in Valorant based on video from actual Valorant gameplay. So instead of playing the game and finding my preferences like a normal person, I recorded myself in customs looking at every angle I could think of on every map (except Split RIP) and wrote a Python script to look through that video find the best crosshair color for me.

I have a problem with programming.

Too many custom games and a quick Python script later, I came up with a list of crosshair colors that contrasted as much as possible with each map, as well as an overall crosshair color that attempts to work for every map. The colors are as follows:

Overall: #00b5ff

Ascent: #00e0ff

Bind: #00a1ff

Breeze: #00ffdf

Fracture: #005bff

Haven: #0078ff

Icebox: #2aff00

Pearl: #ff1d00

Split: may or may not have gotten too lazy to collect data here

There's a couple of interesting patterns here; Cyan/Blue is a very common choice of color, especially for Ascent, Bind, Breeze, Fracture, and Haven. Icebox and Pearl are the only real exceptions to this rule, using bright yellows/reds respectively. However, the blue trend is enough to noticeably shift the overall color to a sky blue, which is cool to see. In any case, the crosshair colors I found work well enough, so it'd be cool to see if anyone else can find a better solution based on this. The data I gathered was pretty sparse and it'd be interesting to see how these choices fare when considering smokes/util/etc., but I digress.

End of the day I may still suck at this game, but it's not because my crosshair is bad.

DETAILS FOR NERDS:

Ok, a bit of a crash course in how I actually wrote this script. Long story short, it's a bunch of OpenCV, PIL, and NumPy thrown together in an abomination to all software engineering. I collected the videos by running around in customs without a crosshair and recording the video with OBS; you could get colors from game files but I'm not nearly that smart. From there I used OpenCV to load each video frame by frame, then used PIL and K-Means to extract the dominant color from a specific cropped section of the image (usually a square crop around the center of the image). This color was then collected for every frame in the map and averaged to get the overall "color of the map". If I was analyzing multiple maps, I computed the colors for every map, then averaged all of those averages together (this makes sure that each map equally contributes to the average "game color"). From here, I just inverted the color and maximized the saturation and value of the color to make it as bright as possible. I'm not a color person, so it's entirely possible this is a super bad choice, but idk. It'd be cool to see how considering multiple dominant colors per frame, or weighting specific important frames (e.g. big angles) more would impact the decisions, but I'm overthinking this enough as it is.

EDIT: Since a solid chunk of you are interested in the actual specifics, here's a link to a Github repository with the script and some basic instructions to get started. I haven't uploaded the data, but you can collect your own with relative ease, just use like OBS or something if you want to.

https://github.com/useewhynot/Valorant_Optimal_Crosshair

References

  • https://www.reddit.com/r/VALORANT/comments/x3ok8b/optimal_crosshair_colors_based_on_customs_game/
  • https://reddit.com/x3ok8b

More Like This