Position filtering rocks!

Friday, March 30. 2007
I finally implemented the first version of position filtering in the database builder software, something I wanted to do since I've released MobMap to the public, but I first needed a decent number of people uploading data on a regular basis (which I've got now - big thanks to all you guys uploading data to the database!!!) to make this work.

Basically this filtering does two things. On one side, mobs/NPCs which are noted to be in two or three zones, but in reality are only present in one zone are now being filtered - or, better said, these "ghost" positions in the other zones should be excluded from the database. On the other hand, the wild "scattering" of position dots around the fixed position of an NPC should now be filtered too, with just the true position of the NPC being included in the final database.

Because this filtering stuff is fully automated, it might not work perfectly well for all mobs and NPCs. I did some random inspection ingame after I set the filtering parameters to reasonable values, and for me everything looked good, but the next days will probably show if this works out as desired. The filtering is implemented in a "non-destructive" way, meaning no single position entry in the backend database is being deleted when the filtering is applied, so if it turns out that this thing needs some serious retuning at least no valuable data would be lost.


However, time to see what's gained with this new "feature": the position database needs around 510 kbytes less memory ingame (measured with the german database version, but should be similar for the english version), and many NPCs that weren't clearly locatable because of too many scattered positions are now much easier to pinpoint :-) definitely an improvement!

You'll just have to download a new copy of the database to profit from the now much cleaner position database. There's no addon update needed for this.


While I wrote all this filtering stuff I stumbled over a tiny bug in the MobMapUpdater that caused it to upload erroneous data to the database in some special cases. I fixed this bug and cleaned the database of the erroneous data already uploaded. And because that was just a good opportunity to include proxy authentication support in the Updater, I also added that functionality before releasing MobMapUpdater 1.21. If you need this feature: add the command-line arguments "--proxyUser [username]" and "--proxyPass [password]" to the MobMapUpdater command line to enable proxy authentication and supply the necessary credentials.

MobMap v1.20

Saturday, March 24. 2007
Just released MobMap v1.20.

The focus in this update was mainly on performance/memory optimizations. The MobMap addon with its now almost 4000 lines of code had just went through its first code refactoring phase, in which I modularized the addon much more than it was before. The code and UI parts for the individual databases were taken out of the main addon and placed into separate files which get loaded together with the according database on demand. In addition to that, I changed a few things in the database format to support this modularization.

All this does result in two improvements:
- The MobMap core addon (the one which is always loaded on startup) memory use dropped to 190 kilobytes from 627 kilobytes before the refactoring. The loading time at startup also improved from 0.164 seconds to 0.093 seconds.
- The biggest database part, the position database, had to be loaded at the first use of MobMap before v1.20. This was necessary because this database contained some information that all the other databases relied upon. The new database format now splits out those parts from the raw position data, which now only gets loaded the first time you really want to display a position. So if you just search for a recipe, a quest or a merchant, the position data won't get loaded anymore.

In addition to this code refactoring, the data export routines were optimized to be much faster (especially with bigger amounts of data).

Besides those performance-related changes, another "functionality" has been added to 1.20 - though you won't see much of it right now: MobMap now also collects loot data. I plan to use this data in several ways: on one hand, I want to provide a database that contains the positions of quest items you get from chests, boxes and similar objects in the WoW world. On the other hand, I might one day add a loot table database to MobMap, however this is not definitely sure yet because I first have to see if and how these big amounts of data can be compressed to fit nicely into the limited amount of WoW addon memory.

Corrupt database

Monday, March 19. 2007
I'm sorry, due to a bug in the database builder software a corrupted version of the MobMap database was online for download during the last 4 hours. The bug has been fixed, however if you downloaded a copy just in that timeframe you will have to re-download it again.

The error manifests itself in the MobMap addon in a big error frame that pops up the moment you try to open the quest tab.

MobMap v1.13

Wednesday, March 14. 2007
I did just put MobMap v1.13 online for download.

First of all, the changelog:
- fixed: token icons on merchant items which are bought in exchange for tokens are now correctly displayed
- added: support for Extended Questlog
- added: partial support for UberQuest
- added: item tooltips for the recipe list entries
- fixed: tooltips in various MobMap menus are now correctly displayed whether the world map is shown or not
- fixed: the quest detail frame is now displayed correctly whether the world map is shown or not
- added: another alternative position for the MobMap button on the world map frame (below the actual map)
- added: the option to completely hide the MobMap button

