<i>This post was originally made by <b>danij</b> on the dengDevs blog. It was posted under the categories: Blog, Engine, Mac OS X, Platforms, Unix/Linux, Windows.</i>
Work continues at a pace on the revised map loader design. This work has just reached the second milestone in that maps are now loaded in a plugin and transfered over to the engine via the new runtime map editing interface.
Doomsday now supports loading only one map format - our bespoke archived map format.
Upon being instructed to load a map, Doomsday first checks the map cache to see if we have a cached map we can load. If so, it is loaded directly. If not, we collect the lumps associated with the given map and publish them to any map converter plugins currently registered in the hopes that one of them recognizes the format. A map converter plugin loads the data from the lumps and transforms them into a local representation appropriate to the format being read. The map data is then transferred engine-side using the new map editing interface which can be used to build maps at runtime.
Once the transfer is complete, Doomsday then transforms the map data from the specialized editable format into our runtime map format (this includes building the BSP). At this point and if map caching is enabled, the entire map plus all additional required data structures are archived to the map cache for later use.
The new code is still early and there remains a fair bit of work to get all of the above fully functional. The main jobs being that currently, game-specifc custom map data properties are not handled at all via the runtime map editing interface and the caching of the map data is not fully implemented yet.
I am much happier about the way this new architecture is progressing compared to the previous implementation. The customizable map format support will likely return in the form of a new map converter plugin later.