Game Lies - Playercentrism
In real life you can generally expect the world to exist beyond your perception. Things happen elsewhere even if you only hear about them later or never hear about them at all. You can also generally expect the chair behind you to exist too, even though you can't see it (also - posture check!). The funny thing about game worlds is that, unlike real life, they basically only exist around the player, though they may try hard to convince you otherwise.
This is quite dystopian - why is Big Gamedev trying to pull the wool over our eyes!? Fear not, Big Gamedev is (mostly) a benevolent entity and does this for the good of the games. Why then do games only simulate around the player, in what ways do they do so, and how can you as a developer use this understanding to your advantage?
What do you mean, 'games only exist around the player'?
There are several degrees to which games center around the player. From small to large scale, they fall into these categories:
- Screen resolution
- Screen culling
- Proximity
- Reachability
Screen resolution
These days the details of most things you see in games depends on how much of the screen they take up. Modern game engines take care of this through LoDs and MIPs, which scale the resolutions of meshes and textures respectively based on how much screen space the offending asset takes up on screen.
This means that, though a brick wall in a game might appear to be jagged, cracked, and porous when you press your character's eyeballs up to it, when you back up and can't see those details it's not just that they're too small to see at that distance - they're also literally not there. A lower resolution version of the wall mesh/texture exists instead (and at some imperceptible point as you were walking away, this resolution swap happened).
I've also noticed foliage gets completely obliterated in some games once you're far enough away - presumably after being down-resolution'd enough times.
This also happens in Minecraft, where the game has a certain 'render distance' which it will not render objects past.
Screen culling
Things in games also aren't visible at all unless you're looking at them. This doesn't sound like much of a problem but it has some interesting consequences.
When rendering a frame of gameplay, culling is one of the earliest steps. Culling involves figuring out what the player can see, and discarding from rendering things that the player can't see. Common types of culling inlcude frustum culling (discarding anything outside the camera frame), occlusion culling (discarding anything hidden behind another object), and backface culling (discarding geometry on the opposite side of objects).
All of this culling means that the chair which may behind your character is not just not-being-looked-at, it's actually not visible at all! At least until the character turns around and visibility for the chair is calculated.
A consequence of this is that reflections become difficult. A chair which is not being looked at, and thus is invisible, can't be seen in a reflection! And thus there are lots of strange and limited workarounds for reflections.
Proximity
Besides what may or may not exist based on the player's vision, there are also many game phenomena that change based on proximity to the player.
Some things get activated/deactivated as the character approaches/leaves them (AI, physics)
Some things only load when the character is within the same loading zone (geo which will only be considered for rendering/collisions, various game entities)
Some things exist in entirely different scenes from the player, and are only loaded when a boundary is met that causes all things in the previous scene to unload and everything in the new scene to load.
Reachability
Not only does the game world only exist around the player where they currently exist, it also can only ever exist in areas that the player can reach. Though the map of Hyrule may show a lake in the mountains, if there's no path for Link to get there then the lake doesn't exist.
During the process of packaging a game, that is producing the intended playable version of a game from the editable game engine version, developers choose what does and doesn't enter the packaged game. Maybe that lake in the mountains was created and does exist, but when developers decided to remove the mountain trail leading to it, the packaged game no longer needed to have the now-unreachable lake and thus it was not included - and is not even in the same universe as the player character.
Even outside the process of packaging the game, only the ideas and phenomena that developers want to be present in the game end up as reachable by the player character. Art of a character may show a notebook under their arm, but if that notebook only exists in the art then its writings are unreachable to the player whether one of the developers actually planned the contents of that notebook or not.
Ambience may contain water drop SFX despite no dripping water being found in the scene (funger ost), and a forest zone might imply an ecosystem which is never actually simulated.
Every game draws its boundaries, and thus what exists for the player, in different ways.
But why would they lie to us?
It's likely no surprise to you that the game world only simulates around the player for optimization reasons - to reduce work for various computer components. The less things simulated = less work for the computer, and the less things included in the packaged game = less memory taken up.
It's not like Big Gamedev wants to lie to us. Games would love to be able to simulate everything, but unfortunately they can't (or maybe they could, very very slowly).
So, sadly, game developers are incentivized to only build and simulate the world around the player even if they imagine something grander and realer than the final game.
Understanding that only what the player perceives needs to exist can help with game optimization. Modern game engines generally do screen resolution and culling automatically, but when it comes to loading/unloading things it's largely up to you as a developer to decide when it's best to do those things.
Ofc when you are optimizing though it is important to remember that your end goal is reducing the burden on computer parts - some things have little performance impact and don't need to be culled and unloaded perfectly, and so it's fine if some things exist out of the player's perception.
What if the game world did exist without the player?
One of my favorite things to do when discovering a trend is to consider what it might be like to go against it. In this case, what might a game which meaningfully exists outside of the player's presence look like?
This is a fun thought experiment that's been applied to games like Minecraft and can lead to very interesting results.
While it's useless to render things that are not on screen, some games do simulate phenomena regardless of the player's presence in ways that make their worlds feel more tangible and less like simulacra.
Some games have Time Cycles that progress independent of the player's existence. Some Nintendo games like Pokemon and Animal Crossing sync up their in-game time of day to the player's time of day, and my game Lustrous Spirit has a 15 minute day cycle that progresses even when the game is closed. This makes the game world feel like something that exists in parallel with the real world. Other games have time cycles involving seasons that progress independent of PC?
Some games have their time cycles synced up to real-life time, whereas others have time cycles as part of the game loop. Games like Hitman and Outer Wilds, depend on predictable cycles of events happening in real time regardless of whether the player is observing them or not. Targets in Hitman will walk from room to room and talk with other NPCs even if the player is across the level and behind several walls. The planets in outer wilds will orbit the sun and perform their environmental phenomena (such as brittle hollow's collapsing) even if the player is exploring in an entirely different area.
Branching or time-limited story events could also be considered phenomena that exist outside of the player's existence, for example a player's decision to date one character souring their relationship with another. Unlike rendering or the simulation of agents though, there is not a continuous process being simulated without the player's knowledge - it's a one time running of code that appears to affect the status of another character. Dialogue with the soured character may imply the passing of time and a thought process that the character went though, but all of that process happened in the narrative designer's head and is baked just baked into the dialogue - there is no hidden simulation of characters' brains as the player character makes dialogue choices.
Of course, there are multiplayer games too whose realms exist even when one of the players leaves - but multiplayer and other server-based game worlds are a bit out of scope of this post. Things like daily rewards do exist on a real-life timescale rather than a game timescale, but I find that rather than making the game world feel more real they make it feel faker. "This game's existence depends on arbitrary real-world phenomena" vs "this game exists in parallel with the real world".
Game spaces to explore without player involvement
The only reasons to simulate a world without a player's presence are to simulate phenomena that would change the world when the player revisits a certain part of it. This begs the question, what phenomena might we simulate that could change the player's experience in interesting ways? We've already discussed simulating AI and environmental phenomena, but what else?
Secret alternate PoVs
It's very hard to justify rendering any kind of visuals when the player isn't around, because rendering is an expensive and instantaneous process. No point in calculating visuals if there's no one there to see them right?
One interesting case for rendering unseen visuals is to show them to the player at a later time. We're not talking about pre-rendered cutscenes, but actually taking pictures of the game world, potentially featuring the player, from a perspective different than the player's. Similar to the replay systems you see in some online multiplayer game (although these systems literally re-simulate the game), but it could apply to singleplayer games too.
For example the player could enter a photobooth, take a picture, and then wait a few seconds for it to 'print' out before they can see the result - which would be a picture from the photobooth camera's perspective.
Showing pictures of the player doing something after they've done it could be great for giving the feeling of being watched...
I can also imagine a horror game where the player is a monster escaping from a facility full of armed guards, going on a rampage etc etc as the player's heightened senses make everything else seem like slow motion. Then, once the player has completed a level, they can see the fuzzy security cam footage of their escape in 'real time' - cam footage which was secretly being recorded during the player's rampage.
The best way to implement this would probably be to record the game state as it happened and then re-simulate it rather than actually saving gameplay to a video as it happens, but it would give the illusion of an unseen perspective.
AI doing stuff while you're elsewhere
Hitman is one example of a game where NPCs do things while you're not watching, but perhaps the strongest example of AI doing things outside the player's purview is in strategy games.
Real time strategy games like Starcraft and Age of Empires feature a fog of war which prevents the player from seeing what the enemy is doing, even though there is a complete AI simulation behind the fog - the AI villagers are harvesting food, AI military units being summoned and maneuvering in the shadows, the exact nature of these maneuvers only revealed when the player gains vision of them.
Some turn based strategy games like Crusader Kings and Europa Universalis even simulate the AI of nations that the player will never directly interact with. "One might play as a British empire and just stay in the British Isles for the entire game even though things are constantly happening in Africa too" - my friend who knows more about these games.
Physics simulating while you're elsewhere
Game worlds in parallel with the real world
As discussed before some games feature time cycles, which might even progress when the game isn't running like in the case of Animal Crossing or Lustrous Spirit (and Nintendogs?). This implies the game world goes on existing regardless of the player character's existence, a world parallel to the real one.
Any effect that intends to simulate based on real time runs into the issue of recalculating the sim after the player has been gone for a while. When booted up, the game needs to instantly know what the state of the world is so that the player can play the game without waiting, so any real-time-dependent effect should be deterministic. A deterministic simulation like a day cycle can easily be calculated by taking the difference in time since the game was last booted up, whereas a non-deterministic physics simulation of say, two boxes colliding, needs to proceed tick by tick in order to calculate where those boxes will end up after coming to a rest.
Understanding that the game world only exists for the player plays well into power fantasies. It makes sense why so many of those isekai anime reincarnate their protagonists into game worlds - the player character is basically god!
Links:
https://github.com/wangshucheng/Unity-Game-Optimization-3-/blob/main/Unity%20Game%20Optimization%20-%20Third%20Edition.pdf
whats the throughline?
Thanks for reading! If you have any questions or comments, email me or message on discord - andrewdunne.gamedev@gmail.com | @oatvercast (discord).
Thanks to ambiguousname for discussion on these ideas