I am a first timer here on the forums, long time visitor. I don't know if this is the appropriate place the post this question, but it is the 'console development' arena.
My question is:
I am developing a game for Xbox 360, and I plan on having large open terrain and building that you can go into. It's much of a sandbox environment, and very interactive. In any case, I was wondering if loading the entire environment onto the hard drive and then streaming it would be faster than going and accessing the disk when we want to render certain areas of the environment? Also kind of a follow up question that I just thought of: would loading pieces of the environment that are closest to the player/camera into RAM be faster than the hard drive and/or the disk option?
I appreciate the help in advance, I plan on being active on these forums, but I also would like to know if I am posting in the correct forum area.
The hard drive is faster than DVD by maybe 5-10x, and RAM is ~100x faster than that again (I don't have the exact numbers, but 5MB/s, 50MB/s, and 5GB/s aren't unrealistic).
These are ideal numbers, and you're not likely to get those without planning ahead. Also, obviously, the GPU and CPU can't use stuff that's not in RAM, so it's got to get there at some point.
I think you should look at trying to get data that gets used a lot into RAM first and keep it there and, if you need to, stream in the unique bits. Streaming from hard drive will make your life a little easier because it's faster, but maybe not as much as you'd think. If you make sure your scene draw works with assets that aren't ready yet it'll be even easier.
The general rule is if you plan for streaming up front, it'll be a lot easier than trying to add it later.
There are a few good papers on streaming and disk IO on the xbox360 dev site.
Well chances are if your asking this then you don't have the required licenses to be making games on disks anyway, you can only use XNA and XBLIG so your limited to the harddrive and RAM. Take a look at map chunking. Minecraft for example saves the map as a series of smaller chunks each being 16 blocks by 16 blocks. It might load a circle of chunks with radius of 15 (chunks) into RAM from the hard drive and render them, when you walk away they get unloaded from RAM and new ones loaded in.
And the numbers above are pretty realistic, RAM is amazingly fast, multiple gigabits per second. HDD access on a 360 I believe sits around the 25 megabit per second mark in real world usage I believe (can't remember where I saw the data on it though), theoretical max is around 100 megabits. The xboxes DVD drive is even slower than that and is read only so seeming as you won't have the equipment to make xbox valid disks (regular DVD's from your PC cannot run in the xbox.unless the xbox is hacked which I don't think is open to discussion here) it will be off limits and you can completely ignore it.
Thanks both MortenB and 6677, I appreciate the quick replies.
You guys have both answered my question completely; and just to reiterate so that I understand:
RAM is faster than HDD which is faster than Disk Drive?
MortenB, as you stated, all memory has to reach RAM at some point to be rendered, and let's theoretically say when the game is first booted up that I load all assets (that will fit, depending on HDD size) from disk to HDD. From there, would a good idea be to load any nearby assets (near to the camera) - and essential ones too - into RAM for performance?
Now, streaming the unique bits from HDD wouldn't be as fast as RAM, but would the game hiccup on this if I were to stream them while playing (i.e. not during a loading screen).
I am glad I joined, and will continue to be asking questions and answering them if possible. Thanks very much guys.