At the most basic level, FPS gameplay is the interplay of line-of-sight, movement, facing, cover, and timing between a player that can shoot what they see, and at least one opposing entity that can shoot back. Let me illustrate a little bit.
Line of Sight
Can I see my enemy? And can they see me? We can’t shoot at each other until we can see them! You have line-of-sight on a target when they are within your cone of vision.

Movement:
As you and your enemy move, your respective cones of vision change, potentially bringing each other into line-of-sight.

Facing:
Of course, whether your enemy is in your cone-of-vision is dependent on more than just location: your facing matters, too (and field of view, but we won’t get into that here).
This means that line-of-sight is not always mutual.

You’re starting to see the beginnings of some gameplay here: risk & reward and asymmetrical outcomes are present. But it’s not enough yet!
Cover:
Let’s shift arenas to something a little more interesting! Irregularly shaped spaces offer more complex line-of-sight gameplay, but fundamentally it’s still pretty similar.

So let’s add the thing that really gets us there.
Parallax and Foreshortening:
What makes this all work, and brings these FPS fundamentals from a very basic game of cat-and-mouse to a genre that spawned ten thousand games, is when we lean into foreshortening and parallax effects.
Foreshortening is the effect where things look smaller at greater distances. Parallax has a complicated definition, but we can think of it as the idea that as we move left or right, things that are further away seem to scroll left or right more slowly than things that are close up. As a result, the relationship between different pieces of cover at different distances changes as you move left or right.
Wikipedia has this excellent animation by Nathaniel Domek that illustrates parallax effects:

To make use of these in FPS gameplay, we need:
- Cover at different distances
- The ability to move behind cover to break line of sight, and then emerge from 2 or more potential spots (which is why the little dead end cover examples in my image above are insufficient).
- You and your enemy strafing or moving horizontally at a distance from each other, with multiple pieces of cover between you.
You can see in the images below that with the simple addition of a few pieces of cover and some simple strafing behaviors, the complexity of the spatial relationships and line-of-sight grew tremendously.


One of the important things this brings to the table is unpredictability of enemy movement. If they can break line of sight by going behind a piece of cover, and then re-emerge from more than one potential spot, then suddenly we’re asking the player to mentally trace and predict a much more complicated set of options. This is good!

This degree of complexity is the floor of what is required for FPS gameplay. If you take away any of the elements in the diagram above (other than reducing the # of cover pieces on each side, which you could get away with), then you no longer have the push-and-pull of FPS play.
Push & Pull
Masahiro Sakurai, of Kirby and Super Smash Bros. fame, has said that “Game essence is the fun of managing risks and getting rewards”. He has spoken many times about how an element of taking on risk to get “rewards”(success) is really the core of all gameplay. He talks about this in detail in this excellent Masahiro Sakurai on Creating Games video, which I highly suggest everyone watch. He also calls this the “push & pull” of a game, a phrase I like a bit better because it gets away from the loaded “reward” term.
I’m not sure if I believe it’s the fundamental essence of all gameplay like he does, but I certainly think that’s true for FPS gameplay. Fundamentally, what players are doing in scenarios like that last one above is rapidly evaluating and managing the risk of being seen and therefore shot, vs the reward of seeing and shooting the enemy. The addition of the parallax effects changes it from a simple problem of timing to a much more complicated problem of positioning, facing, timing, and introduces the possibilities of mind games and unpredictable tactics.
Less-Fundamental Elements
Of course, the examples above are still very simple! A modern FPS with players who are experienced in the genre has far more going on. You’ll be fighting multiple enemies, with different capabilities and stats. Cover won’t be on a neat grid, and will be different sizes and shapes. You’ll have guns with different ranges, firing rates, clip sizes, projectile speed, and reload times. Level layouts will have verticality, gaps, traps, and resources. You may have special abilities. Some enemies may be melee.
Every one of these elements adds an additional dimension for players to consider. It’s pretty easy to overwhelm! There is an enormous gap between what inexperienced and experienced FPS players can mentally model and predict–and between how much complexity they need to enjoy the challenge of it.
I hope this quick overview was helpful!