Thursday, October 29, 2009

Obfuscation and the like

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

Monday, October 26, 2009


Try it. Works for 0.213 whenever "-random" is valid. Should go without saying that you type that in without the quotation marks, but I'll mention it anyway just in case.

And I know that everytime I do something fun like this a lot of people will say "HOW DARE YOU WORK ON SOMETHING YOU FIND FUN AND ENJOYABLE INSTEAD OF SPENDING YOUR LIMITED FREE TIME DOING SOMETHING I SELFISHLY DEMAND YOU TO DO", but eh, I work at my own pace and on my own schedule, so deal with it. =P

Sunday, October 25, 2009

DotA Allstars 6.64 AI 0.213

-First update to 6.64
-Changed the default AI behaviour of creeps and towers to be the same as in the official map
-Fixed the fade on Circles of Protection belonging to other players
-Fixed some numerical errors on Bristleback's abilities
-Added some additional AI ability functionality (Black Hole, Fissure, Epicenter)

Wednesday, October 14, 2009

List of abilities that AI don't use correctly/at all

With a host of new abilities and rewrites, many abilities that previously worked with the script either aren't used properly or aren't used at all. Some abilities (like Epicenter after Burrowstrike) worked in previous versions due to hacks that I put in that I've since removed during refactoring.

If you see something that's not working and isn't on this list, let me know, I'll try to keep this updated and address these when I have time (I probably missed several). Please keep in mind that I have a real life and a real job and both take priority over this, so progress might not be as fast as you'd like, but I'll have to ask for your patience.


-Warcry (new ability)

-Devour (rewritten a while ago)

-Infest (I don't even know how to properly use this, haha)

-Electric Vortex (I think there's a problem with this ability when used by AI)
-Ball Lightning

-Decay (spams this and sometimes gets lucky)
-Soul Rip (not working anymore? I haven't changed this and the ability should be the same but I never see him using it)

-Windrunner (ironically)
-Focus Fire

-Sticky Napalm (spams this and sometimes gets lucky)
-Flaming Lasso (uses this randomly)

-Battery Assault
-Power Cog

-X Marks the Spot
-Ghost Ship

-All active abilities

Tauren Chieftain
-All active abilities

-All abilities, invoked or otherwise

6.64 AI on the way

Got the script changes from IceFrog today, starting work on this soon.

Just thought you all should know, since I haven't updated in a while. =P