• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Why can't smaller size games load their entire content into RAM to eliminate loads?

One of the most amazing features of Ridge Racer on the playstation one at launch was how it would load the whole game's assets into RAM, meaning you could eject the disc and put in whatever music you wanted while playing the game.

With the XB1/PS4 the consoles probably have around 5-6GB of RAM available for applications to use, with the rest reserved for the OS.

For a lower graphic fidelity game what would prevent a technically savvy developer from loading that content into RAM and avoiding load times altogether?

Speed of data transfer from the hard drive to the RAM might be an issue, but SSD support and speeds might help with that?

I think it'd be pretty awesome if a game like Street Fighter 5 could be compressed down with a minimal background stage element and allow for no loading times between online matches. Maybe you would have to sacrifice some graphical fidelity but the time savings would be amazing.

Vanilla Street Fighter 4 on XBox 360 installed at 4.6GB, and even a game like skyrim was installed at 3.8gb.

If the full game content isn't an option couldn't a "online assets" pack be installed into RAM and allow for instant loading access for online play? The 16 characters and the training stage with audio couldn't take up more than 4-5gb, surely.
 

LewieP

Member
I've always thought that the likes of Deus Ex and Half-Life should be able to load multiple areas on modern systems, to entirely remove load screens.

I have no idea what the technical challenges involved would be.
 

Htown

STOP SHITTING ON MY MOTHER'S HEADSTONE
I don't think you have a handle on how big most games are now. Outside of the occasional indie game or perhaps something procedurally generated like No Man's Sky (though maybe even its assets make the game huge, who knows), no entire game's data is going to fit in 6 GB of memory.
 

nynt9

Member
"Installed into RAM" hahahaha what?

RAM is volatile memory, aka everything in RAM is wiped when you turn off the device. Also just because a game's install size is small doesn't mean it uses a small amount of RAM. For example, you can have a barebones games with the only asset in it being an NPC. That would make for a very small game size. But if you have 10,000 instances of that NPC you will use a lot of RAM.
 

Jebusman

Banned
What was the last commercial (console) game released that actually allowed for something like this?

Animal Crossing?

And that only worked because it was pretty much an N64 game running on a Gamecube.

You would think if it was technically possible (or at least allowed by Microsoft/Sony/Nintendo), a developer would have done so already. Given they haven't, then I'd wager it probably isn't as easy as you'd think.

"Installed into RAM" hahahaha what?

RAM is volatile memory, aka everything in RAM is wiped when you turn off the device.

I think he gets that. He's asking why games can't just copy wholesale into RAM during boot (essentially as a first "big" loading screen), thus allowing for much faster, if not instantaneous loads later on since they no longer need to go to the HDD/SSD.

I don't think this would be entirely impossible for games that clock in at very low file sizes (think sub 250MB, or less), and ones that don't rely on generating a huge amount of variable content (that would just eat up ram). But at that point they are likely already optimized to the point that the majority of the usable assets already reside in RAM, and you're not really going to get much more by copying the rest of it.
 

Costia

Member
Because the size of the files on the HDD is not the same as their size in RAM due to compression.
On the HDD the dev can use whatever compression methods he wants to reduce the file size. In RAM, where the assets need to be used in realtime by the CPU/GPU they have to be decompressed or use a very specific set of compression algorithms, which can cause quality loss, and it's up to the dev if he wants to use those.
Additionally there is procedurally generated content, that takes almost no space on the HDD, but eat up your RAM very fast. Take a look at 64K demos.

TLDR: the file size on the HDD is different from the amount of RAM it requires when loaded.
 

LostDonkey

Member
I think you're overestimating how much ram these systems have left over.

Let's say 5-6 left over as you say after os usage, at least 2-3 of that is being used as Vram isn't it? What with PS4 being GDDR, I'm not sure about XB1.

That only leaves 2gb of free ram. It's not a lot in todays terms.
 

PantsuJo

Member
I remember RAMDisk software were a solution for reducing loading time but SSD disks seems to have solved a lot of problems today.
 

