What is your preferred language for developing Warcraft III maps?

What is your preferred language for developing Warcraft III maps?

  • Jass

    Votes: 80 27.4%
  • vJass

    Votes: 87 29.8%
  • cJass

    Votes: 9 3.1%
  • Lua

    Votes: 18 6.2%
  • Zinc

    Votes: 13 4.5%
  • Wurst

    Votes: 46 15.8%
  • vrJass/vrJass2

    Votes: 2 0.7%
  • I don't program maps directly. I just use the trigger GUI.

    Votes: 173 59.2%
  • Other

    Votes: 10 3.4%

  • Total voters
    292
  • Poll closed .
Status
Not open for further replies.
Level 20
Joined
Jan 1, 2009
Messages
1,525
@Unryze I don't care what you do or not do, but your sheer ignorance is annoying. As @yatyfornetreg said, do whatever you feel works for you, but stop going around saying "this is the best way, anyone saying different is a bad person. There is nothing to be improved on in this workflow".
You aren't open to discussion. You say you hate working with "C/C++/LUA/Java" and prefer Jass. 90% of what you say are moot points, showing lack of experience. Sorry I can't take anything you say serious.
 

Chaosy

Tutorial Reviewer
Level 39
Joined
Jun 9, 2011
Messages
13,110
@Unryze
While Frotty is occasionally rude, how is that relevant?
Seriously, are you going to dismiss an entire language because of ONE person. That seems highly illogical to me.
That's like saying "I hate all white people and everything they touch" because one white person was rude to you.

I refuse to accept that native JASS is quicker than a language like Zinc or Wurst.
Why?
Because it literary takes less characters to type.

JASS:
function derp takes nothing returns nothing

Wurst:
function derp()

Zinc:
function derp()

There is no way you are getting around this barrier.
An experienced coder as you presumably are, might make it work decently well, but ultimately it would be even better with any remotely decent language.

The only benefit of writing pure JASS is that you might get better performance. Ultimately, low abstracted code is always the most optimal if used correctly.
Problem is, it takes more time, harder to maintain.

For example, if I want to make a fully coded spell, I could use a indexing method to keep updating all instances of my spell.
OR
I could use a linked list module which is 1 line of code for implementation and then a 4-row loop. This process takes 1 minute in wurst, if not less. If I coded that in vjass it would take at least 5.
I would be genuinely impressed if you can match that.

Maybe, with some hyper fingers and experience you could match it, but ultimately it is way more difficult with an uglier result

TLDR: to me it seems like you are willingly handicapping yourself for no good reason, yes you might gain some slight optimization but ultimately wc3 does not need it. People are making maps in GUI without issues, and that is highly inefficient.
 
Level 9
Joined
Apr 14, 2016
Messages
223
@Unryze I don't care what you do or not do, but your sheer ignorance is annoying. As @yatyfornetreg said, do whatever you feel works for you, but stop going around saying "this is the best way, anyone saying different is a bad person. There is nothing to be improved on in this workflow".
You aren't open to discussion. You say you hate working with "C/C++/LUA/Java" and prefer Jass. 90% of what you say are moot points, showing lack of experience. Sorry I can't take anything you say serious.
Quote where I ever said that this is the best way, just once quote something, instead of pulling information out of air. And if you had any brain cells, you would have understood that I meant the syntax LOOK, and not the language itself, just *facepalm*. Quoting myself: "I never said my way is any good for newcomers, in fact I said it will be hard for them, I should have added I do not expect anyone to work in such way, as it is VERY hard as you just said in the beginning, quoting myself: "this is by no means good for beginners / normal people, but for some people that are like me, this is certainly good." meaning I do not expect anyone to work in such way, just if they would like to, it might be the way to go for them, which will be like 0.01% of WC3 mapmakers." TL;DR - learn some manners.
@Unryze
While Frotty is occasionally rude, how is that relevant?
That is why I had "A little off-topic here:", and because after I posted in the thread he did a rate with the comment I quoted, please read what I wrote carefully.

Seriously, are you going to dismiss an entire language because of ONE person. That seems highly illogical to me.
That's like saying "I hate all white people and everything they touch" because one white person was rude to you.
You did not understand what I meant at all, let me rephrase. "Once a tool is being promoted by a very rude/improper person it leaves a very bad "taste" and makes you not pay attention to it, due to build up of negative emotions towards it, that's it. And dismissing it or not is my personal choice, so is yours to work with whatever you decide fits you.

I refuse to accept that native JASS is quicker than a language like Zinc or Wurst.
Why?
Because it literary takes less characters to type.

JASS:
function derp takes nothing returns nothing

Wurst:
function derp()

Zinc:
function derp()
By speed, I meant the overall ignorance of any code building process, but if you mean direct typing, then yes, any other "wrapper" will work better, but that does not mean they are faster as well, anyways, I doubt I should explain this any further, unless you really do want me to.

There is no way you are getting around this barrier.
An experienced coder as you presumably are, might make it work decently well, but ultimately it would be even better with any remotely decent language.
I never said it is ultimately better, but in WC3 I really doubt the very much necessity of said actions, sorry, but it just does not work that way. Let me elaborate, I myself worked with memhack and made a full-proof anti-hack for 1.26a, worked on my own bots, that I use on Garena/Rubbatle.net, if you want link, I will send it to PM, do not want to have it counted as advertising. What I mean is, it all comes to your own preference. Let me repeat, the only thing I said, I like the syntax VISUALLY, despite it having TOO MUCH useless stuff to write, nonetheless visually it is more appealing to ME.

The only benefit of writing pure JASS is that you might get better performance. Ultimately, low abstracted code is always the most optimal if used correctly.
Problem is, it takes more time, harder to maintain.
Again this comes down to personal preference and experience. And don't forget anything you do in WURST or ZINC ultimately comes back down to Jass, and you are dependent on how they will assemble the code, which is generalized and can't be as optimized as possible, even if said optimization is very minuscule.

For example, if I want to make a fully coded spell, I could use a indexing method to keep updating all instances of my spell.
OR
I could use a linked list module which is 1 line of code for implementation and then a 4-row loop. This process takes 1 minute in wurst, if not less. If I coded that in vjass it would take at least 5.
I would be genuinely impressed if you can match that.
Or you could use hashtable and make the process much faster. For example it takes me up to 30~ minutes to write 6 full spells, where one affects every other and changes their behaviour, even less if I had systems ready for them, etc. It won't take me much to demonstrate it, or to yet again show parts of the code, I am open to such discussion.

Maybe, with some hyper fingers and experience you could match it, but ultimately it is way more difficult with an uglier result
How can you really say so, have you tried it? Do you have experience with it? I am typing quite fast, so for me it is barely a problem, but I do make shortcuts myself, to shorten the time consumed, but working with .j directly makes me ignore waiting time of WE or any other tool, etc, which I said already multiple times.

TLDR: to me it seems like you are willingly handicapping yourself for no good reason, yes you might gain some slight optimization but ultimately wc3 does not need it. People are making maps in GUI without issues, and that is highly inefficient.
1. Again depends on personal view, you can't view this as anything efficient, I won't argue with you, and I only said, to me it is.
2. WC3 DOES need optimization I can point to 99% of maps that suffer from it, thus resulting FPS drops, so no, WC3 is not in just need, it is in DIRE NEED of it.
3. GUI ultimately produces a MUCH worse result that anything, especially because it uses functions from blizzard.j that are in most cases just wrappers, but in some they have leaks by default.

TL;DR judging is good and all, but you need to look at things from objective side and not be subjective.
 
Level 9
Joined
Apr 14, 2016
Messages
223
I think I have a few hundred FPS in wc3, drops are hardly an issue that is worth the extra effort to avoid.
The engine is limited to 64, rest is just wasted, so far as I can remember, unless they removed FPS cap, which they did not. Meaning that you program will report a higher FPS, but it is limited to 64, unless you do what we did on Warcis to remove the limit and allow it to take as much as your GPU/CPU can handle, but that DOES NOT mean you get overall more FPS or more GPU/CPU power, meaning something that dropped 10 frames, will be multiplied by the multiple of FPS that was raised.
I do not play a lot of maps but among those select few that I do play I have never noticed any visible performance hit.
I played a lot of maps before, I use bots to host them and see people talking about different maps, and a LOT of them suffer from this, why else would I point it out? That is why I said, objective > subjective, you need to check much more things, in order to put a global point, so far you have used personal experience, that is limited by very closed up amount of maps, which seems reasonable.
Most maps that suffer from this are people who make their first map.
I suggest you to take a look at Chinese maps, or even Anime Maps (they are even worse than normal maps overall) and you will find that people that made tons of maps before, still fail to do anything good with it.

