Here are a few requirements that need to be met for technical, common-sense or organizational reasons. Of course they don't have to be met immediately but should at least serve as a goal.
The idea is to create tiles similar to the standard OpenStreetMap vector tiles. So the data inside the tile needs to get prefiltered: The polygons provided for display need to be carefully chosen (depending on importance) and need to be simplified in advance (Node reduction). So a simplified level 0 tile could look like this:
This would be the lowest zoom level possible. Now further tiles could get created for higher zoom level using the Quadtile scheme. This is a level 2 tile that shows parts of Europe (the actual one would probably already display country boundaries, but we leave that out in this discussion for purposes of simplicity and illustration):
As you can see the file just contains the clipped polygon data. It does not contain the whole polygon data e.g. for the whole Eurasian-African coastline for this zoom level since that would add lots of data and would defeat the idea of the tiles (imagine having to download the whole Eurasian coastline at zoom level 16 just to display a small part of Portugal ....).
Now what would happen if the user started Marble and would zoom so that tile level 2 gets activated? It would download tile by tile. What we'd like to avoid at all cost is that tiles appear and are surrounded just by a plain white area like this:
Instead it should "reuse" data from lower-level tiles that show those parts which haven't been downloaded yet: With the most simple approach this would require that a tile is fully opaque (i.e. no parts of the whole square are transparent) and really gets rendered on top of the "parent" tile. Here we see our tile from tile level 2 "inserted" into the tile 0:
Now this approach would work to some degree and might be the first mile-stone to implement. However it has some backdraws:
* It requires to completely "overpaint" the tile of the tile level below. So it would still be required to render the area below the level 2 tile. * the same geometric feature that is covered in both tile levels is distributed across different polygons. This might make "filling" (e.g. with a plain color or a texture) harder. Same applies for selection of such a polygon.
Also note that if tiles weren't fully opaque with this approach we'd run into artefacts like visible on this picture: