Let's talk about client performance in video games. What actually determines your Frames Per Second? (1/13)
Every frame your computer has to update the game simulation (ex. process input, run movement calculations, etc.), update the scene, and draw all relevant objects to create the image that shows up on your monitor. (2/13)
This work gets split up between your CPU and GPU. GPUs are very good at running small programs with massive parallelism (ex. computing the color of every pixel on the screen). CPUs are better suited for general purpose logic. (3/13)
In most games the CPU runs one frame ahead of the GPU; the simulation is being updated while the GPU is drawing the current frame. This avoids the CPU or GPU sitting idle while the other is doing its chunk of work. (4/13)
Total frame time is equal to whichever set of work is slower. If the CPU work takes 10 ms (100 fps) and the GPU work takes 16.67 ms (60 fps), you only get 60 fps; the CPU has to idle while the GPU catches up to prevent the game and the image on your screen desyncing. (5/13)
Most modern games are GPU bound. Current generation titles have many objects in their scenes with fancy graphics features and expensive fragment shaders (little GPU programs that compute pixel colors). (6/13)
VALORANT's art style is constrained; we prioritize readability and simplicity for a good competitive experience. Its graphics are hyper optimized and can run on an integrated laptop GPU from 2012 (Intel HD 4000). (7/13)
Any computer with a GPU from the last ~5 years is unlikely to break a sweat handling the game's graphical needs, even on High quality settings. Players tend to be surprised that adjusting settings from High to Low doesn't improve their fps. (8/13)
VALORANT is usually CPU bound on modern machines (caveat: see addendum); the time required to do the CPU work tends to be the bottleneck. (9/13)
We can parallelize big chunks of work across multiple CPU cores. Logic processing player inputs and logic preparing the scene for rendering can run at the same time. Animation poses for multiple characters can be updated concurrently. (10/13)
However, lots of work can't be parallelized. The game can't do movement computations without first processing player input because those inputs determine how the character moves. These dependent relationships prevent neatly scaling to an arbitrary number of CPU cores. (11/13)
Total CPU time for the frame is the length of the slowest work running on any one CPU core; in CPU bound configurations that number will also be your total frame time. How do you reduce this number? (12/13)
Two approaches: (1) do less work and (2) increase parallelism. VALORANT is investing in both approaches. It's hard, complicated work. At 300 FPS each frame is just 3.33 ms long. At this stage, shaving 0.1 ms off that frame time can be weeks or months of engineering work. (13/13)
Addendum: CPU bound players usually see better performance in the Practice Range or in a one player Custom than a ten player game. That's because the game simulation (and CPU work) is much more expensive in real games with a full lobby of players. (14/13)