I did not intend to come here and fight or argue, but I was left with no choice, for which I am sorry, but I must stand my point and explain things, so others could read and learn from them. I did not intend to be rude to you, if I was, I will apologize for it. If there is anything else you want me to explain, will be glad to do so o/
 
Last edited:

Chaosy

Tutorial Reviewer
Level 39
Joined
Jun 9, 2011
Messages
13,110
The engine is limited to 64, rest is just wasted, so far as I can remember, unless they removed FPS cap, which they did not. Meaning that you program will report a higher FPS, but it is limited to 64, unless you do what we did on Warcis to remove the limit and allow it to take as much as your GPU/CPU can handle, but that DOES NOT mean you get overall more FPS or more GPU/CPU power, meaning something that dropped 10 frames, will be multiplied by the multiple of FPS that was raised.

I played a lot of maps before, I use bots to host them and see people talking about different maps, and a LOT of them suffer from this, why else would I point it out? That is why I said, objective > subjective, you need to check much more things, in order to put a global point, so far you have used personal experience, that is limited by very closed up amount of maps, which seems reasonable.

I suggest you to take a look at Chinese maps, or even Anime Maps (they are even worse than normal maps overall) and you will find that people that made tons of maps before, still fail to do anything good with it.

I did not intend to come here and fight or argue, but I was left with no choice, for which I am sorry, but I must stand my point and explain things, so others could read and learn from them. I did not intend to be rude to you, if I was, I will apologize for it. If there is anything else you want me to explain, will be glad to do so o/

Does not really matter if it is limited or not. If I have 200 FPS, and drop 100. I will still have a visible 64 FPS which is unchanged.

And while you claim to have a broader (and objective) view, you have not played every single map, probably not even 1% let's be honest seeing as dozens of maps gets released every day. So an completely objective view is impossible.

Which is why I can only speak from what I have seen myself. Admittedly, I do not play Chinese nor anime maps, perhaps the issue is larger there. Even in that case, you are basically saying that unless you are making certain types of maps your approach is not optimal.

Correct me if I am wrong, but C is often use for AAA games because of low abstraction which leads to better performance in good hands. Difference is:
1. Due AAA games being demanding for both CPU and GPU optimization actually matters, unlike for my 32x32 3v3 arena map. (for example)
2. C is actually not complete garbage like JASS so it is not a large drawback to begin with

If you want to create a super large map with a lot of heavy systems, your workflow might be worth a shot. But otherwise, I really see no upside
 
Level 9
Joined
Apr 14, 2016
Messages
223
Apologizing for the off-topic beforehand...

Does not really matter if it is limited or not. If I have 200 FPS, and drop 100. I will still have a visible 64 FPS which is unchanged.
You do not understand the concept of FPS at all, sorry, but that is just a fact. If you want to see how much FPS you really do get in WC3, you need to use /fps respectively and not a third-party software. And again, just for the information, WC3 uses one CPU core, meaning that no matter how strong GPU you will get, at some point your CPU will bottleneck it. As for the "200 to 100 FPS drop" you will have 64 to 32 FPS in reality, which IS a big deal, please do some test and you will instantly find it happening, if you want a great example of FPS drops, check maps like Fight of Anime, Anime Final Battle or even worse Naruto Legend (giving you the worst maps with best examples for you to understand, unless you just don't want to).

And while you claim to have a broader (and objective) view, you have not played every single map, probably not even 1% let's be honest seeing as dozens of maps gets released every day. So an completely objective view is impossible.
I ask you to provide a quote, where I say anything like that, all I said, that you have subjective view and type of thinking that is it, please do not speculate or imagine things, that you would find fitting you. As for the 1%, I do not want to spend my time proving you otherwise, but for your information, there are people that can prove that I do check most of the new maps, mostly Chinese ones, so that at least is not 1%, making you being wrong, again.

Which is why I can only speak from what I have seen myself. Admittedly, I do not play Chinese nor anime maps, perhaps the issue is larger there. Even in that case, you are basically saying that unless you are making certain types of maps your approach is not optimal.
Again you are speculating for no real reason, or you have not read what I've wrote at all, let me repeat. Unless you see BADLY coded or BADLY optimized maps, you won't understand why and how optimization is needed, period.

Correct me if I am wrong, but C is often use for AAA games because of low abstraction which leads to better performance in good hands.
Nothing to correct here, but it does not work with GUI, which is a wrapper for Jass, because it uses BJ functions, as I've mentioned earlier.

Difference is:
1. Due AAA games being demanding for both CPU and GPU optimization actually matters, unlike for my 32x32 3v3 arena map. (for example)
2. C is actually not complete garbage like JASS so it is not a large drawback to begin with
1. Again, optimization matters in WC3 as well, I fail to understand how you can't comprehend this, especially when it is known, that due to WC3 1 core usage, usually it is not GPU, but CPU instead. And even 1 character with very bad abilities, can cause the map to drop FPS or even fatal error.
2. C is clunky by its own nature, but JASS is based off around C, and no Jass is not garbage, especially when anything you make still comes back to it, so your point is unclear.

If you want to create a super large map with a lot of heavy systems, your workflow might be worth a shot. But otherwise, I really see no upside
Again, please do read what I've wrote before I have no intention or will to repeat myself, if you do not want to understand, that is your choice, but in that case, please do not reply about it, as we are really going off-topic...
 
Last edited:
Level 20
Joined
Jan 1, 2009
Messages
1,525
Ah right, throwing around insults really undermines the points you were trying to make here.
Oh wait, it actually makes me disregard your posts even more than before.
It's frustating, because you are blatantly resisting any criticism/discussion and are even getting offensive/offended for no reason, yet have the audacity to judge other people and their opinions harshly.

@Chaosy Even AAA games nowadays make widespread usage of highly abstracted languages, especially on mobile. The core/engine might still be written in a language that's closer to hardware, but this is usually not what level designers/content developers use. And even then, people are moving to better alternatives like Rust.

And as usual, performance drops, especially in chinese maps, rarely come from "unoptimized jass". Mostly those come from overuse of special effects or massive periodic execution and general bad program design. See Program optimization - Wikipedia - there are much bigger pain points in those chinese maps than saving a few instructions in the output Jass code.
 
Level 9
Joined
Apr 14, 2016
Messages
223
Ah right, throwing around insults really undermines the points you were trying to make here.
Oh wait, it actually makes me disregard your posts even more than before.
It's frustating, because you are blatantly resisting any criticism/discussion and are even getting offensive/offended for no reason, yet have the audacity to judge other people and their opinions harshly.
Excuse me, but where did I insult you, unless you mean the part about "brain cells" the rest however does not contain even a slight idea of insult, however you fail to see your own insults, so please, do save this for someone else, this is getting really old.

@Chaosy Even AAA games nowadays make widespread usage of highly abstracted languages, especially on mobile. The core/engine might still be written in a language that's closer to hardware, but this is usually not what level designers/content developers use. And even then, people are moving to better alternatives like Rust.
Can't argue with this, this is indeed true, however not in most cases, but still stands true.

And as usual, performance drops, especially in chinese maps, rarely come from "unoptimized jass". Mostly those come from overuse of special effects or massive periodic execution and general bad program design. See Program optimization - Wikipedia - there are much bigger pain points in those chinese maps than saving a few instructions in the output Jass code.
Partially being correct, I've chosen a small specter of maps, to make the search as narrow as possible, and no, if you would see the outcome of YDWE and a lot of useless code iterations, you would understand the reason. Especially when same spell visually coded by them and me, have a drastic difference in FPS drops, mine do not drop any, theirs drop on each cast from 5 to 15, not just initial cast.

However I do admit I was unclear about what exactly did I mean, by "optimization" I mean general clean up of everything related to leaks/bad programming/bad logic/overuse of any data, etc. Maybe my understanding of optimization is different, is so, please do correct me, but you imply, that leaks are pointless as well and they don't cause any problems? Alright then, but I doubt that stands true at all. After all removing leaks is considered a part of code optimization after all...
 
Last edited:
Level 12
Joined
Mar 24, 2011
Messages
1,082
Alright. Let us keep the discussion civil and on-topic.
I think that's outa the window now... guess you'll have to waive the Banhammer

Just to keep it on topic; Go, Go, GUI GO!
And JASS when and where required. (As you can have multiple choices :) )
I don't like using 3rd party software/extensions, which if I am not mistaken is every single one of the other choices. (and the ones that are not on the poll)

