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
Showing posts with label Thoughts. Show all posts
Showing posts with label Thoughts. Show all posts
Thursday, October 29, 2009
Wednesday, June 10, 2009
My first post...
Over at www.playdota.com. I'm only reposting it because I guess it answers some misconceptions about what I do and also because I want feedback on the next course of action, and because I'm too lazy to reword and retype it here. =P
does 6.60 have ai edition?
-------------------------------------------------------------------------------
Quote:
Originally Posted by chip'ndale
"i mean, afaik he asked for ice's permission before starting this project, is not like he felt doing this free lance."
0/2 friend, sorry. Didn't ask for permission to do this and I did feel like doing this freelance when I first started, and continue to do so. I receive no official support except that IceFrog has generously allowed me to post my work and put the map on getdota.com. I was surprised when it first appeared; that was done without my knowledge and I wasn't told until forum members told me you could download my map on getdota.com =P
Aside from that, the maps I generate are technically "unofficial". I have no access to deobfuscated source, so one could view the AI as basically a giant hack. I'm not part of his staff, have no regular communications with the team, and generally do my own thing. Hell, I'm a "Junior Member" on this now-official forum. What does THAT tell you, hm? =P
So...yeah, if you want updates, you'll have to check my blog. =P Unless something changes drastically (which it doesn't look to, since it seems like AI is generally a low priority on the grand scheme of things), I'm not obligated to update on any other medium, and it's going to stay that way.
And to me, this works out better. IceFrog has enough issues to worry about without trying to attach an "official" AI to the overall map, which would only really be used for training purposes, and I don't have enough time to try to update and maintain this deprecated code to a quality that's suitable for release. While I would love to have access to deobfuscated source to make my life easier, I don't technically need it (yet).
That said, hopefully you'll understand why the AI releases are generally sporadic and don't coincide too terribly much with the official releases. Perhaps in the future when I have the infrastructure in place we can consider doing coordinated releases (though it'd be a lot of work on my part and ultimately up to IceFrog to decide whether or not he trusts me enough to play with prerelease source), but if that is to be the case it wouldn't come into fruition for a long, long time.
Anyway, about AI for 6.60, since I know that's what everyone wants to know about...
My original plan was to finish isolating the original script, update and rewrite it, and then release on whatever version would been out by then (I'm about 110% sure that it will be newer than 6.60 at that point). However, if it seems like demand is high enough and people are willing to play against AI bots that don't make use of the new features or abilities (Razor's AI, for example, will be more or less completely broken), then I can continue to back-port features, at least for the purpose of trying new items and builds on something.
Problem is, this back-porting will take a long, long time (given the amount of changes, I'd say at least two months), time that I can spend furthering development on the script itself, so it's a significant fork in the road.
Pretty much the choices are:
1. Back-port features, get some bots that don't work all that well, can have training with new features in ~two months
2. Update AI, get bots that (hopefully) work with all new features, can have training with new features in ~long time
3. Wait for somebody else to write an AI map (I think Harreke was working on one), can have training in ~who knows
Any preferences? =P
Yay block of text. I wonder who will actually bother to read it all.
Well, now that I've written this all out, might as copy-paste it to the blog, haha. =P
does 6.60 have ai edition?
-------------------------------------------------------------------------------
Quote:
Originally Posted by chip'ndale
"i mean, afaik he asked for ice's permission before starting this project, is not like he felt doing this free lance."
0/2 friend, sorry. Didn't ask for permission to do this and I did feel like doing this freelance when I first started, and continue to do so. I receive no official support except that IceFrog has generously allowed me to post my work and put the map on getdota.com. I was surprised when it first appeared; that was done without my knowledge and I wasn't told until forum members told me you could download my map on getdota.com =P
Aside from that, the maps I generate are technically "unofficial". I have no access to deobfuscated source, so one could view the AI as basically a giant hack. I'm not part of his staff, have no regular communications with the team, and generally do my own thing. Hell, I'm a "Junior Member" on this now-official forum. What does THAT tell you, hm? =P
So...yeah, if you want updates, you'll have to check my blog. =P Unless something changes drastically (which it doesn't look to, since it seems like AI is generally a low priority on the grand scheme of things), I'm not obligated to update on any other medium, and it's going to stay that way.
And to me, this works out better. IceFrog has enough issues to worry about without trying to attach an "official" AI to the overall map, which would only really be used for training purposes, and I don't have enough time to try to update and maintain this deprecated code to a quality that's suitable for release. While I would love to have access to deobfuscated source to make my life easier, I don't technically need it (yet).
That said, hopefully you'll understand why the AI releases are generally sporadic and don't coincide too terribly much with the official releases. Perhaps in the future when I have the infrastructure in place we can consider doing coordinated releases (though it'd be a lot of work on my part and ultimately up to IceFrog to decide whether or not he trusts me enough to play with prerelease source), but if that is to be the case it wouldn't come into fruition for a long, long time.
Anyway, about AI for 6.60, since I know that's what everyone wants to know about...
My original plan was to finish isolating the original script, update and rewrite it, and then release on whatever version would been out by then (I'm about 110% sure that it will be newer than 6.60 at that point). However, if it seems like demand is high enough and people are willing to play against AI bots that don't make use of the new features or abilities (Razor's AI, for example, will be more or less completely broken), then I can continue to back-port features, at least for the purpose of trying new items and builds on something.
Problem is, this back-porting will take a long, long time (given the amount of changes, I'd say at least two months), time that I can spend furthering development on the script itself, so it's a significant fork in the road.
Pretty much the choices are:
1. Back-port features, get some bots that don't work all that well, can have training with new features in ~two months
2. Update AI, get bots that (hopefully) work with all new features, can have training with new features in ~long time
3. Wait for somebody else to write an AI map (I think Harreke was working on one), can have training in ~who knows
Any preferences? =P
Yay block of text. I wonder who will actually bother to read it all.
Well, now that I've written this all out, might as copy-paste it to the blog, haha. =P
Wednesday, March 18, 2009
More lack of update
The only thing I've done recently is finish up Ramza. Broken as all hell, but the system in place for this hero is almost enough to run an entirely different map. Maybe I should make a map from scratch, that could be a fun project for a while.
Still on the fence in terms of actual AI progress. I've half-started a new AI and half-started deobfuscating the existing script. And honestly, I'm half-ready to quit altogether. I'm getting a bit sick of the whining and the bitching. I don't even play DotA regularly anymore. Why do I bother spending so much of my free time putting effort into something I don't even enjoy anymore and putting up with the whining that I never enjoyed in the first place?
I think I need a vacation. A long one. This is starting to become a burden instead of a joy for me, and that's not a good thing.
Still on the fence in terms of actual AI progress. I've half-started a new AI and half-started deobfuscating the existing script. And honestly, I'm half-ready to quit altogether. I'm getting a bit sick of the whining and the bitching. I don't even play DotA regularly anymore. Why do I bother spending so much of my free time putting effort into something I don't even enjoy anymore and putting up with the whining that I never enjoyed in the first place?
I think I need a vacation. A long one. This is starting to become a burden instead of a joy for me, and that's not a good thing.
Wednesday, December 10, 2008
On coding and incrementation
It's kind of interesting looking back on my older maps to see how my coding technique has changed over the past two years of working on various iterations of this map. I never really anticipated that I would ever rewrite the AI item system, or have several fellow players help me design individual hero builds, or overhaul the map framework. The only thing that got me started in opening up DotA in the first place was the notion that I might be able to create my own content to put in the game to share with friends.
And now look where it is. Who would have guessed?
Looking back at some of my old heroes, I realise how clunky and unwieldy some of those triggers are. As such, I'm thinking of having incremental builds that I'll release periodically that will have some extra -fun content that I've updated to not be so deprecated. Target of first incremental release will be this weekend, with Formless post-several-fixes, as well as my Marine hero and one or two "tribute" heroes, which is my endearing term for heroes that I created based on my friends' personalities/playstyles/suggestions (Overflow designed one that's pretty solid and coded more-or-less properly, so if it's okay with him I'll probably put it in).
I still need to fix Bat Rider. Speaking of coding...I had to rewrite his other triggered abililties because they just didn't work, even in 6.00 alpha. Didn't rewrite Fly, since it looked good at cursory glance, but as many people have been anxious to point out, it is anything but good. Guess it's back to the drawing board to think of a proper way to do what he's supposed to. The quick fix I can think of is to remove the "take-off" animation, which should address several of these metamorphosis issues. Note to all: Metamorphosis is a terrible base skill for triggered abilities. One of my custom heroes has a metamorphosis-like ability but uses unit replacement instead of metamorphing. It works quite a bit better...but breaks your control groups (anyone remember old attribute-changing Morphling?).
I should probably also fix the super-creeps-not-moving bug at some point. I'd almost completely forgotten about that mode. I'm pretty sure I haven't used -sc more than 5 times ever.
There is something weird about coding all day at work and then doing it at home. Hell, I'm not even a computer major. I graduated with a music degree.
Ah well, more to come later. Probably descriptions of the heroes I've put in, as well as updates and such.
And now look where it is. Who would have guessed?
Looking back at some of my old heroes, I realise how clunky and unwieldy some of those triggers are. As such, I'm thinking of having incremental builds that I'll release periodically that will have some extra -fun content that I've updated to not be so deprecated. Target of first incremental release will be this weekend, with Formless post-several-fixes, as well as my Marine hero and one or two "tribute" heroes, which is my endearing term for heroes that I created based on my friends' personalities/playstyles/suggestions (Overflow designed one that's pretty solid and coded more-or-less properly, so if it's okay with him I'll probably put it in).
I still need to fix Bat Rider. Speaking of coding...I had to rewrite his other triggered abililties because they just didn't work, even in 6.00 alpha. Didn't rewrite Fly, since it looked good at cursory glance, but as many people have been anxious to point out, it is anything but good. Guess it's back to the drawing board to think of a proper way to do what he's supposed to. The quick fix I can think of is to remove the "take-off" animation, which should address several of these metamorphosis issues. Note to all: Metamorphosis is a terrible base skill for triggered abilities. One of my custom heroes has a metamorphosis-like ability but uses unit replacement instead of metamorphing. It works quite a bit better...but breaks your control groups (anyone remember old attribute-changing Morphling?).
I should probably also fix the super-creeps-not-moving bug at some point. I'd almost completely forgotten about that mode. I'm pretty sure I haven't used -sc more than 5 times ever.
There is something weird about coding all day at work and then doing it at home. Hell, I'm not even a computer major. I graduated with a music degree.
Ah well, more to come later. Probably descriptions of the heroes I've put in, as well as updates and such.
Subscribe to:
Posts (Atom)