• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

Coding in DOTA

Status
Not open for further replies.
Level 23
Joined
Oct 20, 2012
Messages
3,075
No, I'm not gonna ask about how to's or stuff. I just wanted to ask you guys about this statement about DOTA that I got from another forum:

Anonymous said:
Dota was made purely with GUI and without the help of systems made by other people other than their own team. JNPG was not used either.

So, do you guys think that DOTA is made using only GUI? Or is this guy just making up things?

Me, I don't think it's in pure GUI but I guess it's possible.
 
Level 22
Joined
Sep 24, 2005
Messages
4,821
Try downloading the old Open Dota map from xgm.ru. I remember it was using a modified KaTTaNa's Local Handle Vars (or they must have made a variant basing on that) .
 
Level 22
Joined
Sep 24, 2005
Messages
4,821
Go to playdota, there's a dota map template available for download. I think that's the official version since it's on the forums' tools section.I've read some topics on playdota and it seems that they encourage dota modification, they also provide which tools to use to extract and reimport the war3map.j file to edit the script.

Also, I didn't say you can't unprotect the map. Open dota is actually an unprotected DotA map, but it's an older version.

Lambadelta is correct, I remember Rexxar's throw axes ability having tons of locals.
 
Last edited:
Level 6
Joined
Sep 13, 2013
Messages
155
lol
yesterday i was asking about how invoker was made in DotA. Someone told me that it's made in vJASS. It can't be only GUI then.
 
Level 22
Joined
Sep 24, 2005
Messages
4,821
@Rheiko, sorry, I misunderstood your previous message. haha peace.
@DaddyWitch, don't double post dude, mods might give you a warning.
 
Level 23
Joined
Oct 20, 2012
Messages
3,075
You say that IceFrog is a team ?

Icefrog is NOT a team. Icefrog has a team, I don't think Icefrog can make this map all by himself. Though I only know PBMN as the AI coder and the Beta Testers. :/

And I don't think DOTA's invoker was made through JNPG since, I think, JNPG wasn't fully functional when invoker was made. So the code for invoker in the actualy map isn't in VJASS.
 
Last edited:
Level 22
Joined
Sep 24, 2005
Messages
4,821
JNGP was functional when the 2nd Invoker was added to DotA, I was still playing DotA back then while learning structs.
 
Level 9
Joined
Dec 12, 2007
Messages
489
about dota's coding, I found out that at least the ability code, even though looks ugly from rebuilding script, is made by two person, you can see that there's a different coding style in the abilities trigger, one is fond of location, while other avoid location. I don't know if its because of team action or actually copying abilities from other source.

well about the invoker's thread, in that thread no one states that dota actually uses JNGP or vJASS. that thread's starter asks for explanation about how Invoker's skill set is actually done so we refer him to the TheHelper's Invoker. If you actually did able to understand the vJASS code in Invoker's testmap, you can recreate it in GUI or JASS somehow.
 
Level 22
Joined
Sep 24, 2005
Messages
4,821
Well, DotA was maintained by different people at different times, so that must be leftover code that wasn't updated (or the maintainer did not bother to update).
 
Level 19
Joined
Feb 25, 2009
Messages
2,004
Few years ago there was a Q&A session on Dota-Utilities with IceFrog saying there are several external programs he uses during the process of modifing the map, so I guess the answer to your question is no.

Nevertheless, there were few older versions having its triggers based only on GUI, before JASS/vJASS became the mainstream of moding the code.
 
As MortAr said, there may have been older versions that used GUI. Back in ~2007, I remember reading that (1) the code DotA was heavily criticized as being awful (2) that there were some signs of GUI usage (it is very easy to differentiate GUI-converted JASS from standard JASS). I could be wrong since this is solely based off memory, but I'm pretty sure he used a mixture of GUI/JASS.

But that isn't really the important thing. AFAIK everything in DotA can be done in GUI. A long time ago, it was very, very popular to remake DotA spells. You'd see omnislash abilities submitted 24/7, and people would always request abilities from DotA, and it was all doable in GUI.

Do you need JASS to make a map like DotA? No. Does this mean that JASS is bad? No. While JASS makes life easier (imho) and exposes a lot more natives, it isn't the key to a good map. Use what you're comfortable with, and if you feel like branching out or getting access to JASS-specific features (e.g. trackables), then you can start learning JASS.
 
Level 20
Joined
Aug 13, 2013
Messages
1,696
I think the DotA Codes are vJASS but some of them is in JASS/GUI when I'd open the downloadable map template. Icefrog has a team on his site :// so. Icefrog also requesting some systems and etc. from _ _ _ _ _ _ _ _ from wc3.net. Because I saw there that " Icefrog request this and I think i like the idea ". Also as purge said everything spells in DotA can be done in GUI.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
according to the map in http://opendota.xgm.ru/ and also in the thread by pOke, Dota uses pure Jass and nothing hints it would use vJass.

vJass leaves a lot of junk code and comments in the code, which is not in either of those maps.

Vexorian is in credits list most likely because of the Map Optimizer and protection

Edit: Also, if the code from opendota is code used in actual Dota not remake, than that is using quite a lot of useless BJs
 
Yes but vJass generates code in a way that you will see it is vJass
even TESH leaves comments in the code

Well if the maps run through the optimizer it is more difficult to see signs of vJass, although you still can.