Also, I love how everyone has ignored the comment about the eastern "hackers"
I have the feeling that this should be discussed further, maybe in another topic...

regards
-Ned

PS: @MyPad I haven't forgotten about your screenshots ;)
 

EdgeOfChaos

E

EdgeOfChaos

Vjass, because it is closest to the original JASS which I already know, and provides all the necessary features/abstraction to code complex things effectively. It doesn't require me to download a separate IDE or learn a new language. All it needs is the JASSHelper, which plugs right into the editor and just adds functionality instead of trying to re-invent everything.

It shouldn't come as any surprise that GUI will be the overwhelming "winner", though. Gui allows non-programmers to make maps, as well as 'casual' map makers who don't need to do anything complicated. And really, users should only care enough to learn the other languages if they need them or are just interested in learning some coding. For most map makers, GUI will be perfectly fine. Having it as an option significantly lowers the learning curve required to make a game, and that is a good thing.

Also: there should be no elitism or looking down upon those who use GUI.
There is a map called Monter2, written in GUI. It is also probably the best map on wc3 right now. If you put it in a 3D engine, you would have a professional quality Dark Souls game; all done in GUI. Meanwhile there are lots of non-fun maps written in whatever script-based language you want. Each language has different use cases, choose the one that suits you.

If you want to make mapmaking experience better for the majority of users: improve GUI editor. Specifically arithmetic and stuff like that, it sucks bad right now. And add more natives + a GUI equivalent.

(FYI I'm a software engineer.)

(edit)
JASS:
function derp takes nothing returns nothing

Wurst:
function derp()

Zinc:
function derp()

There is no way you are getting around this barrier.
With autofill, all you have to do is type f derp t n r n. It will autocomplete the rest of the syntax for you. It takes about 0.5 seconds longer to type out. This doesn't seem like a reason to switch. Also: if your coding speed is limited by typing speed, rather than thinking through what you're doing, planning, etc., then you are writing very trivial programs.
 
Last edited by a moderator:
Level 6
Joined
Dec 28, 2014
Messages
81
In my last two post in this thread, I kept talking about GUI should be improved. My suggestion is to modernize the workflow for GUI map makers. But I never talked about Custom Script improvements: Jass.

I think the best way to modernize Jass:
- Built-in Syntax highlighting and Intellisence
- Allow shorter syntax similar to cJass or Wurst
- Backwards compatibility of the long syntax: Legacy syntax
- In my GUI suggestion: object-oriented GUI but when you translate it into custom script, it becomes an object-oriented Jass. Similar to vJass.
- Support multidimensional array, bitwise operator, lambda expressions, generics, anonymous functions and other techniques. This things can be added on the future versions.
- Jass and Object Editor integration


Also allow the users to add plugins in the World Editor similar to WEX but a lot more easier to use:
- Users can create their own GUI functions, custom GUI functions can be submitted in the online feature of the World Editor for everyone to use.
- Allow to add custom compilers, make them also downloadable in the online feature. This will make new users easily download vJass or Wurst.
- If map makers open a map with an unsupported plugin, it will still open but disables those plugin. If available online, suggest the map map maker to download the plugin to make the map work properly.
- Official map protection.

EDIT: What I meant about custom GUI functions, you could translate Jass into GUI. You could create your own Condition/Action Text, add labels to the arguments. This can prevent GUI users to use Custom Script when the resource they are using heavily rely on Jass.
 
Last edited:
Level 18
Joined
Dec 12, 2010
Messages
2,065
There are no elitism from JASSers towards GUI, it's about we constntly tell people "move onto jass, its really sooo simple", and yet there are crybabies "nah im not a programer its too hard". Thats where irritation grows up. Not to say its physically hurts to read GUI code while it's just fine for pure jass.

Issues about wc3 is amount of engine work on background. I'd like to cut plenty of things which are unused in my map, and memehack the only way to do that, reducing overheat a bit. But I have to go deep to find each outdated mechanics which consumes time with no real purpose.

Also, the only map protection could work out with full-time blizzard support, and yet they dont care about editor, as stated on it's loading frame.
 
Level 9
Joined
Apr 14, 2016
Messages
223
There are no elitism from JASSers towards GUI, it's about we constntly tell people "move onto jass, its really sooo simple", and yet there are crybabies "nah im not a programer its too hard". Thats where irritation grows up. Not to say its physically hurts to read GUI code while it's just fine for pure jass.

Issues about wc3 is amount of engine work on background. I'd like to cut plenty of things which are unused in my map, and memehack the only way to do that, reducing overheat a bit. But I have to go deep to find each outdated mechanics which consumes time with no real purpose.

Also, the only map protection could work out with full-time blizzard support, and yet they dont care about editor, as stated on it's loading frame.
If we would get an overall control of these actions that would be indeed great, however there is a list of possible things that can work as good or even better instead:

1. Automatic leak/garbage removal, so we don't have to null things or what not, meaning they are cleared off memory once they are not used at all.
2. Allow more than one CPU core to be used for WC3, allowing it to actually have real 100+ FPS and making it more durable with even poor code from mapmakers.
3. In-game ability to change unit/ability/buff data, and I mean all of it, we did get some of it in newer patches, but still ;)
4. Rewrite all of blizzard.j or make GUI use natives instead, some of the functions just have their variables changed in place, making it have no sense.

Personally I would love to see a lot of things in Warcraft 3 rewritten, however having a game holding up for 15 years and still holding its own against newer Dota 2 is just astonishing. Also we are finally back on-topic, yay!
 
Level 1
Joined
Jun 11, 2018
Messages
3
中国制图界一直与国外有交流,但也保留了相当大的独立性。未来war3制图圈应该会同时存在两大体系,大概是YDWE&w3x2lni和WE&wex&wurstscript。究竟那个更好,需要时间检验吧。语言方面初学用GUI,熟练后可以学jass,vjass,zinc这些语言,最后可以学lua。lua可以脱离war3使用,对于war3这个未来不明确的游戏是很重要的。
 
Level 13
Joined
Jun 13, 2016
Messages
497
1. Automatic leak/garbage removal, so we don't have to null things or what not, meaning they are cleared off memory once they are not used at all.

Implementing garbage collectors isn't an easy feat and can introduce more issues than it's worth, especially in a codebase as old as WC3. Determining when and how something should be collected isn't as straightforward either. Locations are probably the biggest offender here.

2. Allow more than one CPU core to be used for WC3, allowing it to actually have real 100+ FPS and making it more durable with even poor code from mapmakers.

Multi-threading isn't a magic bullet. You can't just throw more threads at a game and have better performance. JASS is fundamentally single-threaded and has no synchronization capabilities, and introducing them would break the code in incompatible ways (and inexperienced modders won't know how to use them effectively anyway). Introducing multi-threaded code in other areas of the engine would require a substantial redesign of the engine architecture. Likely not worth the investment either.

3. In-game ability to change unit/ability/buff data, and I mean all of it, we did get some of it in newer patches, but still ;)

Not all data can be dynamically changed since a lot of it seems tied to static definitions of object data, which means that if you change it - you change it for all of them. Probably something that can be worked around with, but it raises memory consumption.

Personally I would love to see a lot of things in Warcraft 3 rewritten, however having a game holding up for 15 years and still holding its own against newer Dota 2 is just astonishing. Also we are finally back on-topic, yay!

