This isn’t a Subnautica problem. Playerunknown’s Battleground has the infamous bug that players can drive cars through buildings before they load. We are talking about the #1 game which is also a competitive shooter, allowing players cross obstacles without intentional cheating.
I didn’t care of that back then, because my computer is fast enough for PUBG, but Subnautica seems to be too much for it, even on middle settings. But now I gave a thought to it and realized something unbelievably retarded: in most games, the graphics engine is linked to the game engine. I can’t imagine how could anyone think it’s a good idea.
Here is how it should be:
- The game engine has a map of terrain and objects
- When the player attempts to move forward, the game engine gets this input and checks if there is something in the way or not and allows moving if it’s possible.
- Now, the player is in a new place on the map.
- If a player presses the button to interact with an object, the game engine verifies if the item is in reach and interactable and performs the interaction (for example picking up loot)
- All the above happens in the abstract map of the game
- The game engine sends this new location and/or item state to the graphics engine, that renders the picture with the new viewpoint or animates picking up the item.
The point of doing things right is that if the overly complicated and hardware-dependent graphics engine glitches or some of the millions of graphics assets are corrupted (for example one side of a box was given no texture), that could only result in buggy graphics, but not buggy gameplay. Similarly as if your monitor has a dead pixel, you don’t see graphics there, but you can still play the game. Sure, a total black screen ends the gameplay, but one side of a box being transparent and showing some kaleidoscope image won’t.
What’s happening instead – because game devs seem to be morons and slackers – is that the game has an unified engine. If the huge texture of a wall doesn’t load, the wall is not there and the engine allows the player to pass. Or, you can enter the box via the missing side and then fall down into the endless depths below the game world. Or cheating players use some glitch to hit you with a car inside a building.
The problem is further increased by the engine being licensed, so the devs of the game has no right or knowledge to fix it if its broken. If their players pass walls because the wall doesn’t load, all they can do is filing a bug report to the engine devs.
The most famous example of this disaster is Star Citizen, a game that cannot be completed because the CryEngine3 they use (d, they switched to LumberYard but it’s mostly the same) simply can’t support what they want.
The problem wouldn’t exist if there wouldn’t be “game engines”, just “graphics engines”, while the game would be running in some overly simple and abstract engine that is fully controlled by the game devs and simple enough to be not bugged. Let me give an example, a ramp in a grid world:
The black line is what the player see as terrain. The thin red line is where his head (viewpoint) appears to move as he runs up. The grey tiles are not passable by the player, the whites are. The thick red line is where his head really moves. The level designer must decide which tiles are grey and which are white. Sure, he should have a handy 3D editor where he can place a pre-made ramp that not only sets the tiles, but also sets their graphics flags that allow your legs appear to go into the forbidden 1 tile but makes them float mid-tile in 2. But if the graphics doesn’t load, or someone mis-sets the tiles and your head actually moves according the thick red line like you were climbing a staircase, or your body would just levitate over tile 1, that would be a low-priority bug instead of a game-breaking where you can cross the ramp into the bottomless underworld.
Why do they do this? Because it’s faster to publish a game with a unified engine. Bugs be damned, optimization can wait. Then they end up like PUBG where 700K+ cheaters had to be banned because the game system allows obviously wrong things like speedhacking. Or, they end up like Star Citizen, realizing that the engine simply can’t do what they want it to do.
It’s not a fate to do this way. EVE Online has a custom-build system and they can handle 1K player battles without lag. One can decide what’s the game is about and design the engine to do that thing, sacrificing the others. For example PUBG would be fully playable without caves, allowing a 2.5D tile system (where every place has one height and you can’t be below it). Subnautica could use instanced wrecks and bases which are simple solid boxes in the World and when you enter their door, you get a 1-2 s loading screen to prepare their instances. Neither would be game-breaking. Being killed by a car that flies though the walls in a top 0.1% game or getting permadeath for being stuck in a box you clearly shouldn’t get into are.