- 2012/11/15 06:37:05 PM
Hey all, I am a gameplay programmer here at ArenaNet; I just wanted to take a moment to address some stuff about FOV. A while back, reddit user Boojum started this thread (http://redd.it/118t3a) about FOV. He (she?) did some cool math to reverse engineer information about how our FOV is set up. Seriously, check it out, it is really cool!
What Boojum concluded is that at 16:10 apect ratio, our horizontal FOV came out to be about 65deg. We here at ArenaNet have stated that our FOV is fixed at 75degs. Pretty naturally, the conclusion was that our math must be bugged. So what gives? What is going on with all this FOV junk anyways?
This is my attempt to summarize what we have found and what we did about it. I am a programmer and so this might get more technical than most are comfortable with, but I hope that in the end it shows how everything works and why we made changes.
The first thing you should take away is that there is actually multiple ways to define FOV- Horizontal, Vertical, Diagonal. The each control how much we see of the game world, just in different directions of the screen. The rest of what we see is controlled mainly by Aspect Ratio, the ratio of the view width to the view height.
How does this work? Let’s say we have a fixed horizontal FOV to control the view, the vertical FOV would change based on the aspect ratio of the screen. In this situation, as I make the view height greater and greater, the vertical FOV would grow to see more and more. Now the interesting thing is if I was to stretch the view to be wider and wider, my effective vertical FOV becomes smaller, but the effective horizontal angle stays the same no matter what the aspect is. This is an important point- depending on which version we are using, the effective angle of the others change as the aspect ratio changes.
This is exactly what we found out happened with Boojum. It turns out that Guild Wars 2 uses diagonal FOV for our calculations, not horizontal and not vertical. Boojum didn’t know which version we used, so he had to make the assumption that we used horizontal. This is totally fair, we never mentioned which version we used. In the end, he calculated the effective horizontal FOV and found it to be 65degs and made the assertion that our math must be funny.
It turns out that when you work out all the math, at 16:10 aspect ratio, using diagonal FOV of 75deg, the effective horizontal FOV is about 65degs- exactly what Boojum found! All the math works out! In fact, I would bet that if Boojum reran his program, but this time set to figure out diagonal FOV, he would find it to be exactly 75degs.
So what implications does using a diagonal FOV have? As the aspect ratio grows the effective horizontal FOV grows and the effect vertical FOV shrinks! Effective horizontal FOV actually grows and gets closer and closer to 75degs as the aspect ratio goes towards infinity. At the same time, the effective vertical FOV will get closer and closer to zero.
I am of the belief that everyone, players and devs alike, actually think in terms of a fixed vertical FOV. Meaning that as the aspect ratio grows, what you see vertically does not change at all, but you get to see more and more horizontally. This is effectively what players have described wanting for so long, they want a way to see more horizontally because they have wide screen monitors.
For that reason, we decided to change our calculations from a diagonal FOV to a vertical FOV. This is more in-line with what everyone thinks, those with 16:10 aspect ratio will get approximately 10degs more FOV for free. If you have a wider or more extreme FOV (triple monitor folks, I am looking at you), you will get to see even more, for free!
Making this change isn’t as simple as flipping a switch, there is a lot of implications with increasing the amount of stuff you can see; the biggest concern is performance. Because you can now see more stuff on screen, that means that more stuff is being drawn to the screen and more things are animating. On lower end machines this can have a noticeable impact which we felt was unfair and unacceptable. Not long ago, we started a trial of the vertical FOV to find out what players think and if it was worth going through with the change. The trial left us with a good impression and enough information that we decided to make it a permanent change. We still had the problem to face of performance, some lower end machine will still not be able to handle seeing more stuff, and we believe while we continue to optimize the game we can “buy back” this loss.
Since players will be affected by this immediately, we offer a different command-line option to revert to using the old diagonal FOV calculation. By adding “-useOldFOV” to your game shortcut, the game will act the same as it did before and remove any additional performance hits that we might have introduced.
I hope this clears some things up for you all.