Saturday, November 21, 2009
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
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
"-formless"
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
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
http://www.mediafire.com/?1wmmwmmyyj2
http://rapidshare.com/files/297656613/DotA_Allstars_v6.64_AI_0.213.w3x
http://www.megaupload.com/?d=V9VX2TOY
Changelog:
-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)
http://rapidshare.com/files/297656613/DotA_Allstars_v6.64_AI_0.213.w3x
http://www.megaupload.com/?d=V9VX2TOY
Changelog:
-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.
Thanks.
Sven
-Warcry (new ability)
Doombringer
-Devour (rewritten a while ago)
N'aix
-Infest (I don't even know how to properly use this, haha)
Storm
-Electric Vortex (I think there's a problem with this ability when used by AI)
-Ball Lightning
Dirge
-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)
-Tombstone
Windrunner
-Powershot
-Windrunner (ironically)
-Focus Fire
Batrider
-Sticky Napalm (spams this and sometimes gets lucky)
-Flamebreak
-Flaming Lasso (uses this randomly)
Clockwerk
-Battery Assault
-Power Cog
-Hookshot
Admiral
-X Marks the Spot
-Ghost Ship
Razor
-All active abilities
Tauren Chieftain
-All active abilities
Invoker
-All abilities, invoked or otherwise
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.
Thanks.
Sven
-Warcry (new ability)
Doombringer
-Devour (rewritten a while ago)
N'aix
-Infest (I don't even know how to properly use this, haha)
Storm
-Electric Vortex (I think there's a problem with this ability when used by AI)
-Ball Lightning
Dirge
-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)
-Tombstone
Windrunner
-Powershot
-Windrunner (ironically)
-Focus Fire
Batrider
-Sticky Napalm (spams this and sometimes gets lucky)
-Flamebreak
-Flaming Lasso (uses this randomly)
Clockwerk
-Battery Assault
-Power Cog
-Hookshot
Admiral
-X Marks the Spot
-Ghost Ship
Razor
-All active abilities
Tauren Chieftain
-All active abilities
Invoker
-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
Just thought you all should know, since I haven't updated in a while. =P
Saturday, September 26, 2009
Formless 2.0
After spending some time today refactoring the AI script, I decided to take a break and rethink the Formless hero that I implemented a while back. Long story short, several hours later I've finished a (mostly) working and improved version of Formless.
I ended up reorganising the code by a significant amount, and the resulting code is more efficient and easier to use. The biggest change is the ability to now choose which individual skill to reset, if so desired. You can right-click on the reset button to change the reset button to only reset a single skill (cycling through the four base abilities, then back to the option to reset all).
On top of that, the error messages are much more informative now; if you try to copy an ability that currently isn't supported, the message will notify you of which ability you tried to copy. If you try to copy an ability with an order already used (while -override is off) it will let you know which ability is conflicting.
And I decided to throw all semblence of balance out the window for this because, let's face it, the ability to combine skills of multiple heroes on the fly will never be balanced, ever. So, in order to maximise fun and flexibility, I removed the cooldown on all Reset functions (individual or all).
Haven't quite finished getting it up to compatibility levels of previous versions (so some abilities aren't working yet like Impetus and Last Word) but I expect I'll finish most of these by the time I release the next version. =)
I ended up reorganising the code by a significant amount, and the resulting code is more efficient and easier to use. The biggest change is the ability to now choose which individual skill to reset, if so desired. You can right-click on the reset button to change the reset button to only reset a single skill (cycling through the four base abilities, then back to the option to reset all).
On top of that, the error messages are much more informative now; if you try to copy an ability that currently isn't supported, the message will notify you of which ability you tried to copy. If you try to copy an ability with an order already used (while -override is off) it will let you know which ability is conflicting.
And I decided to throw all semblence of balance out the window for this because, let's face it, the ability to combine skills of multiple heroes on the fly will never be balanced, ever. So, in order to maximise fun and flexibility, I removed the cooldown on all Reset functions (individual or all).
Haven't quite finished getting it up to compatibility levels of previous versions (so some abilities aren't working yet like Impetus and Last Word) but I expect I'll finish most of these by the time I release the next version. =)
Subscribe to:
Posts (Atom)