I'm actually writing
a game that I aim to pretty much be DF in a much different setting and with a significantly friendlier UI. So here's my thoughts on what I'll be doing to optimize it.
A game will take place on a procedurally generated planet. A seed is chosen when you start the game. The map will wrap horizontally but not vertically. The portion of map close to the player's settlement and survivors will be simulated completely, and the rest of the world will use the best prediction algorithms I can come up with to generate results on a larger scale. When the player moves into these areas, the terrain will be generated with the procedural generation algorithm then the information gathered by the macrosimulation will be applied. When the player moves out, the larger scale information will continue to be collected and applied if the player comes back. This is
if I make large-scale migration possible; I don't know yet. It'd be a huge challenge.
On the smaller scale of things, each 32*32 or so square of tiles, and these regions would likely dynamically conform to the map and player activities, would essentially be its own data structure. When a survivor is looking for an item, it'd first look through the list of items in its current region, then move on to adjacent ones, for several iterations. To spread the workload a bit, a single region would be scanned in each frame. If nothing is found nearby, it'll give up, maybe try to craft the item if possible.
And no multithreading. Oh, and it's going to be fully top-down 2D; I might make it 3D like DF later. I'm unsure; digging is not going to be the game's focus.