Cokemonkey wrote an excellent post before explaining that things have to justify the cost-to-benefit ratio. Rewriting may sound easy in your head, but for an engine as old and forgotten as WC3 it is no easy feat. They stated repeatedly that a lot of the knowledge has been lost to time, as well as tooling related to the engine. It's very hard to work on old codebases even if some of the old people are around. It gets exponentially harder when you have an all-new team.

Not to mention that rewriting a large portion of any project brings with itself many new hurdles and challenges:
- How do you maintain backward compatibility?
- How do you not break functionality that relied on existing bugs?
- How do you make the new systems work correctly with the old ones?
- How do you make sure you don't introduce more new bugs in place of the old ones?

None of these questions have easy answers to them. Don't fix what ain't broke. WC3 ain't broke, either. Most maps perform just fine as is, performance isn't the biggest of Warcraft's concerns - accessibility, ease of use, and tooling are. Like I said earlier in my previous post, help the community help you.
 
  • Like
Reactions: pyf
Level 4
Joined
Jun 28, 2009
Messages
45
中国制图界一直与国外有交流,但也保留了相当大的独立性。未来war3制图圈应该会同时存在两大体系,大概是YDWE&w3x2lni和WE&wex&wurstscript。究竟那个更好,需要时间检验吧。语言方面初学用GUI,熟练后可以学jass,vjass,zinc这些语言,最后可以学lua。lua可以脱离war3使用,对于war3这个未来不明确的游戏是很重要的。

Google translated just for ease of reading. The following content does NOT represent my point of view.

The Chinese WE community has always had exchanges with English countries, but it also retains considerable independence. The future war3 WE circle should have two major systems at the same time, presumably YDWE&w3x2lni and WE&wex&wurstscript. Which is better, it takes time to test it. Language beginners use the GUI. After they are skilled, they can learn jass, vjass, zinc and finally lua. Lua can be used out of war3, and it is important for war3 which is not clear in the future.
 
Last edited:
Level 9
Joined
Apr 14, 2016
Messages
223
Implementing garbage collectors isn't an easy feat and can introduce more issues than it's worth, especially in a codebase as old as WC3. Determining when and how something should be collected isn't as straightforward either. Locations are probably the biggest offender here.
There are left overs from in the engine however, that you can implement, but most of them are used to clear cache/memory after you finish a game, which also is not active by default, took Karaulov some time to enable it. However, it might not be "as easy" and I never said it is, but it IS indeed useful, or you could at least give mapmaker choice to enable/disable it.
Multi-threading isn't a magic bullet. You can't just throw more threads at a game and have better performance. JASS is fundamentally single-threaded and has no synchronization capabilities, and introducing them would break the code in incompatible ways (and inexperienced modders won't know how to use them effectively anyway). Introducing multi-threaded code in other areas of the engine would require a substantial redesign of the engine architecture. Likely not worth the investment either.
Fun fact, it is. Right now, if you pile a lot of garbage on 1 core, it will require a straight up higher core clock to maintain its function fully, which I've mentioned before, meaning if the load will be spread, you will have much more window for actual FPS and load spread, that will result in lower FPS drops, or remove them all together as one core will handle that and rest will handle the frame rate. Speaking of "Jass has no synchronization" is very strange, and I doubt that has actual proof, but I may be wrong, can't say for sure, but I would like to see some information on this. Again, I am only suggesting, not saying it is NEEDED or UNAVOIDABLE, however yes, it will take them to remake the whole engine, which is truthfully not really worth their time, which I do agree with.
Not all data can be dynamically changed since a lot of it seems tied to static definitions of object data, which means that if you change it - you change it for all of them. Probably something that can be worked around with, but it raises memory consumption.
Not true at all, especially when memhack can do it for single units, because each unit has memory dedicated to him, therefore you can affect a selected unit and not affect anyone else, exactly what Blizzard is slowly but surely fixing with their SetUnitName.
Cokemonkey wrote an excellent post before explaining that things have to justify the cost-to-benefit ratio. Rewriting may sound easy in your head, but for an engine as old and forgotten as WC3 it is no easy feat. They stated repeatedly that a lot of the knowledge has been lost to time, as well as tooling related to the engine. It's very hard to work on old codebases even if some of the old people are around. It gets exponentially harder when you have an all-new team.
Why do you people keep assuming for other people how they think of anything, it is more proper to ask them how they imagine it happening, instead of assuming. Also, yet again, I never said it was easy, however when users like Karaulov can dig up their data and fix it with external dll, you really should start thinking about if it is as hard as people tell you to. Or take a look at RenderEdge, you will find things he did mentioned by Blizzard as impossible, so there is that.
Not to mention that rewriting a large portion of any project brings with itself many new hurdles and challenges:
- How do you maintain backward compatibility?
If the final data is handled by the core in the same way, you don't break the compatibility, meaning if data to process it receives is the same, it takes developer to only make the core to be able to spread the load evenly, it will take them to rewrite the logic of course, but it should not be straight up breaking compatibility, that is not how it works.
- How do you not break functionality that relied on existing bugs?
Could you elaborate? This seems unclear and a bit out of place.
- How do you make the new systems work correctly with the old ones?
A question back, how do you not make it work? What I mean is, that essentially you change the LOGIC, not whole ACTION, but again it also depends on those who code it. And as I said, you can take a look at things I mentioned before, memhack or RenderEdge or even NetEase platform with their external dlls. Yes, this is not the same as rewriting the core and making it use more cores, but it should not be anywhere close to straight up breaking anything, that is just not how it works.
- How do you make sure you don't introduce more new bugs in place of the old ones?
This question is overshadowed by patches 1.27 to 1.29, you can never be sure, same goes to mapmakers, whenever you do something, you test it, that's how you make sure it works, that is normal, is it not?
None of these questions have easy answers to them.
They are not that hard, but you are trying to make it sound hard for no real reason, this is a discussion, not a war ;)
Don't fix what ain't broke.
You should not write something like this, especially if you look yet again at patches 1.27a to 1.29, so what you are saying, is that Blizzard did a poor job, and these kinds of comments are what makes others look bad.
WC3 ain't broke, either.
Did I say it is? All I said it lacks optimization and could use improvements... urgh.
Most maps perform just fine as is
Please do take a broader look at maps, that are not on hive, those maps that are not approved here or are just straight up badly made, you will understand, how this statement is incorrect...
performance isn't the biggest of Warcraft's concerns - accessibility, ease of use, and tooling are. Like I said earlier in my previous post, help the community help you.
Performance is the biggest issue, if you look at things from a broader perspective, as I have said many times before, to judge globally you need more information and in my displeasure too many mapmakers are bad at coding and cannot make maps that don't drop FPS, which results in a dire need of someone to fix said issues, and the best one there is has to be Blizzard if they make the engine stronger overall.

P.S. can we please stop this? Yet again we are derailing ;/
 
Last edited:

EdgeOfChaos

E

EdgeOfChaos

There absolutely is elitism over languages. Throughout this entire thread the theme is: "if you don't use wurst, then you don't know what you're talking about and aren't a good mapmaker."

I'm just pointing out that this is absolutely false. Even GUI can be used to create high quality maps. Too many people are missing the point. It's not about the what language the code is in, it's about the game that comes from the code.

Seriously.. I see this attitude all the time in real life and it irritates me here as it does there. Different languages have different use cases. Language wars are ridiculous and makes the SE profession look like a joke.
 
Last edited by a moderator:
Level 6
Joined
Dec 28, 2014
Messages
81
We should consider most popular maps started out using GUI and how limitations causes Warcraft 3 to lose it's playerbase. An example of a popular map is Dota: about it's history. Eul created the basic concepts of the game by using GUI. For 5.xx, Guinsoo improved the game and started using custom spells through the use of both GUI and Jass. The modding community is still premature at that time and map developing tools were very limited. Concepts like MUI, taking advantage of Game Cache, return bug, and allocaters are not yet popular. Guinsoo felt the game engine is very limited to improve and fix the bugs of the game and moved on to create League of Legends. For 6.xx, Icefrog took advantage of the new concepts and made Dota popular worldwide. Again with the limitations of Warcraft 3, Icefrog moved on to Dota 2. Today, I believe DracoL1ch maintains an unofficial Dota 1 and trying his best to break those limitations by using memory hacks.

