1. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  2. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still haven't received your rank award? Then please contact the administration.
    Dismiss Notice
  3. Lead your forces to battle in the 15th Techtree Contest. The call is yours, commander!
    Dismiss Notice
  4. The reforging of the races is complete. Come see the 14th Techtree Contest Results.
    Dismiss Notice
  5. It's time to choose your horse in the race - the 32nd Modeling Contest Poll is up!
    Dismiss Notice
  6. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

What is your preferred language for developing Warcraft III maps?

Discussion in 'Warcraft Discussion' started by MindWorX, May 30, 2018.

?

What is your preferred language for developing Warcraft III maps?

Poll closed Jun 13, 2018.
  1. Jass

    80 vote(s)
    27.4%
  2. vJass

    87 vote(s)
    29.8%
  3. cJass

    9 vote(s)
    3.1%
  4. Lua

    18 vote(s)
    6.2%
  5. Zinc

    13 vote(s)
    4.5%
  6. Wurst

    46 vote(s)
    15.8%
  7. vrJass/vrJass2

    2 vote(s)
    0.7%
  8. I don't program maps directly. I just use the trigger GUI.

    173 vote(s)
    59.2%
  9. Other

    10 vote(s)
    3.4%
Multiple votes are allowed.
Thread Status:
Not open for further replies.
  1. Frotty

    Frotty

    Wurst Reviewer

    Joined:
    Jan 1, 2009
    Messages:
    1,476
    Resources:
    11
    Models:
    3
    Tools:
    1
    Maps:
    5
    Tutorials:
    1
    Wurst:
    1
    Resources:
    11
    @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.
     
  2. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,813
    Resources:
    17
    Maps:
    1
    Spells:
    10
    Tutorials:
    6
    Resources:
    17
    @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.
     
  3. Unryze

    Unryze

    Joined:
    Apr 14, 2016
    Messages:
    68
    Resources:
    0
    Resources:
    0
    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.
    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.

    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.

    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.

    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.

    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.

    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.

    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.

    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.
     
  4. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,813
    Resources:
    17
    Maps:
    1
    Spells:
    10
    Tutorials:
    6
    Resources:
    17
    I think I have a few hundred FPS in wc3, drops are hardly an issue that is worth the extra effort to avoid.

    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.

    Most maps that suffer from this are people who make their first map.
     
  5. Unryze

    Unryze

    Joined:
    Apr 14, 2016
    Messages:
    68
    Resources:
    0
    Resources:
    0
    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/
     
    Last edited: Jun 12, 2018
  6. MyPad

    MyPad

    Spell Reviewer

    Joined:
    May 9, 2014
    Messages:
    1,430
    Resources:
    8
    Models:
    1
    Icons:
    2
    Maps:
    1
    Spells:
    3
    JASS:
    1
    Resources:
    8
    Alright. Let us keep the discussion civil and on-topic.
     
  7. Chaosy

    Chaosy

    Joined:
    Jun 9, 2011
    Messages:
    10,813
    Resources:
    17
    Maps:
    1
    Spells:
    10
    Tutorials:
    6
    Resources:
    17
    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
     
  8. Unryze

    Unryze

    Joined:
    Apr 14, 2016
    Messages:
    68
    Resources:
    0
    Resources:
    0
    Apologizing for the off-topic beforehand...

    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).

    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.

    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.

    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.

    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.

    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: Jun 12, 2018
  9. Frotty

    Frotty

    Wurst Reviewer

    Joined:
    Jan 1, 2009
    Messages:
    1,476
    Resources:
    11
    Models:
    3
    Tools:
    1
    Maps:
    5
    Tutorials:
    1
    Wurst:
    1
    Resources:
    11
    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.
     
  10. Unryze

    Unryze

    Joined:
    Apr 14, 2016
    Messages:
    68
    Resources:
    0
    Resources:
    0
    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.

    Can't argue with this, this is indeed true, however not in most cases, but still stands true.

    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: Jun 12, 2018
  11. nedio95

    nedio95

    Joined:
    Mar 24, 2011
    Messages:
    1,055
    Resources:
    1
    Spells:
    1
    Resources:
    1
    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 ;)
     
  12. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,502
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    Okay everyone, lets try to keep the thread on-topic and civil. Blizzard employees will be reading through the thread, and in addition of me not wanting them to read pointless bickering, you're just flat out embarrasing us.
     
  13. 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)
    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: Jun 13, 2018
  14. Glint

    Glint

    Joined:
    Dec 28, 2014
    Messages:
    68
    Resources:
    2
    Maps:
    1
    Spells:
    1
    Resources:
    2
    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: Jun 13, 2018
  15. DracoL1ch

    DracoL1ch

    Joined:
    Dec 12, 2010
    Messages:
    1,953
    Resources:
    2
    Tutorials:
    2
    Resources:
    2
    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.
     
  16. Unryze

    Unryze

    Joined:
    Apr 14, 2016
    Messages:
    68
    Resources:
    0
    Resources:
    0
    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!
     
  17. miao233

    miao233

    Joined:
    Jun 11, 2018
    Messages:
    3
    Resources:
    0
    Resources:
    0
    中国制图界一直与国外有交流,但也保留了相当大的独立性。未来war3制图圈应该会同时存在两大体系,大概是YDWE&w3x2lni和WE&wex&wurstscript。究竟那个更好,需要时间检验吧。语言方面初学用GUI,熟练后可以学jass,vjass,zinc这些语言,最后可以学lua。lua可以脱离war3使用,对于war3这个未来不明确的游戏是很重要的。
     
  18. DracoL1ch

    DracoL1ch

    Joined:
    Dec 12, 2010
    Messages:
    1,953
    Resources:
    2
    Tutorials:
    2
    Resources:
    2
    multicore apps arent that easy and its kinda equal to re-writing engine over again, wont happen from blizzard
     
  19. mori

    mori

    Joined:
    Jun 13, 2016
    Messages:
    439
    Resources:
    2
    Tools:
    1
    Tutorials:
    1
    Resources:
    2
    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.

    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.

    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.

    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.
     
  20. yatyfornetreg

    yatyfornetreg

    Joined:
    Jun 28, 2009
    Messages:
    41
    Resources:
    0
    Resources:
    0
    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: Jun 13, 2018
Thread Status:
Not open for further replies.