April 19 - Resolute
Hi. Kind of a small update this week because I'm doing a massive overhaul of... basically the entire underlying foundation of the game, and wouldn't you know it ripping up the foundation and changing it takes a little more than a week. I was hopeful that maybe I'd get it done, but I didn't.
Why am I doing such a thing? Well it's because I read your feedback. The feedback I get the most in reverse order, like a top 7 starting at #7 would be: a map, ability to rebind the mouse buttons, romance options, survival is too hard, night is too dark, tutorial is too vague, and #1 by a much larger margin is low fps / game crashes with an out of memory error. So, performance is the primary issue right now. I have plans and a to-do list for all these things, and the performance one involves reducing memory.
See right now when you load your game the entire map is shoved into memory. This makes it really fast to read and modify the terrain, but it also means the bigger the map gets the more RAM gets used up to hold it all. This is one of those things that's been on my list since the beginning, since it's a necessary thing to change in order to have an impressively large world. The typical solution is to only load the parts of the map that you need and keep the rest sitting in a file on the harddrive. In order to keep saves smaller I compressed everything together, so I also need to change the save format to make it faster and easier to load bits and pieces as they're needed. I'm also making some optimizations here to reduce the overall filesize, like not saving things that don't actually need to be saved and letting them be re-generated as needed.
Right now the world is 1024x256x1024, which is a grand total of 268,435,456 blocks. Each block takes up 2 bytes of memory, so that's a grand total of 512 megabytes of memory for the map data alone and doesn't include things like entities (trees, furniture, people). I would like to end up with a map that's around 18000x512x18000, roughly 300 square miles, or 165,888,000,000 (165 billion) blocks. If I were to store all that on disk or in memory that would be over 300 gigabytes. My computer has 16 gigs of RAM, and that's pretty good. I'd like to target under 4 gigs. So, streaming the map instead of loading it all at once is ultimately necessary. I knew this even way back at the beginning, I had just been putting it off for more features. I've finally hit the 4 gig memory limit though, and it's affecting some users, so it's time to do a hard sweep of performance and get it all stable and running fast while also reducing memory and increasing maximum world size.
Anyway, for this week I've added resolution options and shadow quality options. If you were having performance issues before I'd recommend playing with all the visual settings in options, as you should be able to make a good impact on performance with them.