I'm happy about the decision of Blizzard by adding new features that originated from memory hacks. No need to break the rules to break the limits. Dota 1 will continue it's legacy, legally. Keep up the good work, Blizzard! Add more of this features in the future patches.

About programming language superiority. We do not need to stick with long syntax or force everyone to use something similar to Java. To state the problems of GUI is fine but I despise experienced people making fun of GUI users of their inexperience. No need to be so pushy.

Even if I use Jass/vJass/Wurst, I still respect GUI simply because I started from there. GUI needs to be improved in today's standards. Maybe ideas from visual programming (VPL) could be applied to GUI?
 
Last edited:
Level 13
Joined
Jun 13, 2016
Messages
497
P.S. can we please stop this? Yet again we are derailing ;/

If you don't want to derail the thread, then stop replying.

I just wanted to say that just because someone somewhere made a hack that made WC3 do more than it is intended to do, doesn't mean it is easy or straightforward. As someone who works in the industry, I know first-hand that software development has a lot of hidden problems, costs and issues.

Things cost money. Major overhauls require even more money. Developers in the US are expensive. Enthusiasts can spend all the time in the world working on their projects, but developers in big corporations can't - they are expected to deliver tangible results within acceptable timeframes while staying on the budget. I should've brought that up in the original post. This is something we all ought to remember before we drown Blizzard with all kind of insane requests like "rewrite the engine!" or "make it multithreaded!" or "give me 200 fps!".

Start with small things. Improve first what is easy to improve. Unit data, like you mentioned, is a good example of this. Auto-null would be good, too. Collection of temporary values like Location-s based on reference counting would go a long way as well. More natives for more functionality in both GUI and JASS will help spark a new interest in the western audience.
 

Chaosy

Tutorial Reviewer
Level 39
Joined
Jun 9, 2011
Messages
13,110
There absolutely is elitism over languages. Throughout this entire thread the theme is: "if you don't use wurst, then you don't know what you're talking about and aren't a good mapmaker."

I'm just pointing out that this is absolutely false. Even GUI can be used to create high quality maps. Too many people are missing the point. It's not about the what language the code is in, it's about the game that comes from the code.

Seriously.. I see this attitude all the time in real life and it irritates me here as it does there. Different languages have different use cases. Language wars are ridiculous and makes the SE profession look like a joke.

I do not think anyone in this thread has said that GUI is useless.
It is good for beginners but it a handicap.

There is a reason there are no GUI on a pro level, programming languages are text-only because that is simply better. (C++, Java, Python etc) never heard of a popular game coded in a GUI framework.

Even vanilla jass has more potential than GUI, it has nothing to do with wurst.
Some people can do decent stuff in GUI, tank commander comes to mind.
Except, he also knows jass, why is this? because you need to know jass in order to fully master GUI.
Just check Bribe's damage engine and unit indexer which is "GUI" but in reality is 50% custom scripts.

Which is why I do not think it is wrong to say that GUI is good for learning and not ideal in the long run.
If you need to learn JASS in the end you might as well use a text language rather than clinging to inefficiency.

Do not let me stop you from using GUI, I still have GUI stuff uploaded to the spell section which functions just fine, but it is slower and clunkier to use, that is basically my main concern with it.
 
Level 9
Joined
Apr 14, 2016
Messages
223
If you don't want to derail the thread, then stop replying.
... Are we really doing this, giving an advice you don't follow yourself? Anyways, let's discuss things you mention instead, which is on-topic ;)
I just wanted to say that just because someone somewhere made a hack that made WC3 do more than it is intended to do, doesn't mean it is easy or straightforward. As someone who works in the industry, I know first-hand that software development has a lot of hidden problems, costs and issues.
It is not a hack, it is just called like that, due to the way it operates, however the access was opened due to return bug that was found long time ago. Again, we are getting some of the functions in current patches based on the memoryhack, so your argument is kinda invalid, because it is based on "someone, somewhere made a hack that made WC3 do more than is intended to do". I suggest you to talk to DrakoL1ch about it, he might give a much broader answer on this. Problems exists everywhere, that is not something new, or something that should be mentioned.
Things cost money. Major overhauls require even more money.
Yes, but in this case there are already tons of READY material that is OPEN to be taken, however I do agree, that major overhaul won't be cost-efficient, but it does not mean we should not hope for it, now does it? I repeat (I guess you did not read my whole response that I have hidden in a spoiler): "I never said it MUST be done, it WOULD be NICE to HAVE".
Developers in the US are expensive. Enthusiasts can spend all the time in the world working on their projects, but developers in big corporations can't - they are expected to deliver tangible results within acceptable timeframes while staying on the budget. I should've brought that up in the original post.
And how does that have anything to do with this? They are spending money and time regardless, and no one is forcing them a time limit, so no, this is incorrect.

This is something we all ought to remember before we drown Blizzard with all kind of insane requests like "rewrite the engine!" or "make it multithreaded!" or "give me 200 fps!".
Requests are a thing that can be ignored/declined, thus there is no reason to react like you do, either calmly read and ignore, or post about it without smirks or useless derailing. Please do read more carefully next time.
Start with small things. Improve first what is easy to improve. Unit data, like you mentioned, is a good example of this. Auto-null would be good, too. Collection of temporary values like Location-s based on reference counting would go a long way as well. More natives for more functionality in both GUI and JASS will help spark a new interest in the western audience.
And finally we get to the only part your message should have contained. This is what I agree on fully, and people above you as well.
I really ask you, to refrain from further continuing derailing the conversation, I have answered your question, just accept it and go on, but do not continue this further, please.

On-topic message:

There are a lot of very good ideas mentioned by different people, and let's continue that instead of lashing on each other. I would pay very close attention to what Glint said, both on page 6 and on this page 7. After all, majority of people use GUI, thus enhancing it further will be a very good solution. What I mean is, if GUI does become more stable and with more functionality, that would be very good for majority of people. After all this thread is aimed to find what would majority like to see and how do they envision it. Let's just agree that each of us has his own perspective and choice and we need to respect that. What matter the most, is to try and help as many people as possible and find a middle-ground at everything.

I do not think anyone in this thread has said that GUI is useless.
It is good for beginners but it a handicap.

There is a reason there are no GUI on a pro level, programming languages are text-only because that is simply better. (C++, Java, Python etc) never heard of a popular game coded in a GUI framework.

Even vanilla jass has more potential than GUI, it has nothing to do with wurst.
Some people can do decent stuff in GUI, tank commander comes to mind.
Except, he also knows jass, why is this? because you need to know jass in order to fully master GUI.
Just check Bribe's damage engine and unit indexer which is "GUI" but in reality is 50% custom scripts.

Which is why I do not think it is wrong to say that GUI is good for learning and not ideal in the long run.
If you need to learn JASS in the end you might as well use a text language rather than clinging to inefficiency.

Do not let me stop you from using GUI, I still have GUI stuff uploaded to the spell section which functions just fine, but it is slower and clunkier to use, that is basically my main concern with it.
Unreal Engine 4 for example... you can use GUI that they give you, or even make your own functions with scripts, etc. Meaning in long run, for majority something easier to learn and faster to grasp is the way to go. I won't say I like GUI either or do I prefer it, but in no way can it be undermined like this. That is what EdgeOfChaos tried to explain, or at least I believe so. I will quote his: "Too many people are missing the point. It's not about the what language the code is in, it's about the game that comes from the code." <- this is something most people miss, you can use whatever you want, if the result is good, it is all good.

After all, there should be a reason why GUI is most popular and why a lot of people are asking to improve it.
 

Chaosy

Tutorial Reviewer
Level 39
Joined
Jun 9, 2011
Messages
13,110
Just because you CAN does not mean people do it.
If you can find a trustworthy article or something stating that a popular AA or AAA game is made entirely (or at least a large chunk) in a GUI I'll gladly admit being wrong.

I have very brief experience in Unity, where you can do some things in a GUI but not everything. Ultimately you need to attach to scripts in text form.
 
