MobMap v1.30 is out

Tuesday, April 17. 2007
Quite some time has passed since the last update to MobMap. After the Add-On and the corresponding backend systems have reached a state now that could almost be called "stable", I didn't want to completely break that fragile stability by releasing the next version too early.

This update does - again - change several things in the database format. This was necessary to incorporate a new type of data into MobMap: drop rates. For the start, MobMap contains drop rate data (if available) for all known quest items and for all recipe reagents.

This should make questing even more easier because now MobMap can answer the question "Who drops those 20 [xyz] I need for this quest?" - and of course you can have MobMap then display the location of the mobs dropping your quest items. The quest objective quicksearch buttons (also known as "questionmark" buttons) have been consequently enabled to search the quest objective for known item names besides checking it for known mob names.

So in terms of questing there's only one big thing left: items that aren't looted from dead mobs but picked up from stashes/chests/etc. This one is now pretty much on top of my to-do list, and since I already collect the necessary data together with the loot data, this functionality will probably find its way into the next bigger update.


And now, for the sake of completeness, the 1.30 patch notes (because there have been some more additions than just this new database...):

- added: display of skill level required for recipes
- added: possibility to sort recipes by skill level
- changed: item name helper database format changed to reduce memory usage by 15%
- added: several help text tooltips
- added: possibility to disable item detail data requests to the server (only recommended if you permanently get disconnected otherwise)
- added: New drop rate database! It currently contains drop rates for all items necessary for the quests known to MobMap and the drop rates for recipe reagents.
- added: quicksearch buttons for recipe reagents to quickly search for mobs dropping the reagent or merchants offering it
- added: the questionmark buttons next to quest objectives now also search the drop rate database if the quest objective is to collect an item obtainable by killing and looting mobs
- fixed: using the MobMap check box on the world map does not cause a lua error anymore if the MobMap position database has not been loaded yet

Some more final words, on old 1.x WoW versions this time

Friday, April 6. 2007
Another request I'm getting frequently: "Is there a WoW 1.x-compatible version of MobMap???"

Simple answer: no, there isn't, because MobMap didn't exist when WoW 1.x was on the Blizzard servers. And there will never be, because I won't spend a single second porting MobMap back to these old clients and their outdated lua 5.0 scripting engine.

I anyway don't understand why anybody would want a 1.x-compatible version of MobMap. Of course those people play on emulated servers (something I don't care about personally since I'm not Blizzard), but the simple fact that the MobMap database consists of data from the real Blizzard servers makes MobMap mostly useless on emulated servers where the quests and mob spawns usually differ from the original servers.

So, please stop asking me for 1.x-compatible MobMap versions - it's futile because there aren't any.

Another update of the Updater

Tuesday, April 3. 2007
I have just uploaded a new version of the MobMapUpdater tool. This one corrects two bugs, one error in the upload mechanism that could cause erroneous uploads in some very special circumstances and the other one in the localization part (you have probably noticed it if you're an english user: the window that's displayed when there's a newer version of the updater available was in german language in many cases. I always thought I'd sorted out this bug long ago, but it turned out that it was still present. This update should finally fix the problem. However, you might see one more of those german update notifications when the old version of the Updater wants to update to this newest version - just click the button on the left side of the window, it's the one that reads "update" ;-)

Besides those bugfixes, this new version also brings some sort of new "functionality" - not really useful, but a gimmick for those obsessed with statistics. There's a new button in the MobMapUpdater window that shows a few numbers about the data already uploaded with this updater installation like mob/position/quest/merchant/recipe count. The data includes all uploads since I started to log those numbers on the server.

Talking about statistics: I'm currently thinking about a small addition to the MobMap website showing some statistics, numbers and graphs about the data uploads (you might have guessed it by now: I'm also one of those statistics freaks). This might be just the right thing to do while the loot data I need for the next big update of MobMap flows in...

Some final words concerning Ace2

Sunday, April 1. 2007
Just because it's a question I get pretty frequently: No, I won't change MobMap to use the Ace2 library, because MobMap would not benefit at all from that.

Most of the following is copied from one of my older comments on the ui.worldofwar.net page of MobMap, it summarizes pretty well why that is the case. Don't read it if you're afraid of excessive use of brackets to create very long sentences ;-)

While Ace2 is a well-designed library that makes programming addons easier for the programmers (because it saves you from having to do repetitive tasks like setting up chat commands or similar stuff manually), it also takes a lot of power and control from the hands of the programmer, which is something I personally don't like at all. I like to stay in control, to know what my addon really does, because its actions are much more predictable for me if I use as less libraries written by other people as possible, and that in turn results in better maintainability for me and in the end less unfixed bugs for you, the users.
Besides that, this approach is what made MobMap possible in the first place, because the hand-optimized data structures I use to store the MobMap database are essentially the trick that makes it possible to stuff a database that takes up way over 40 Megabytes in the form of MySQL tables into less than 4 megabytes of lua memory while still keeping it accessible.
Something I also don't like specifically about the Ace2 library is the almost religious belief some people have in this library and its performance-enhancing capabilities (okay, that's not really the libraries' fault, the library itself as a technical tool is actually pretty nice, but this kind of religion that has evolved around this technical tool for addon developers still bugs me because it leads people to wrong assumptions).
The widespread assumption that you can make an addon perform better simply by using the Ace2 library is, for example, just plain nonsense. Ace2 is not some performance snake-oil you rub on an addon and it magically performs better. You can write slow code without Ace2 and you can certainly write slow code that uses the Ace2 library - there's no difference, because even when using Ace2 you'll have to write the "business logic" that powers your addon yourself.
The same is true for the memory requirements. Every addon needs memory for three things: the code, the UI frames and its data. The code part of memory usage (here Ace2 really does things differently because it only gets loaded once and is then shared among addons) is in many cases too small to really make a big difference, the most memory is often consumed by the data structures an addon uses to store the data it works with, and those can be designed efficiently or inefficiently by the programmer, no matter if he uses Ace2 or not (actually I even think using pre-made libraries doesn't really encourage a programmer to create customized data structures that are as efficient as possible for the special task at hand, but instead to use the general-purpose stuff supported by the library). Good performance is nothing you get by using any library, you get it by programming with performance in mind, starting at the first line of code you write (and that actually is the main reason why many of the Ace2-based addons are in fact performing better than their non-ace counterparts: their programmers wrote them with good performance as one goal. Besides that, many Ace2 addons more or less copy a functionality that has been available before from a non-ace addon; this means that the problematic parts of a solution are already known from the older addon which makes it generally much easier to find an improved implementation).

I did not make the same mistake I did with ATSW before and wrote MobMap with performance and memory-efficiency in mind, and I think the result is pretty close to the optimum reachable under the constraints of the WoW/lua environment which was never even remotely meant to house databases like the MobMap database. Plugging in that Ace2 library for whatever reason would certainly not "magically" improve this situation any further, it would just introduce another component that could possibly cause problems.

MobMap v1.22 released

Sunday, April 1. 2007
Nothing big in this release, I'll just let the patch notes do the talking:

v1.22:
- added: dynamically scaling position dots to improve visibility when only one or two are displayed
- fixed: some problems with crashes occuring when trying to export larger amounts of data
- fixed: loot data is now properly deleted when the 'clear data' button is used