General Category > AVWW Brainstorming
Brainstorming: Curtailing Infinite World Folder Size Growth
x4000:
--- Quote from: TNSe on December 01, 2011, 11:38:47 am ---Considering everything is procedurally generated, isn't it enough to save the seed and the relative state of objects compared to the seed? (Thus regenerating this if it is lacking).
Kinda like storing the delta from original seed to current state. (Or did I read something wrong)
--- End quote ---
That only works if you never upgrade the game at all. As soon as there's a new version and anything new that could go in that region, the from-seed-only model breaks down. As I noted above, there's actually more than a bit that we DO reconstruct from seeds only, but it's the only stuff that is safe to do so.
TNSe:
I see, there are some solutions to that too, but sadly they would at one time or another end up limiting you.
x4000:
--- Quote from: TNSe on December 01, 2011, 11:57:39 am ---I see, there are some solutions to that too, but sadly they would at one time or another end up limiting you.
--- End quote ---
Yep, or costing more data -- or, worse, dev time -- to store them in order to try to solve them. Also, I didn't mention the fact that players can add 9or delete) their own custom content in terms of the xml population files and the room map templates and all that. Just changing those things around changes how the seeding happens in pretty major ways, so if that's not baked in then you'd see massive swings every time it tried to recreate that stuff.
Hearteater:
I think you've probably hit the best solution for world size on disk by removing older sections either through in-game cataclysms and/or by just purging detailed data of boring old chunks.
For in memory, is there a reason you need every player to have all the same stuff in memory? Especially if they are on different continents. It seems like the ability to affect each other is very very low and so they don't really need to have all that in memory. They only need to pass up changes that need to happen. I'm guessing you keep the sections in memory so you can apply those changes, but you don't have to do that immediately. You can store all the changes made (in RAM and/or disk) and processes them as RAM permits.
For example, say 20 people are playing on different continents, but I only have the RAM to hold 10 continents at once. As changes come in for continents I don't have in memory, I set them aside (possibly to disk) for later handling. Periodically the game drops one of the 10 continents in memory (not the one my player is in) and loads one of the other continents with a lot of changes pending and processes those. Basically this is manual memory paging, and not ideal, but at least it scales on disk space instead of RAM and more importantly the heap limit.
For settlement trading, could you pull the settles out as a separate block of data with a much smaller footprint than the continent so you can always interact with all settlements because they are all in memory?
x4000:
Hearteater: A lot of that gets kind of tricky as the game evolves. You wind up later with "oh crap, no settlement trading is possible because of the way we're managing RAM" type situations. Or "sorry, can't migrate NPCs between continents!" Or whatever else. Such as, taking a boat ride as discussed on the continents thread would be impossible, it would have to just warp you between continents because trying to stream in all the continents belatedly (only to drop them once you arrive) would make boat rides incredibly painful to initiate.
Plus, if we ever do point to point warps that cross continents. Or a whole other mess of things. It winds up being something that impacts the design of the whole game, usually in a negative way, on an ongoing basis. When instead it really should be a little more freeform, ideally. RAM management techniques should just kind of fade into the background. Which works with the ones we currently have, because we keep the broad metadata that we might need in a central place, such that you really don't have to have any of the other region data until you physically go there. But in terms of making metadata about the metadata, or heavily segmenting the metadata... well, it really makes it a lot less of one world, and more a collection of smaller isolated worlds, if that makes sense.
Which is what we were considering doing, but once I did the math I started thinking that wasn't even needed, essentially. Plus, players with enormous worlds have already complained some in terms of having trouble just remembering where everything is. In the early alpha, c4sc4 racked up a world that had something like 12,000 regions in it two months ago. And he's still playing on that world, but it's just incredibly too vast in a negative way I think. If you're trying to mentally keep track of 10 continents and what is going on on each of them, I think that's really quite a lot to go with, even in the late game. Closer to 5 would seem to be an ideal number, and matching what you see with a lot of JRPGs in particular, it seems.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version