I think I got myself confused about regional features and regional generation - thinking again the cities would get placed during world gen, but they wouldn't "hatch" until the player gets within regional distance, at which point (for infinite worlds) you then might place more cities further out on additional world map generating.
The cities may hatch into building and NPC "eggs" at this point too (via city grammar!), and I could see a return of the "city biome" concept if we add biome to Chunk (or match it to the world map?) and make it so it can change over time - as it would be the perfect way to pre-flatten appropriate terrain for the buildings (change from world-gen-time biome to city biome to affect eventual block spawning).
When the player is nearly within visible range the individual buildings might then hatch (via building grammar!) along with NPCs. Likely some of this stuff would span multiple chunks (big buildings) but if you store the buildings as entities with a filled blueprint/blockcollection attached and rely on city biomes being flat at a set height you should be able to prep it almost entirely without spawning actual terrain blocks (caveat: rivers and such)
I put together a bit of a diagram in a Google Doc - feel free to tweak it (but be wary of merged cells in GDocs!): https://docs.google.com/spreadsheet/ccc?key=0AnbZuNt7s9nVdGhBcE5PSm5jY202UGhORktjOW5INmc
Green is what we've already got, Yellow is what I think we're mainly talking about these days. Which can be split out quite a bit:
The cities may hatch into building and NPC "eggs" at this point too (via city grammar!), and I could see a return of the "city biome" concept if we add biome to Chunk (or match it to the world map?) and make it so it can change over time - as it would be the perfect way to pre-flatten appropriate terrain for the buildings (change from world-gen-time biome to city biome to affect eventual block spawning).
When the player is nearly within visible range the individual buildings might then hatch (via building grammar!) along with NPCs. Likely some of this stuff would span multiple chunks (big buildings) but if you store the buildings as entities with a filled blueprint/blockcollection attached and rely on city biomes being flat at a set height you should be able to prep it almost entirely without spawning actual terrain blocks (caveat: rivers and such)
I put together a bit of a diagram in a Google Doc - feel free to tweak it (but be wary of merged cells in GDocs!): https://docs.google.com/spreadsheet/ccc?key=0AnbZuNt7s9nVdGhBcE5PSm5jY202UGhORktjOW5INmc
Green is what we've already got, Yellow is what I think we're mainly talking about these days. Which can be split out quite a bit:
- World - we need an abstract world scope that can fit generators at different levels and store a map. Maybe one pixel = one chunk and holds one calculated biome value + humidity + temp + height (+ anything else?)
- Terrain - this is the map we'd generate out of one of our techniques like Tectonic, Plasma, Polygonesia (heh), and what we can currently get from TerrainPreviewGenerator for the random Perlin noise edition
- City (world scope) - just a dot on the map that means "city goes here" (a city egg with high-level info)
- City (region scope) - hatches the city egg into a series of building & NPC eggs (the details written in a city PAG), and sets city biome - as long as the biome can revert to match the surroundings should the city itself disappear this might work
- City (local scope) - hatches the buildings and NPCs (each with their own PAG?) into actual entities/blocks, ready for local terrain chunk gen to spawn the area around it