Obfuscation: what is it? Simply put, it's a method used to make code difficult to read and work with. The basic idea is simple; the script parser doesn't care if a variable has a meaningful name (integer iHeroID) or a nonsensical one (integer ZYF), since semantically the code will execute the same regardless of nomenclature. It does, however, make it significantly more difficult for someone else to make changes to it (especially without accidentally breaking something!)
This is, unfortunately, the reason why AI development has been slow. I've been spending quite a bit of time slowly deobfuscating the script, but there are still many things that I still cannot quite account for. My current project is working out some of the "magic numbers" that appear in the script; numbers which just appear in the script but have no apparent rhyme or reason.
Fortunately, I only have to work out the obfuscated portions in the AI script; IceFrog has been provided me with script changes from version to version (i.e. what was added/changed/deleted in 6.64 from 6.63b) in unobfuscated form, so I can keep the map updated with those features rather easily and effectively. Unfortunately, I don't have access to a full deobfuscated map script (which would make starting a brand-new AI much easier) or a deobfuscated AI script (which would make things easier for the obvious reasons). Ah well. C'est la vie, as a good friend of mine would often say. =P
I'm thinking of posting some of these random numbers for you guys to possibly decipher. I know a lot of them refer to unit geographical locations (x,y coordinates of buildings and such) that have been changed since 6.48b and no longer cause things to work, but trying to figure out what used to be what is a bit tedious. =/
In short, obfuscation = the bane of my existence. At least, in terms of map development. =P