Level 9
Joined
Apr 14, 2016
Messages
223
Just because you CAN does not mean people do it.
If you can find a trustworthy article or something stating that a popular AA or AAA game is made entirely (or at least a large chunk) in a GUI I'll gladly admit being wrong.
I have very brief experience in Unity, where you can do some things in a GUI but not everything. Ultimately you need to attach to scripts in text form.
For Pete's sake... Games - Unreal Engine 4 you can find many others if you google it... I've worked in it before and a friend of mine is making a full game on it with custom models and such. The point was not about companies, it was that wast majority in game industry (apart from companies) benefit from easier ways to develop their game, which means GUI saves them a ton of time and provides nearly all necessary functions. Also where did I say "I can" on anything related to it? Please, start reading things more carefully, it is frustrating having to repeat myself and explain what you misunderstood.

You can add custom scripts in UE4 as well, but overall it has most of the needed functionality from the get-go.

The point was, that yes, coding directly will give you much more potential overall, but it won't work for MAJORITY, which is the essential part. No one will base their ideas or work around one or even small group of people, because it will bring them no merit.
 
Last edited:
Level 13
Joined
Jun 13, 2016
Messages
497
For Pete's sake... Games - Unreal Engine 4 you can find many others if you google it... I've worked in it before and a friend of mine is making a full game on it with custom models and such. The point was not about companies, it was that wast majority in game industry (apart from companies) benefit from easier ways to develop their game, which means GUI saves them a ton of time and provides nearly all necessary functions. Also where did I say "I can" on anything related to it? Please, start reading things more carefully, it is frustrating having to repeat myself and explain what you misunderstood.

You can add custom scripts in UE4 as well, but overall it has most of the needed functionality from the get-go.

The point was, that yes, coding directly will give you much more potential overall, but it won't work for MAJORITY, which is the essential part. No one will base their ideas or work around one or even small group of people, because it will bring them no merit.

You seem extremely defensive about your points and a bit abrasive. You're making it out to be too personal and it detracts from the point you're trying to make. Sorry if you disagree, but that's just how it's perceived. Just try to be more neutral.

About the whole GUI/JASS thing.

It seems like there are basically three very different communities represented here with very different backgrounds, experiences, and preferences.

1. There's the engineering crowd, people with a lot of experience in other programming languages who find both GUI and JASS clunky and stick to Wurst. Nobody here is saying that you can't build complex and fully-featured maps in either of those. The point we've been trying to make all this time, is that for people who have a programming background, both JASS and GUI are extremely jarring and unrefined tools, and working with them just makes us wish we had a better alternative. Which we do, which is Wurst.

As I and many other people stated here, we all admit that GUI is an excellent tool for beginners and for those who don't want to invest time and effort into learning something more productive. This is merely a side effect of our past experiences and the desire to develop quickly and efficiently like we would in other languages. Wurst is good enough for this purpose, and if GUI/JASS is extended with new functionality, we may benefit from it indirectly anyway.

Our deepest wish, however, is extending the tooling ecosystem and the functionality of the engine so that we can do more with what we already have.

2. The JASS/GUI crowd. I'm sorry, but a lot of the people in this category seem to miss the point that the engineering crowd is trying to make and take it as a personal attack on their methods. I'm sorry if it makes you feel so, but this really isn't our intention. Matter of fact is, Wurst is just objectively better than either GUI or JASS if you are an experienced developer and can take full advantage of it.

This is just fact. Better abstracted languages lead to better productivity if you can take advantage of them. Industry has shown this to be true over and over again. There's simply no arguing with it.

Emphasis on: if you can take advantage of it. Not everyone can, and that's totally fine by us! But that doesn't mean it's valid to dismiss our opinions and feedback as disregarding either JASS or GUI. We're not trying to do that.

On the flip side, a lot of people from the JASS/GUI crowd seem more than happy to dismiss Wurst as something unnecessary and useless. And this, naturally, aggravates us as engineers. A lot of people simply don't know about Wurst, even if it would benefit them.

By all means, make JASS and GUI better. But, please, don't disregard our opinions like that.

3. The Asian Lua and Netease crowd.

I honestly don't know much about either of these things. This is something that has never reached the western community (i.e. Hive), and most of us simply have no idea what you're talking about. There are no docs or articles or tutorials on how to take advantage of it in these parts, or just anything, outside of a few forum posts here and there, so most of us reading about it just meet it with blank stares and confusion.

It would greatly help if someone from that scene would come forth and make a thread detailing how the ecosystem works in there. Maybe even partner up with someone on Hive and post it as a news post. That would help bridge the gap immensely and help everyone learn about each other's differences.
 

Chaosy

Tutorial Reviewer
Level 39
Joined
Jun 9, 2011
Messages
13,110
The point was, that yes, coding directly will give you much more potential overall, but it won't work for MAJORITY, which is the essential part. No one will base their ideas or work around one or even small group of people, because it will bring them no merit.
Then I finally got my point across.
The only thing I have been saying is that GUI is good for learning but not for optimal play.

Also, your list is not what I meant. Just because a game is made in unreal engine does not mean it is made purely in the GUI, and indie developers do not represent how to optimally code either so they are not a good example to show "LOOK GUI IS AWESOME"
 
Level 9
Joined
Apr 14, 2016
Messages
223
You seem extremely defensive about your points and a bit abrasive. You're making it out to be too personal and it detracts from the point you're trying to make. Sorry if you disagree, but that's just how it's perceived. Just try to be more neutral.
No, just no. There is not even a hint of making it personal or anything, the point was given, misunderstood, then re-explained again, please do not shift anything of such on me, that is not cool.

About the whole GUI/JASS thing.

It seems like there are basically three very different communities represented here with very different backgrounds, experiences, and preferences.

1. There's the engineering crowd, people with a lot of experience in other programming languages who find both GUI and JASS clunky and stick to Wurst. Nobody here is saying that you can't build complex and fully-featured maps in either of those. The point we've been trying to make all this time, is that for people who have a programming background, both JASS and GUI are extremely jarring and unrefined tools, and working with them just makes us wish we had a better alternative. Which we do, which is Wurst.
You can find it anything you want, but no one needs or wants to hear it, did anyone here said Wurst is useless? No. Did someone here say that using pure Jass like I do is "old and useless"? Yes, Frotty did, and if we go further we will find people that promote Wurst to be constantly rude and forcing their thoughts on others, which is something you do right now as well.

As I and many other people stated here, we all admit that GUI is an excellent tool for beginners and for those who don't want to invest time and effort into learning something more productive. This is merely a side effect of our past experiences and the desire to develop quickly and efficiently like we would in other languages. Wurst is good enough for this purpose, and if GUI/JASS is extended with new functionality, we may benefit from it indirectly anyway.

Our deepest wish, however, is extending the tooling ecosystem and the functionality of the engine so that we can do more with what we already have.
Why do you assume they don't want to invest time or effort? This is exactly what we were trying to point out, your elitism, you have no right to assume, why they use GUI. For some it is straight up easier, that is it, period and they are neither lazy nor unable to learn something productive.

2. The JASS/GUI crowd. I'm sorry, but a lot of the people in this category seem to miss the point that the engineering crowd is trying to make and take it as a personal attack on their methods. I'm sorry if it makes you feel so, but this really isn't our intention. Matter of fact is, Wurst is just objectively better than either GUI or JASS if you are an experienced developer and can take full advantage of it.
It is you who is missing the point, please do read what others said and you will find out, that anyone that is not an elitist or rude, just stays neutral, but protects the choice of others, you on the other hand yet again undermine other languages for no apparent reason. I repeat, you can use Wurst or anything you want, but no one wants you to brag about it or you undermining other languages, you have no right to, period.

This is just fact. Better abstracted languages lead to better productivity if you can take advantage of them. Industry has shown this to be true over and over again. There's simply no arguing with it.
No one is disagreeing with this, however it does not mean that someone from Jass sphere cannot go toe to toe with someone from Wurst side, even if they are of the same level. Same goes to other languages as well, this is not how it works.

Emphasis on: if you can take advantage of it. Not everyone can, and that's totally fine by us! But that doesn't mean it's valid to dismiss our opinions and feedback as disregarding either JASS or GUI. We're not trying to do that.
You just did that in your post... Also using your own sentence I can then justify using memhack, because it allows to take advantage as well, but it is a good advantage in the long run? No, it is not. The point yet again is, stop being so assertive of your own Wurst and learn to understand others.