Originally I wanted to add full support for MonkeyQuest, Extended Questlog and UberQuest ("support" in this case means that the little questionmark-buttons which allow to quickly search for quest titles or quest mobs also appear when using these mods instead of the Blizzard default UI). MonkeyQuest and the UberQuest quest watch frame however are internally constructed in a way that makes it somewhat impossible for me to get MobMab to add those buttons to their frames. So v1.13 will now add full support for Extended Questlog and support for the UberQuest quest log frame (but not for the quest watch frame).

MobMapUpdater.BugCount--

Monday, March 12. 2007
Another error in the MobMapUpdater has been fixed. This one could cause the updater to get stuck in an endless loop at the initialization phase if specific data was collected by the MobMap addon in the SavedVariables file.

The new version 1.11 is online and should be automatically downloaded the next time you start the updater.

The tiny little bugs now start to emerge...

Sunday, March 11. 2007
Just uploaded MobMap v1.12 which corrects an error that caused the quest and merchant tab to not display any quests/merchants if no zone name was entered in the zone filter box.

Forgotten files are a pain in the ass

Saturday, March 10. 2007
Damn, I seem to have forgotten to upload some new files necessary for the load-on-demand database. All the people who have updated their MobMap installation in the last 6 hours using the MobMapUpdater will probably have a broken installation now (the missing files were included in the 1.10 installer package and the zip file for manual download, so this only affects those who tried to update using the updater).

I just uploaded those missing files and created MobMap v1.11 - there is nothing new in this version, I just had to increment the version number so all the people who got the broken 1.10 version via the MobMapUpdater will be able to download the brand-new, now-including-all-files-version 1.11. I'm sorry for this mistake.

MobMap v1.10 is out!

Saturday, March 10. 2007
MobMap v1.10 has just been rolled out. This version brings several tiny improvements (options panel in MobMap, MobMap button on world map is now movable to the other side, MobMap position "dots" have their own transparency now) and a bigger change: the database has been split into 4 files which are now dynamically loaded in WoW as soon as the user accesses MobMap (position database) or a specific subsection of MobMap (quest/merchant/recipe database). This greatly reduces the time needed to load the addon when entering the WoW world and keeps memory usage down to a minimum.

The possibility to exclude certain parts of the database from the download has been removed because with this new load-on-demand system in place it isn't necessary anymore. If someone doesn't ever use the quest database for example, this database will never be loaded and will thus never occupy any memory. But the advantage of the new system over the old one is: If this user decides to use the quest database at some point, the database will be available.

I hope the transition from 1.0 to 1.10 is as smooth as possible. Because 1.10 and the new database subdivision brings a new MobMapUpdater and a new database format you will have to update the addon, the MobMapUpdater (if installed) and your local database copy all at once!

Some thoughts concerning database size

Friday, March 9. 2007
At the moment, 11k mobs and NPCs do take less than 3 Megabytes of WoW addon memory. I don't expect this to grow too much over time because there is only a limited number of unique mobs in the game and because with a growing number of people uploading data I expect to be able to filter out many "scattered positions" for many stationary NPCs at some point in the future = reduced database size.

The growing number of quests, merchants and recipes will however lead to a bigger database (my calculations point to something around 5 or 6 megabytes with 5k quests, 2k merchants and 1.8k recipes which should cover nearly all existing quests, merchants and recipes in the WoW world). That's the reason why it is already possible to exclude this data from your local database copy.

Loading time of course is an issue. At the moment MobMap with the current german database (containing 11k mobs, 1.4k quests, 500 merchants and 1k recipes) takes 0.8 seconds (and 3.7 megabytes of memory) to load at startup on my machine which is quite a lot. That's why I am already experimenting with a Load-On-Demand database. It's not hard to implement and gets the initial loading time for MobMap down to 0.15 seconds (using 550kbytes). Loading the database at first use then takes another 0.55 seconds (and 3 megabytes of memory).

But when thinking about Load-On-Demand, I might just go a step further and split the database into 4 files (positions, quests, merchants and recipes) which are loaded on-demand whenever the user accesses the specific part of MobMap. This however would require some severe changes in the data processing backend as well as the distribution system (= MobMapUpdater database download mechanism), but I think the changes would definitely pay off in the future, so this is what I'm going to implement.