FyreWulff

Member
I've always thought that the likes of Deus Ex and Half-Life should be able to load multiple areas on modern systems, to entirely remove load screens.

I have no idea what the technical challenges involved would be.

Engines generally don't do this for various reasons, including how the engine scripting/etc works.

For classic games, what would generally work is creating a RAMDISK and loading the game into that. However, you're still bottlenecked by the hard drive for the initial load of the RAMDISK.

Animal Crossing on the GameCube did this, but it also had the advantage of being basically a straight port of an N64 game, and a smaller N64 game at that. GameCube didn't even have the RAM to load up Majora all at once.
 
I remember RAMDisk software were a solution for reducing loading time but SSD disks seems to have solved a lot of problems today.

Some games still have huge boosts from it.

I know Path of Exile is known to load enemies that pop out of boxes pretty horribly so loading the game with ramdisk cuts down on the pauses.
 
As someone with 32GB of RAM in my PC I'd certainly like to see developers put it to more use. Unused RAM is wasted RAM. Sometimes I've debated setting up a RAMdrive, but I'd make it like 16GB and I don't know what I'd put on it.
 

Costia

Member
As someone with 32GB of RAM in my PC I'd certainly like to see developers put it to more use. Unused RAM is wasted RAM. Sometimes I've debated setting up a RAMdrive, but I'd make it like 16GB and I don't know what I'd put on it.
It's not unused. The OS uses it for caching.

I have 16GB:
QfPZ71i.png
Only the green part is "used". All the blue section is "unused RAM" that the OS uses for it's own purposes (caching). Only the light blue is actually unused.
 

LewieP

Member
Engines generally don't do this for various reasons, including how the engine scripting/etc works.

For classic games, what would generally work is creating a RAMDISK and loading the game into that. However, you're still bottlenecked by the hard drive for the initial load of the RAMDISK.

Animal Crossing on the GameCube did this, but it also had the advantage of being basically a straight port of an N64 game, and a smaller N64 game at that. GameCube didn't even have the RAM to load up Majora all at once.

Yeah, I guess I meant via either the game originally being designed to do this when it had access to (at the time) crazy amounts of ram, or via some kind of mod changing how the loading system works.
 

Durante

Member
There are some practical difficulties, but really, especially during the tail end of a gen when a PC might have 8x or more the amount of memory of a console, it's also the case that developers simply don't use all that memory as well as they could.

This problem was exacerbated by the 32 bit address limit on most last-gen games, at least that is gone now.
 

Glix

Member
"Installed into RAM" hahahaha what?

RAM is volatile memory, aka everything in RAM is wiped when you turn off the device. Also just because a game's install size is small doesn't mean it uses a small amount of RAM. For example, you can have a barebones games with the only asset in it being an NPC. That would make for a very small game size. But if you have 10,000 instances of that NPC you will use a lot of RAM.

You're laughing at him but you have no idea what he is actually talking about.

And just, yaknow, while we are laughing at people.... 1000 of the same exact npc with the same exact assests would not use much more memory, they even implemented that ages ago in UE3

I wish a game like galakz had better loading that is for sure.
 

Jebusman

Banned
Some games still have huge boosts from it.

I know Path of Exile is known to load enemies that pop out of boxes pretty horribly so loading the game with ramdisk cuts down on the pauses.

Path of Exile actually in a way already sort of does this by itself. It's why it has such a massive (for people without SSDs) first load. It's preloading a hell of a lot of stuff to ensure it doesn't have to later.

The problem is that it's still a 32-bit app, so it very quickly hits up against the 2GB app limit doing all this preloading, and then is forced to start swapping it in and out.

Having a RAMDisk would seemingly fix this (since swapping entirely within RAM would be as fast as it gets), but a 64bit version where they could actually preload past that 2GB mark would allow them to just expand their preload solution.
 

Glix

Member
Path of Exile actually in a way already sort of does this by itself. It's why it has such a massive (for people without SSDs) first load. It's preloading a hell of a lot of stuff to ensure it doesn't have to later.