On the flip side, a lot of people from the JASS/GUI crowd seem more than happy to dismiss Wurst as something unnecessary and useless. And this, naturally, aggravates us as engineers. A lot of people simply don't know about Wurst, even if it would benefit them.
Quote where has this happened at all in this thread at least and even if they DID do that, why would you steep to the same level, that just makes no sense. Also engineer or not, that has no real connection here, and personal feelings should never be used as "facts" or "arguments", period.

By all means, make JASS and GUI better. But, please, don't disregard our opinions like that.
You are making people to do so, by your own actions, when will you understand this?

3. The Asian Lua and Netease crowd.

I honestly don't know much about either of these things. This is something that has never reached the western community (i.e. Hive), and most of us simply have no idea what you're talking about. There are no docs or articles or tutorials on how to take advantage of it in these parts, or just anything, outside of a few forum posts here and there, so most of us reading about it just meet it with blank stares and confusion.
Have you heard about RenderEdge? It is here on Hive and it is similar to what was discussed before, using external API to boost Warcraft 3 with more functionality. As for the Chinese part, take a look at YDWE, or download NetEase and check it out, and there are people that know about it.

It would greatly help if someone from that scene would come forth and make a thread detailing how the ecosystem works in there. Maybe even partner up with someone on Hive and post it as a news post. That would help bridge the gap immensely and help everyone learn about each other's differences.
This indeed would be great, but I doubt it will ever happen, because they use external API, which either Blizzard won't allow or it won't be implemented by default at all.

Then I finally got my point across.
The only thing I have been saying is that GUI is good for learning but not for optimal play.

Also, your list is not what I meant. Just because a game is made in unreal engine does not mean it is made purely in the GUI, and indie developers do not represent how to optimally code either so they are not a good example to show "LOOK GUI IS AWESOME"
What point? I stated from the beginning that directly working with code gives you more access, check out my very first post here.

Also I did not say GUI is optimal, all I was trying to explain to you, it is global and easier for majority of people, which is why it should be given attention.

There is no list that will specifically say it is full on GUI, if you want to understand it, download UE4 and work in it, then you will understand GUI there is VERY powerful.
 
Level 38
Joined
Sep 26, 2009
Messages
8,477
I think the learning curve is what throws people off of all this stuff, she the elitism of the crowd who thinks they've found a "strictly better" alternative.

I'll say it again in hopes of ending this dispute. GUI has its uses. You can get done some amazing things that might make people think you coded it in JASS, just as long as you do a good job.

Whatever is faster to code with, go with that. I can couch through GUI pretty fast as I know my way around it, but once the trigger gets past a certain number of lines or a certain threshold of custom script it makes sense to split off core components to raw text.

There is a true beauty and seamlessness in using both GUI and script. I think the Wurst guys have created something that works for them, but i honestly don't like how it's layered. It compiles to JASS in the end. I'd rather stick to JASS as it gives me more of a sense of control and I know the limits and the syntax already.
 

EdgeOfChaos

E

EdgeOfChaos

There is a true beauty and seamlessness in using both GUI and script. I think the Wurst guys have created something that works for them, but i honestly don't like how it's layered. It compiles to JASS in the end. I'd rather stick to JASS as it gives me more of a sense of control and I know the limits and the syntax already.
Exactly this. And this is why I hate the attitude of "real programmers use Wurst" as shown in the above few posts.

Have there even been any significant maps made in Wurst? Maybe they don't advertise it, but I haven't seen any..
 

Chaosy

Tutorial Reviewer
Level 39
Joined
Jun 9, 2011
Messages
13,110
Except I compared GUI to native jass and not wurst.

Indirectly, yes I also consider wurst to be better.
My personal preference is:
Wurst > zinc > vjass > gui > jass

Though I would mix in a fair lot of jass in the form of custom scripts, I find pure jass ugly but a necceary evil to utilize GUI.
If I could not use custom scripts I would put jass over GUI.

Something I (and most wurst users) have done is to actually try multiple languages.
While I think Wurst is objectively better because of the feature list, I can totally see someone hating wurst syntax and going for another text-based language instead.

My point was, and remains: The people who master GUI need to know JASS in order to be effective, at least in the current state of GUI where certain natives are missing. JASS also enables certain shortcuts in some scenarios. This is why I think GUI is inherently bad, if you are forced to use a decent chunk of jass anyway you might as well go for vjass at that point.

And it is not quite fair to compare a new language to something that is 15 years old (GUI) in terms of accomplishments. Wurst users are fewer due higher barrier to entry and is new, obviously there are less maps.

I think somewhere you could look though, is at the old 24h mapping 'contests', Frotty made some pretty decent maps within a short time span with wurst.
 
Last edited:
Level 13
Joined
Jun 13, 2016
Messages
497
Exactly this. And this is why I hate the attitude of "real programmers use Wurst" as shown in the above few posts.

The realities of software development are quite different from modding. Most of us have gone through dozens of other languages and we have no problem picking up a new language if it better suits our goals. I've personally gone through JASS, then cJASS and finally Zinc. At the time, Zinc seemed like a godsend to me, but when Wurst matured, I switched to it.

This isn't a religious war. We simply use the best tool in the box for us, the one that gives us most flexibility and productivity.
We aren't trying to be pretentious and be all like "oh you gui peasants", no. It's just that we base our decision off of our experience and expectations from a language, and we cite those expectations and experiences to explain why we feel that way.

If something better than Wurst came up on the western WC3 scene (like the Asian guys have Lua), I would switch to it in a heart-beat. It's that simple.

EDIT:

I feel like I need to point out something else.
So far, Wurst users here have pointed out many flaws and limitations within JASS and GUI and vJASS, explaining why we prefer Wurst to the rest.

So I pose this question to JASS and GUI users - why do you not use Wurst? I don't mean subjective things like "I find it easier" or "I'm used to it" or whatever. I mean lacking features, syntax, anything.

