Debugging Valorant

Posted on July 17, 2020

I had quite a few issues getting Riot Games new first person shooter Valorant running on my laptop. This is a brief post to cover some of the techniques I used to debug and resolve the issue.

Foreword:

I have quite a old laptop (ThinkPad P70) which has been used to develop and debug a wide array of software. This is 100% a issue I caused for myself a few years ago, but I still want to share the experience of debugging the issue incase anyone else needs to tackle the same sort of thing in the future

The Problem

So! Downloaded, Installed and rebooted due to the Vanguard intrusive anti-cheat. Then on launch I was prompted with this error message:

valorant_error

Cool, “Restarted the game client” = Same Issue & Rebooted = Same Issue.

Valorant Support

I raised a ticket which Valorant support who walked me through some debugging steps including performing a “clean boot” which in my opinion is a tad overkill and required me to disable all non-windows services on my computer. This caused quite a few issues with my PC and I had to boot into safe-mode to re-enable everything.

Side Rant: Why is getting Windows 10 into safe-mode such a pain. Back in Windows 7 you just had to mash F8 on boot. After performing the “clean boot” I could not get into Windows settings menu and the shift key method did not work so I had to “repeatedly turn your device off, then on” which seams a bit silly. Then after that you still need to “reboot for more recovery options” then perform a bitlocker recovery on the drives just to get into safe mode. Like I understand WHY, its because of how the UFI, TPM and trusted boot is configured but its still convoluted.

anyway I continued the support call trying:

however this did not resolve the issue.

Initial Debugging

Looking at the Valorant “ShooterGame.log” located at C:\Users\<username>\AppData\Local\VALORANT\Saved\Logs I could see Valorant attempting to connect to https://127.0.0.1:4693/system/v1/builds. I could reach this address using curl which produced a HTTP 401 but this proves there is something listening on the other end and the basic auth relm of RiotRemoting is a dead giveaway. Using Windows netstat command I could see that port 4693 is owned by the RiotClientServices.exe process which must be the interface between the player identity and the game, makes sense. What does not make sense is why the Valorant.exe is unable to communicate to this address. I tried disabling the firewall but that did not help. In the logs I could see that 8888 was being polled but nothing was listening on that port.

I updated the support ticket with my findings and the support team thanked me for my debugging and then closed the ticket. :(

Further Debugging

After a few weeks I had no update on the ticket so I decided to try some more debugging.

Using the super handy Process Monitor tool from Sysinternals I created a filter to debug Valorant and Riot:

proc_mon_filter

Then I started Valorant and waited for the events to stream in…

proc_mon_events

Then applying a TCP specific filter I could look at the network connections:

proc_mon_filter2 proc_mon_events2

Cross referencing the process monitor + RiotClientServices + Valorant logs it looked like RiotClientServices opens a port for Valorant to connect to but Valorant never makes the connection, instead it always try’s to connect to the 8888 port!

proc_mon_events2

Ok. Thats a solid lead. So lets spin up a netcat lister on that port and see what we can find:

proxy_connection

Ah! So it must be inheriting some proxy setting. If I spin up a local HTTP proxy server I can launch the game, YAY!. Reading further, Valorant uses libcurl (no surprises there) for making network connections and I can set the NO_PROXY=* environment variable to force libcurl to bypass the proxy server. Putting this all into a .bat file makes it much easier to launch the game:

@echo off
echo "Starting Valorant..."
set NO_PROXY=*
cd "C:/Riot Games/Riot Client"
"C:\Riot Games\Riot Client\RiotClientServices.exe" --launch-product=valorant --launch-patchline=live

Further reading then led to the discovery of the Windows netsh winhttp proxy setting which for some reason was not reset when using the Windows 10 “reset all network setting” button so running netsh winhttp reset proxy to force reset the proxy settings fixed the problem permanently. I think this might be a leftover from using Fiddler to debug some Web app from a while ago.

I updated the support ticket with all this information incase another Valorant player has the same issue. (However unlikely that would be :D )

TL;DR

I set a proxy setting a few years ago using netsh winhttp which Valorant was using to connect to a local non-existent proxy server which was preventing the game from starting. Resetting the proxy with netsh winhttp reset proxy fixes it.