Bvenged said:
So just to clarify, BF3's player limitation is not because of the engine or so much about actual player count, but more to do with how much more work those players can create for the console to render; where 24 player-made explosions are easier to render than 64 players, especially with the vast rendering BF3 has to apply more-so than your average-joe shooter who can hide a lot of pre-rendered textures and effects behind walls?
You're kind of mixing up your terms there, like textures are usually pre-rendered already.
But yes, it's mostly a hardware limitation for why you have less players in certain games on the consoles compared to the same game on the PC. And why allowing one to rent a dedicated server for a game like BF3 is a great idea, since the game is all about large scale maps and lots of players is unfeasible for consoles in a standard client-server set up to host. Or deal with migration when the host player quits the game.
And why CliffyB was talking about how they need to drag the industry for consoles into the next generation - make sure the next gen console hardware has to be on par or better than current gen PCs to make them continue to be feasible, because PCs have been surpassing consoles for awhile now.
Bvenged said:
Also, what goes on in the elevators in ME1? Do you actually travel up to a new floor that's rendering as the previous is disassembled? or are you subtly portal-ling the player to a new room?
The former, the level is made up of "chunks" that the game loads and makes visible and unloads as you move around the level. Works for a single-player game environment, less so for a multiplayer one (noticed how the levels in ME3 MP are small and self-contained?).
There are 3 common states for the streaming levels: "Not Loaded", "Loaded" (but not visible) and "Loaded and Visible". Loaded means that the game engine will attempt to load the level off the disc/HDD in the background (and time is budgeted for worst case, so off the optical disc), but as it also has to multitask the still running game, so you need a bit of extra time. Obviously, you try to do this when the player is moving in a particular direction and load up the next sections that aren't visible yet (i.e. around the corner, up the stairs, etc.).
If the level is set to be "Loaded and Visible" and it is has not loaded yet at all - i.e. too small a duration from when it is to be loaded to when it is visible, then it creates a blocking state - it needs to pause the game until it has completed loading, as we need it to be visible. Since the level data often contains other things like triggers and collision, we kinda need that, otherwise you could fall through the level if the ground has not appeared yet. Since it halts the game, this mode usually can load faster (hence why some games kind of prefer short load screens vs. streaming it in).
So the ME1 elevators could be somewhat long, as it needed to create a large enough duration to unload and load the next sections. And in UE3 (and probably other games), unloaded levels tend to stick around in memory for a bit before being removed completely, as a just-in-case if you backtrack over the level streaming volumes and straddle two of them, to reduce strain on reading the data off the disc.
Other games use similar tricks to mask loading. Gears of War or Max Payne 3 are such games, since they are somewhat linear in level progression, they use the cinematic cutscenes to mask it and link the sections together. Try skipping some of the cinematics in Max Payne 3, you can't and a little bit of text on the corner pops up saying "STILL LOADING".