The problem is that it's still a 32-bit app, so it very quickly hits up against the 2GB app limit doing all this preloading, and then is forced to start swapping it in and out.

Having a RAMDisk would seemingly fix this (since swapping entirely within RAM would be as fast as it gets), but a 64bit version where they could actually preload past that 2GB mark would allow them to just expand their preload solution.

But but i dont understand?

What about all the experts in this very thread saying that modern games cant do this and the op doesnt understand how ram works?

;-)
 

low-G

Member
Why don't game developers simply load all variables into memory and track all of em all the time, never cleaning them, only updating them?

Also they should do this all in assembly.
 

Celcius

°Temp. member
At the beginning of Grand Theft Auto games, why do they take so long to load initially compared to other games? Where are they loading the information into?
 

Jebusman

Banned
But but i dont understand?

What about all the experts in this very thread saying that modern games cant do this and the op doesnt understand how ram works?

;-)

Realistically I'd imagine Path of Exile would eat up more RAM than would be available to developers on a PS4/XBONE if it were allowed to, so it's not like it's a slam dunk "SEE IT'S POSSIBLE".

It's just the answer isn't a hard "ALL GAMES SHOULD" or "LOL NO GAME CAN DO THAT".

Although I do submit that it should be possible on the PC no matter what (given you have ridiculous amounts of RAM), but developers likely do not want to spend the extra time getting that to work compared to just optimizing the best they can.
 

Costia

