# Wednesday, 21 September 2005

Since it's been quiet on most fronts with the alpha, our continued development, and the impending patch, I just wanted to let everyone know things are rolling along.  I've been having some trouble with my development setup the past few days that has hindered me, but I've mostly solved that as of a short while ago.  Tonight I'll be hitting the new rendering system hard, and may even have some good news or screenies by the end of the week.

Also, here's a quick overview of the status of the plugins/utilities that I maintain:

Zone Launcher -- Retired.  I did however hack up a quick version that works with the new launcher.  It apparently has a naming conflict with some other app that was announced a few days after I posted the update.  Oh well.

Plugin Manager -- Limbo.  I will be updating this as soon as I figure out how.

Mouse Wheel 2 -- Actually updated already.  It just needs to stay current with our changes.  It's also waiting on QueryKeyboardMap to work again.

AC AIM -- Planning.  I will not exactly be updating this;  I'll be completely rewriting it using the new .NET framework.  I'll also be using that time to write a series of articles detailing the development process using the new framework.

Nerfus Buffus 2 -- In Progress.  NB is broken.  Very broken.  I will be updating it, but I'm having to rewrite large chunks of it.  I don't really have an ETA other than to say it will NOT be ready when decal releases.  If time permits, I plan to do my best to have it out with in the month following decal.

posted on Wednesday, 21 September 2005 00:47:50 (Central Daylight Time, UTC-05:00)  #    Comments [1] Trackback
# Thursday, 15 September 2005

Going further into how and why we're breaking things, I'd like to take a moment to cover our protocol system.  As many of you know, we keep a huge xml file that documents the known AC protocol.  Well, in the downtime, this file has seen MASSIVE reorganization.  Ken has been kind enough to do this work almost alone.  This has included updating all of the old packets that have changed with ToD and also some much needed upgrades to the file for clarity, new features, and ease of use.  Another point in this massive upgrade, was a change in the objects plugins use to access protocol information:  IMessage[2] and IMessageMember.

NB2 is a heavy user of protocol information.  Even though it uses filters, there is still quite a bit of parsing that occurs.  The usual method for updating a plugins protocol functions tends to only involve changing the packet type or renaming a few fields.  This time around however, many, many packets were renumbered, and with Ken's hard work, probably 3/4 of the fields have been renamed.  Then comes the kicker, with the changes to IMessage the Member method no longer exists.  This means NB2 won't even compile until I replace all of the calls to the proper replacements.  Then I have to go back to changing the numbers and field names.  One last fun bit is the inclusion of many new "types" in the protocol.  This means that anyone parsing data might have to add some extra calls in their code.  That may seem annoying at first, but it makes much more sense with the changes.

Another, but slightly less annoying, change keeping it down is the removal of several methods from IPluginSite.  Any function that in the past used a memloc in PluginSite has been removed and is now only found in ACHooks.  Well, NB2 is old enough that ACHooks was still rather young, and didn't get used much.  These changes are generally not very difficult.

Next time we'll cover either the new .NET Plugin Framework or what will eventually be Decal's new rendering engine (depending on how far into it I get).

posted on Thursday, 15 September 2005 00:38:05 (Central Daylight Time, UTC-05:00)  #    Comments [0] Trackback
# Monday, 12 September 2005

So many of you know that we've been "fixing" Decal lately.  Some of you are also aware that we've broken compat with the old version.  What very few know, beyond those of us doing the work, is just how extensive this breakage has been.  I'll try to further explain the damage we've done, starting with a history lesson.

In Decal 1.x, there were about 4 modules:  DenAgent, Inject, DecalNet, and DecalControls.  DenAgent is the familiar windows gui everyone uses to configure their plugins.  DecalControls is obviously the home for all of the buttons decal shows in-game.  DecalNet is our network parser.  That leaves behind Inject.  While the name implies that it might have something to do with injecting the Decal code into AC, that's only a fraction of what it did.  Inject *WAS* Decal.  It handled all of the hooking, all of the rendering, all of the input.  Every interaction except reading packets passed through Inject in some way.

When Cibo came back and gave us his vision of Decal2, we gained a few more modules:  Decal, DecalFilters, and DecalInput.  The idea here was to shift core functionality away from Inject and into Decal.  For plugins and filters this happened about 50%.  Decal now started and stopped "services" which loaded the plugins and filters.  Unfortunately, Inject kept a tight grasp on the Rendering and Input code.  Even though we now had a module named DecalInput, it only contained services to let plugins generate input, it didn't help process input from AC at all.

So this is where we arrive.  We've tried through the years to patch functionality into this model with out breaking it.  We have so much legacy code and cross referenced crap to maintain most of us babble code non-sense in our sleep.  Finally ToD has given us a chance to fix all of that.  With the massive changes to AC's rendering engine, our graphics code died.  We've hacked together a temp solution so that we can get the rest of decal working, but we have grand plans indeed for a new one.  We've also taken several more functions away from Inject, and will continue to do so until it does little more than... well inject.

Next we'll go over some of the more specific things that have been changed, or maybe give a little more insight into the depths of Decal.

posted on Monday, 12 September 2005 17:05:26 (Central Daylight Time, UTC-05:00)  #    Comments [0] Trackback