In addition to switching the whole chunk to stored rather than procedural, you could always store changes as a set of diffs that are applied to the chunk after generation. Either store every atomic change (change this block from dirt to open, etc) you could compress it by storing the events that occurred to create the change, and apply those events in order when recreating the chunk. (ie, apply an explosion radius 6 at (X,Y), dig at (X,Y), etc...) Once the diff starts to affect a certain arbitrary threshold percentage of the chunk, then you could switch to just storing the entire chunk as is, discarding the diff table. This way, you would see some memory savings on slightly-modified chunks, without incurring the bloat of a heavily modified chunk.
FLeBlancMember Since 10 Sep 2011
Offline Last Active Mar 21 2014 04:56 PM