By using this site, you agree to our Privacy Policy and our Terms of Use. Close

@Permalite Procedural generation can be used to save memory, but more so on disk since you still need all that procedurally generated stuff in memory. The simplest way for CPU to help RAM is to keep all data compressed in memory. For textures that's done by the GPU nowadays, yet world data can also be kept compressed and decoded on the fly. That's what we did when I still worked in GPS navigation. All the map data was compressed to the max with hash tables for random access, loading in chunks at a time to decode while searching or rendering the map. All with efficient memory use, storing everything in RAM with as few bits as necessary. More work for the CPU to decode and encode all the time, yet RAM was the bottleneck. For games, think of Minecraft data all being compressed in memory to allow for bigger worlds.

And the other way around RAM can help the CPU by keeping more stuff around and pre-loading / preparing stuff when time left over. So for procedural generation, more RAM allows you to work ahead, buffering basically. Thus when the user decides to sprint ahead, you already have it available. Culling is great for rendering, but as FS2020 showed, actually throwing away the data from memory is problematic when you look around. It's fine if you stare straight ahead all the time, yet for example in VR you can't purge the world behind the user as you can look around at any time. (Well you can in most games)

And yep SSD and direct to video ram loading helps. I still found using a ram disk for cache faster than SSD, but just leaving it in RAM (turning off the aggressive culling in FS2020, which they mistakingly named pre-chaching, works the best obviously. It's more post-caching if you leave the stuff behind in ram until it's out of range. Anyway just means do do double work in the end)

More RAM also makes development easier and faster. Optimization is hard work and easy to introduce hard to trace bugs. Pointer arithmetic for example is great way to optimize code and reduce memory use, but so easy to introduce hard to find fatal errors.