For example all of the libname__'s will be replaced with simple letters and no underscore. Comments and descriptive names will be gone as well but you can still tell nonetheless.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
however, there is not a single function that acts as a struct allocator

it could theoretically use scopes and/or libraries, but there is no hint of that either, because main doesnt call anything like call ExecuteFunc("jass_instructions...") as it is usual for vJass and there is no function like that on the bottom of the script either.
 
DotA uses pure JASS mostly. There could be remnants of the old GUI codebase still lurking in there, but I'll never know~

I analyzed the source and learned that it uses a system similar to Vexorian's or Bribe's Table. You'd notice that one hashtable is used absolutely everywhere.
I don't remember anything else though. I conducted this analysis over a year ago ;|
 
Level 16
Joined
Jul 31, 2012
Messages
2,217
here is the link

here are some points that may prove they do not use GUI, at all lol
Custom Evasion
* Evasion now stacks diminishingly
they made some attacks ignore backswing Oo
The following abilities no longer automatically ignore backswing time by default
they use a big DDS
with batrider, his coil makes units take more damage from fire damage, so their DDS can detect each damage type
lol, i can't seem to remember where are the other points ^^' i remember seeing some weird features that are normally impossible
 
Level 23
Joined
Oct 20, 2012
Messages
3,075
i remember seeing things that are impossible in the WE (first time i saw the changelog) but now i can't see them :con:

Those changelog were for DOTA 2. Stuff like breaking the speed limit is really impossible in warcraft without faking the hero's movement.
I've found a lot more that is pretty impossible/ very hard to do in the warcraft 3 engine too. </3

Anyway, another thread I made came up with the same conclusion that DOTA uses Jass as it's coding method. I guess the developers don't like using JNGP?

EDIT: Now that I look at the official changelog, It's actually implemented in 6.79? Dafuq. How the hell do you "break the speed limit"? :eekani:
 
@Jad
How are those not possible in GUI? Either way most likely they use jass.

Now, let's examine the DotA's script.

  1. DoTa definitely uses more than one hashtable, there are multiple InitHashtable()calls in the script. It uses two hashtables simultaneously, while one may be overwritten/re-used. However it appears that they mostly use one hashtable for everything.
  2. There are no struct allocation/destruction functions in the entire script.
  3. Script has constant variables, this is a sign of vJass but doesn't necessarily mean that vJass was used.
  4. This may be a sign of GUI usage if vex's optimizer cleans conditions/filters, if not it's just horrible JASS.
    JASS:
    function SRI takes unit MPI returns boolean
    return GetUnitTypeId(MPI)==1848651849 or GetUnitTypeId(MPI)==1848652338 or GetUnitTypeId(MPI)==1848652337 or GetUnitTypeId(MPI)==1848658777 or GetUnitTypeId(MPI)==1848658778 or GetUnitTypeId(MPI)==1848659013 or GetUnitTypeId(MPI)==1848652339 or GetUnitTypeId(MPI)==1848652340 or GetUnitTypeId(MPI)==1848652341 or GetUnitTypeId(MPI)==1848658992 or GetUnitTypeId(MPI)==1848658993 or GetUnitTypeId(MPI)==1848659252 or GetUnitTypeId(MPI)==1848651853 or GetUnitTypeId(MPI)==1848658006 or GetUnitTypeId(MPI)==1848659027
    endfunction
    That function is just one example of countless functions that were coded in the same way.
  5. There are "TRIGSTR_#" strings, which is a sure sign of GUI usage.
  6. The maps main (init) function has to ExecuteFunc calls (no vJass initializers).
My conclusion is that if DotA does use vJass, it only uses light features (scopes, libraries, globals declaration). Everything is likely in plain JASS and there are some GUI triggers randomly.
 
Last edited:
Level 6
Joined
Feb 5, 2012
Messages
1,685
Those changelog were for DOTA 2. Stuff like breaking the speed limit is really impossible in warcraft without faking the hero's movement.
I've found a lot more that is pretty impossible/ very hard to do in the warcraft 3 engine too. </3

Anyway, another thread I made came up with the same conclusion that DOTA uses Jass as it's coding method. I guess the developers don't like using JNGP?

EDIT: Now that I look at the official changelog, It's actually implemented in 6.79? Dafuq. How the hell do you "break the speed limit"? :eekani:

Actually the changelog is for Dota 1...
 
Level 15
Joined
Dec 21, 2013
Messages
910
I can say, IceFrog is awesome. Too sad they only made DoTA....
If they join Hive it will be awesome, and they will create many other maps, and helping other modder....

By the way, when dota became popular? I remember its popular since 2006...
And where is the first release? Where they upload it? And what make it popular ?
Well this is OT...

On Topic:
They must be use other programs. If they want to make icons, they should be use photoshop or a kind of that. And I can say there are many non-GUI trigger used in that map
 
I mean the passive abilities like kunkka, lifestealer, storm spirit..etc..
Buff detection or a DDS.
Buff detection is detecting damage through buffs and removing them instantly, and most DDS' use damage types to deal and separate damage.

If they join Hive it will be awesome, and they will create many other maps, and helping other modder....
PlayDotA community just won't accept that. They view the Hive as of a lesser rank, workers for the illustrious likes of them. The bad part is that most of those people there with bad attitudes don't even know how to reflect damage and do simple things, and flag most suggestions 'uncodeable'.

It has no hope. People there are never open-minded and live like pros.
 
Status
Not open for further replies.
Top