Member
"Installed into RAM" hahahaha what?
RAM is volatile memory, aka everything in RAM is wiped when you turn off the device.
...
That's why stand-by mode exists. So you could do that in between hard resets/power off.
The OS probably already does that (doesn't unload recently used data), but maybe not aggressively enough.
 

Glix

Member
Realistically I'd imagine Path of Exile would eat up more RAM than would be available to developers on a PS4/XBONE if it were allowed to, so it's not like it's a slam dunk "SEE IT'S POSSIBLE".

It's just the answer isn't a hard "ALL GAMES SHOULD" or "LOL NO GAME CAN DO THAT".

Agreed.

Hence why the op specified smaller games. While i have no idea if actually possible id love to see it with galakz a game that does not have seemingly massive asset burdens and the load before every episode is pretty gnarly.

Maybe evolve could pre load some maps? The wait between matches is scarier than the monsters
 

UnrealEck

Member
They can. The reason they don't is probably due to such a wide variation of system specifications so it's simpler to just load what's necessary.
 

Fafalada

Fafracer forever
Pray For Death said:
I believe there's a lot more to loading a level than simply placing the assets in RAM
While that's true - most moddern middleware in use is very poor with data-handling and does more work than it should be doing when placing assets into ram and other associated house-keeping.

Of course all of the above is mostly a result of this being considered a non-issue. Games with 30-60second loads are considered standard practice and sell 10s of millions copies. Ie. market isn't responding like it's broken, so why spend any effort fixing it?
 
Thanks for all the technical insight in this thread.

It sounds like you could only do it with a very small amount of assets.

Pretty impressive that Namco did it on a launch game arcade port of one of the best looking games of its time.
 

beril

Member
Some games do that. In Gunman Clive 1 I load all textures and sounds at bootup and I never remove models from memory once they're loaded.
 
Doesn't Max Payne 3 have an option like this? The system requirements said it could support systems that contained up to 32gb (?) of RAM in order to cache stuff ahead of time

And that was four years ago, when 32gb of RAM was basically unheard of outside of render farms
 
Hence why the op specified smaller games. While i have no idea if actually possible id love to see it with galakz a game that does not have seemingly massive asset burdens and the load before every episode is pretty gnarly.

...What's the point?

Loading all the stuff still takes time. So you'd rather wait two minutes for the game loading everything at once, rather than load the actual level you're going to play, very quickly?

It simply much better to have fast load times, but scattered around as needed, than a massive one that happens once.
 

Maxey

Member
Doesn't Max Payne 3 have an option like this? The system requirements said it could support systems that contained up to 32gb (?) of RAM in order to cache stuff ahead of time

And that was four years ago, when 32gb of RAM was basically unheard of outside of render farms

And yet, I bet it still wouldn't let you just skip the cutscenes.
 

Blizzard

Banned
I thought I'd heard The Witness entirely loaded into RAM, thus why it would use 5GB of it.

However, I do not know if that's true.
 

Akai__

Member
I think I saw it with only 1 game so far and thats the N64 Animal Crossing port on N64.

The guy pulled it off at a speedrun event, I believe.
 

balohna

Member
I thought I'd heard The Witness entirely loaded into RAM, thus why it would use 5GB of it.

However, I do not know if that's true.
That would make sense given the entire world is open to you at all times. There could be some creative streaming, but it almost wouldn't seem worth it.
 

Somnid

Member
It's doable but I think many smaller devs aren't getting into that level of optimization especially if it runs on multiple device with variable RAM pool sizes. Also, I feel most engines generally aren't designed to do this.
 

FyreWulff

Member
I think I saw it with only 1 game so far and thats the N64 Animal Crossing port on N64.

The guy pulled it off at a speedrun event, I believe.

Technically, Halo 3 and Reach do this to a point on 360 Core systems. Once the map is loaded everything is in RAM. Having a hard drive basically only makes so you have better sound quality (variety of SFX).

This is why Halo 3 didn't have all weapons on every map, because they had to all exist in RAM at the same time.
 
Guys... WHY?

Let's say a game has 30 levels. Why would you want waiting for the game five minutes to boot up while loading ALL levels, when the last level you won't likely reach for a week or more?

Why shouldn't the game load quickly just the chunk you need to play instead of ALL of it with a HUGE massive load time?

Even if it was possible, you'd rather wait one minute to load a thing in Bloodborne, or wait HALF AN HOUR to wait it to load everything in one go?
 

Orbis

Member
Guys... WHY?

Let's say a game has 30 levels. Why would you want waiting for the game five minutes to boot up while loading ALL levels, when the last level you won't likely reach for a week or more?

Why shouldn't the game load quickly just the chunk you need to play instead of ALL of it with a HUGE massive load time?

Even if it was possible, you'd rather wait one minute to load a thing in Bloodborne, or wait HALF AN HOUR to wait it to load everything in one go?
Well OP specifically says smaller games EDIT: I see he mentions things that aren't so small, so your point is valid :p. But yes there are far better ways of doing things. You can load data into RAM when its use is anticipated, for example loading level 2 while level 1 is being played. In more resource heavy games you would narrow this down to loading room 3 while you're in room 1 of the level. That's a massive oversimplification of course.

Generally there is absolutely no point in storing everything in RAM for the entire duration of the game; if you know that certain content will not be needed immediately it shouldn't be there. It's usually a waste of space.

The most obvious thing to consider though is that you can't assume that just because a game is 4GB on disk, that in memory it will never use much more than that. You can write a few lines of code that could generate 50GB of useful data in memory. Or in theory an infinite amount. At the same time another 4GB game might only ever consume 100MB in RAM at any given time, and in theory could be kept in memory, but again, that's probably pointless unless all 4GB could be needed immediately at any given time, and near instant loading is required.
 

Pokemaniac

Member
Some smaller games use techniques like this. It's really not as easy todoas it sounds, though, particularly on consoles. RAM is there for more than just storing assets, so doing this could potentially hamstring your game pretty bad if you don't leave enough space for your code to run in.
 

Costia

Member
...What's the point?

Loading all the stuff still takes time. So you'd rather wait two minutes for the game loading everything at once, rather than load the actual level you're going to play, very quickly?

It simply much better to have fast load times, but scattered around as needed, than a massive one that happens once.
The point would be to load in the background.
So instead of:
load level 1(player waits)->player plays->load level 2(player waits)->player plays->etc..
you will have:
load level 1(player waits)->player plays +load level 2->player plays level 2 (no waiting)->etc..
Open world games do that type of thing, to the point that there aren't even visible "levels" to the player.
 
Top Bottom