Cuberite Forum
[FIXED] Saving/Loading terrain bug - Printable Version

+- Cuberite Forum (https://forum.cuberite.org)
+-- Forum: Cuberite (https://forum.cuberite.org/forum-4.html)
+--- Forum: Development (https://forum.cuberite.org/forum-13.html)
+--- Thread: [FIXED] Saving/Loading terrain bug (/thread-341.html)

Pages: 1 2 3


[FIXED] Saving/Loading terrain bug - FakeTruth - 02-16-2012

Terrain is not always saved, and my changes to the terrain are not permanent.

I build some stuff, disconnect and reconnect and all my stuff is gone!
Also, terrain keeps generating even though it has been generated before.

Something's off, and I don't know where to look


RE: Saving/Loading terrain bug - xoft - 02-16-2012

I'm working on this right now.
Generally the problem is that chunks are queued for saving and then immediately unloaded, before they are saved; then the save thread asks for the chunk data and finds out there's no chunk, so it silently bails out Wink


RE: Saving/Loading terrain bug - FakeTruth - 02-16-2012

I'm still looking at what's going on and changing stuff (not committing).

I noticed in cChunkMap::cChunkLayer::UnloadUnusedChunks() that it unloads chunks without saving, would queuing them for saving result in what you're saying?


EDIT: I just added World->GetStorage().QueueSaveChunk(m_Chunks[i]); before m_Chunks[i].reset() and it saves it just fine after some tests.

However maybe it would once in a while unload a chunk before saving it, and losing the changes?


RE: Saving/Loading terrain bug - xoft - 02-16-2012

Your edit is correct, but since I'm trying to remove cChunkPtr's from everywhere, it's not the path I've taken.

Instead I'm marking chunks as dirty, and unloading skips dirty chunks.

This way the world storage need not store cChunkPtrs but rather cChunkCoords, asking the world for the actual chunks when they are to be really saved.


RE: Saving/Loading terrain bug - Boo - 02-16-2012

Why do all the time is generated map?? decide to have this problem


RE: Saving/Loading terrain bug - FakeTruth - 02-16-2012

I'll just commit this small change if you don't mind, then it'll be working at least.


RE: Saving/Loading terrain bug - FakeTruth - 02-16-2012

(02-16-2012, 11:05 PM)Bookkc Wrote: Why do all the time is generated map?? decide to have this problem

Update to r272 and it should work Smile


RE: Saving/Loading terrain bug - xoft - 02-16-2012

Saving and loading should now (r273) work.

The only problem I've run into so far is that changes to chests, furnaces and signs don't get saved unless the terrain in the same chunk is changed in some way, too. I haven't yet found a way to mark the chunk as dirty when the player is using any block-entity window.


RE: Saving/Loading terrain bug - Boo - 02-16-2012

(02-16-2012, 11:24 PM)FakeTruth Wrote:
(02-16-2012, 11:05 PM)Bookkc Wrote: Why do all the time is generated map?? decide to have this problem

Update to r272 and it should work Smile

Compiling please for windows Smile
[16:12:57] Generating chunk [19, 30]
[16:12:58] Generating chunk [6, 24]
[16:12:59] Generating chunk [17, 20]
[16:13:00] Generating chunk [6, 30]
[16:13:01] Generating chunk [6, 22]
[16:13:02] Generating chunk [17, 21]
[16:13:03] Generating chunk [25, 39]
[16:13:04] Generating chunk [16, 36]
[16:13:04] Generating chunk [6, 38]
[16:13:06] Generating chunk [18, 21]
[16:13:07] Generating chunk [25, 32]
[16:13:07] Generating chunk [16, 37]
[16:13:08] Generating chunk [7, 26]
[16:13:09] Generating chunk [18, 39]
[16:13:10] Generating chunk [13, 36]
[16:13:11] Generating chunk [25, 24]
[16:13:11] Generating chunk [17, 35]
[16:13:12] Generating chunk [11, 38]
[16:13:13] Generating chunk [7, 31]
[16:13:14] Generating chunk [20, 26]
[16:13:15] Generating chunk [11, 37]
[16:13:15] Generating chunk [23, 23]
[16:13:16] Generating chunk [13, 22]


no. dont workSad Fix it ! my cpu is load in 100%


RE: Saving/Loading terrain bug - xoft - 02-17-2012

I don't quite see what your problem is. Of course the chunks need to be generated when you start the server and the world doesn't contain them. There's no duplicates in your list, so I really don't know what you're complaining about.

CPU at 100 % is quite right when generating chunks, supposing you have a single-core machine. The chunk generating thread is running at full speed. Once it stops generating chunks, your CPU usage should drop.
oh, I see now. When the chunk is generated, it is not marked dirty, therefore not saved until you actually make a change to it. I'll fix that.