So far, all I've read here summed up to either:
- I learnt JASS first so I stick to it and don't want to try anything else. (Okay, fine)
- I dislike Wurst because of the community. (Hardly a valid criticism of the language itself)
- I dislike Wurst because I want to edit the JASS code directly. (Which is useful... when exactly? Wurst usually outputs much better code than you'd be able to hand-roll, applies a lot of useful optimisations, and generally does well. Your architectural choices matter more for performance than the code that Wurst outputs. I've yet to see any case where Wurst would output worse code than you'd write yourself for a certain scenario.)
 
Last edited:

Kyrbi0

Arena Moderator
Level 38
Joined
Jul 29, 2008
Messages
8,991
You may not be calling GUIers names, but to be clear it *does* happen, and not infrequently. Less so nowadays (and here on the Hive; Wc3C.net, love it though I may, was a hotnes of elitism. You should have seen the Judging I got for a Contest I entered GUI into....)
 
Level 13
Joined
Jun 13, 2016
Messages
497
You may not be calling GUIers names, but to be clear it *does* happen, and not infrequently. Less so nowadays (and here on the Hive; Wc3C.net, love it though I may, was a hotnes of elitism. You should have seen the Judging I got for a Contest I entered GUI into....)

I'm not denying that it did happen, but in my personal experience, the Wurst community by far was the most welcoming. I'll admit that one possible exception to this is Frotty, who may get into somewhat heated arguments - but he usually brings up very valid points. I can understand his frustration in these cases.
 
Level 11
Joined
Jun 2, 2004
Messages
849
User friendliness is GUI's main feature. That's not something that can be judged by established users who already know the ins and outs of everything; only new users.

GUI lets your average barely computer literate teenager make a tower defense in a day. Low barriers to entry is why wc3's modding scene was enormously successful and sc2's was... less so.
 

EdgeOfChaos

E

EdgeOfChaos

Let me clarify my previous comment. Has anyone made a WC3 map that is actually ever played, using wurst? After all, this is what matters, right? We're trying to make fun maps, not just... write cool-looking code that no one cares about? I'm legitimately not sure anymore.

All I found is this: WurstScript • Showcase and it's super broken, I am not reading through HTML markup to find out what the map is.

The realities of software development are quite different from modding. Most of us have gone through dozens of other languages and we have no problem picking up a new language if it better suits our goals.
I am learning scala and apache spark for work right now, I know plenty about picking up new technologies. But there needs to be a reason to do so. This transitions into my next point...

So I pose this question to JASS and GUI users - why do you not use Wurst?
Because vJASS does everything that I need it to do. That's the end. I had no need to ever look into it because I don't need anything that you can provide. The only thing I need is more natives from Blizzard to do things that are currently not possible (or only possible through hacky-methods). I am sure this is the reason for GUI and JASS users; their respective language does everything they need it to, for their use case. Why would they switch, then?

We seem to be thinking in the reverse order. I don't need a reason not to switch; I need a reason to switch. Let me put it this way. In order to switch and start using Wurst, I need to do the following

=> Spent 1-2 weeks of effort learning the new ways you do everything in this language
=> Install the new software required to use the language. Now I'm using 2 or 3 programs to write maps instead of 1.
=> Migrate all my in-progress maps over to wurst, if I want to use it in these maps.
=> Get used to the new workflow of using it (i.e. this no longer uses the world editor at all; im not sure how they do interactions with preplaced things, but I guarantee it's going to be worse because of this.)

After I do this, now I can use wurst as efficiently to update my maps and stuff as I can with vjass. This is the same reason why you don't go to a company currently using Java and say "This language sucks! It takes too long to type. Let's all switch to C++". It's simply not worth the effort for the benefit it provides. The most compelling reason to move from JASS -> vJASS is because you don't need to change anything; it only adds features, you can still use vanilla JASS if you like, it just has some extras for those who want it. The makers of Wurst tried to re-invent everything from scratch, and that will typically not go over well, hence the low adoption rate for such an apparently good language.

However, still: if you don't need the features of vJASS, then there is no reason to move to it.

sigh.. i guess the point I am trying to make is:

Maybe wurst is better for you. That's fine. I don't care if you use it or vote for it in the poll. But stop acting like it's objectively better than GUI/JASS/vJASS. It's not. There is no "best" language, it depends on the user and what you want to do with it. Like this is why I hate it when people ask me whether Java or C++ is better; neither is better. They're just different. No one likes this answer for non-WC3 languages, and I guess no one in the WC3 community likes it either. Everyone needs to have their "best" language...

And you can be a 'real' programmer and/or SE regardless of what language you use, because programming is not about whether you type extra syntax or not. Programming is about the logic and ideas that are the core of programs. Syntax doesn't matter, and using 'syntax sugar' like lambda expressions doesn't make you any better at this. You can even write algorithms and program logic without the use of ANY programming language at all. Use English words, or pictures, idc, it's still just as valid.

Statements like this:
1. There's the engineering crowd, people with a lot of experience in other programming languages who find both GUI and JASS clunky and stick to Wurst.
...
2. The JASS/GUI crowd. I'm sorry, but a lot of the people in this category seem to miss the point that the engineering crowd is trying to make and take it as a personal attack on their methods.
Are ridiculous. You, of all people, should know that being an SE does not require the use of any specific language. Like you can even be a software engineer working in goddamn visual basic and it doesn't mean you're any less of an engineer.

Maybe a more fair comparison is C (which has virtually no abstraction) vs Java (very high level and abstract). If all you're going to do is hardware, then all you need is C, you should never switch and you're no worse of a programmer because you're not using abstraction.
 
Last edited by a moderator:

Kyrbi0

Arena Moderator
Level 38
Joined
Jul 29, 2008
Messages
8,991
Re: the reason we mod -- honestly what you described is just one facet. There are a myriad of reasons why people mod; making (playable) maps is just one of them.

Re: a reason to switch -- I totes agree. This is precisely why I've stick to my "bare bones GUI + Object Editor"-style of "coding"; I almost literally need nothing else. Those tools are sufficient for my purposes.
 
Level 13
Joined
Jun 13, 2016
Messages
497
Let me clarify my previous comment. Has anyone made a WC3 map that is actually ever played, using wurst? After all, this is what matters, right? We're trying to make fun maps, not just... write cool-looking code that no one cares about? I'm legitimately not sure anymore.

All I found is this: WurstScript • Showcase and it's super broken, I am not reading through HTML markup to find out what the map is.


I am learning scala and apache spark for work right now, I know plenty about picking up new technologies. But there needs to be a reason to do so. This transitions into my next point...


Because vJASS does everything that I need it to do. That's the end. I had no need to ever look into it because I don't need anything that you can provide. The only thing I need is more natives from Blizzard to do things that are currently not possible (or only possible through hacky-methods). I am sure this is the reason for GUI and JASS users; their respective language does everything they need it to, for their use case. Why would they switch, then?

We seem to be thinking in the reverse order. I don't need a reason not to switch; I need a reason to switch. Let me put it this way. In order to switch and start using Wurst, I need to do the following

=> Spent 1-2 weeks of effort learning the new ways you do everything in this language
=> Install the new software required to use the language. Now I'm using 2 or 3 programs to write maps instead of 1.
=> Migrate all my in-progress maps over to wurst, if I want to use it in these maps.
=> Get used to the new workflow of using it (i.e. this no longer uses the world editor at all; im not sure how they do interactions with preplaced things, but I guarantee it's going to be worse because of this.)

After I do this, now I can use wurst as efficiently to update my maps and stuff as I can with vjass. This is the same reason why you don't go to a company currently using Java and say "This language sucks! It takes too long to type. Let's all switch to C++". It's simply not worth the effort for the benefit it provides. The most compelling reason to move from JASS -> vJASS is because you don't need to change anything; it only adds features, you can still use vanilla JASS if you like, it just has some extras for those who want it. The makers of Wurst tried to re-invent everything from scratch, and that will typically not go over well, hence the low adoption rate for such an apparently good language.

However, still: if you don't need the features of vJASS, then there is no reason to move to it.

sigh.. i guess the point I am trying to make is:

Maybe wurst is better for you. That's fine. I don't care if you use it or vote for it in the poll. But stop acting like it's objectively better than GUI/JASS/vJASS. It's not. There is no "best" language, it depends on the user and what you want to do with it. Like this is why I hate it when people ask me whether Java or C++ is better; neither is better. They're just different. And you can be a 'real' programmer regardless of what language you use, because programming is not about whether you type extra syntax or not. Programming is about the logic and ideas that are the core of programs. Syntax is just noise, it doesn't matter.

Fair enough. I see your point. Personally, I found Wurst's killer features (lambdas, clean syntax, proper inheritance, compiler optimizations, auto-null, generics, stack-traces, error handling, procedural object data generation, standard library, etc.) well worth the temporary hurdle of switching over, especially since I already abandoned my last project by the time I discovered Wurst. Ironically, the reason why I abandoned it was because I found Zinc an increasingly huge headache to deal with as my project progressed.

If you find that these features are not worth switching over, well, I can only say that you are actually missing out. You can't really tell how much nicer it feels to use Wurst compared to JASS until you actually try it. If you tried it and felt it wasn't worth the effort - okay, I get behind that. It's weird to me, but whatever, I just like my abstractions.

I would still highly recommend going through the 1-2 week transition period if you're starting a new project. If you have existing projects to support in other languages, I can get behind that.

I agree that using pre-placed objects in Wurst is somewhat clunky. Typically, you'd place all your stuff on the map inside WE, save the map, extract the JASS from it and put it in your Wurst folder, and you'd be able to access the preplaced stuff from within Wurst. Maybe there's a better workflow for it, but my map never did use preplaced objects anyway, so it's not my use case.

Also, I never implied that you aren't a 'real' programmer if you don't use Wurst. I implied the reverse - that a lot of people who came to the WC3 modding scene after other programming experience tend to gravitate towards Wurst - because it has more features that are expected of modern languages than anything else. It's a more familiar environment to someone with past programming experience than JASS or vJASS, where quite often you have to reinvent the wheel or get around other quirks.

And, yes, syntax is just noise. I just find that with Wurst you have far less noise than with JASS or vJASS or GUI. These are notoriously noisy, both in the syntax itself and the semantics of how the languages operate.

At any rate, it is not my intention to shove my opinions down anyone's throat. I'm just writing here to clear up some differences, both for those on the other side of the fence, and myself. At this point, I think we can agree to disagree. Thanks for elaborating your points.
 
Status
Not open for further replies.
Top