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

    DwarfBoy

    Joined:
    Dec 31, 2012
    Messages:
    130
    Resources:
    1
    Maps:
    1
    Resources:
    1
    As someone who can code about as well as... well, non-porgrammers, I naturally prefer the GUI in the trigger editor. It's simple, straight-forward, and I can look at the pictures and simple texts and go "hey, I know how that works!"
     
  2. Dr Super Good

    Dr Super Good

    Spell Reviewer

    Joined:
    Jan 18, 2005
    Messages:
    26,131
    Resources:
    3
    Maps:
    1
    Spells:
    2
    Resources:
    3
    vJASS

    This is because it allows access to features otherwise impossible to access such as global variables. It also can make certain common programming tasks easier such as grouping parallel arrays together and managing instance allocation via structs.

    That said instead of natively supporting the language, it would be better if the editor natively supported post build scripts. Such scripts could run command line arguments to JassHelper or other JASS build systems. The WorldEdit JASS syntax checker ultimately runs just before assembling the map MPQ, hence meaning it does not require being disabled.
     
  3. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    8,378
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    As someone who's worked extensively in GUI, JASS, vJass, Zinc and failed in an endeavour to make a custom syntax "Luck" (which had some similarities to Wurst) I can say the following:

    GUI is by far the best interface for configuration of in-game constants. It is extremely useful to identify to a new user of my resources "hey this is where you can set the special effect art, the speed the unit travels, and the number of dummy units created".

    JASS is a great resource for creating a backbone for systems, where the user has full access to all functions and access to more variables. It has the advantage over vJass that it does not require a 3rd party tool (JassHelper) to parse.

    vJass is the "ideal" language for WarCraft 3 because you can declare variables (globals blocks), automatically prefix function and/or variable names by putting them in scope (private functions/variables), or force the placement of script in the output war3map.j file (library/requires).

    Wurst I've never used, but the other languages included in your post are buggy/deprecated.

    Syntax Highlighting would be amazing. It would drop the need for TESH. By default, HiveWorkshop syntax highlighting looks the best.

    In summary vJass is the ideal language for building core systems, but if GUI could interact with vJass in some way I feel WarCraft 3 could go in an awesome new direction.

    My vision would be to have all triggers be GUI/vJass hybrids by default, where when one adds a "Custom script" line the editor allows as many lines of script as desired. Each of these triggers has its own namespace and GUI variable lists (optionally) exclusive to itself (private).
     
  4. Adorm

    Adorm

    Joined:
    May 20, 2011
    Messages:
    59
    Resources:
    0
    Resources:
    0
    Hey, just figured I'd give some input on this matter. The GUI is a wonderful tool but can easily be enhanced via the use of Jass when someone has knowledge in programming concepts. Blizzard should provide an accessible Jass API from which map developers can learn from - as opposed to reverse engineering triggers in text format from the GUI.
     
  5. SpasMaster

    SpasMaster

    Joined:
    Jan 29, 2010
    Messages:
    1,908
    Resources:
    4
    Icons:
    2
    Maps:
    2
    Resources:
    4


    I was about to write down my opinion and then @Kyrbi0 seems to have already said it.
    I basically use GUI only, which can have its limitations, which is why I always wanted to get into Jass coding, but never managed to find the time and will for it. From what I've read over the years, GUI is sub-optimal and you can pretty much be more efficient with your code when writing it yourself in Jass. But what if the Jass code behind all the GUI functions simply gets more optimized so that there wouldn't be much difference between the two methods? Sorry if I am talking nonsense here, just thinking out loud. :)

    P.S: Oh yes, Object Editor improvements, specifically to how the Editor handles buffs/debuffs would be just great. Stacking & Positive/Negative buffs have been a thorn in the butt for ages.
     
  6. Velmarshal

    Velmarshal

    Joined:
    Mar 9, 2008
    Messages:
    1,531
    Resources:
    0
    Resources:
    0
    Only GUI pretty much.
    It is an excellent tool for new mappers, people unfamiliar with coding and people who don't want to bother with coding (me).
    Aside from some specific functions, like detecting and keeping track of damage, I have never needed any scripts or code in my maps.

    But certainly wouldn't mind an expansion of GUI capabilities. xD
     
  7. Empirean

    Empirean

    Joined:
    Jun 20, 2014
    Messages:
    390
    Resources:
    8
    Spells:
    8
    Resources:
    8
    i like using triggers cause you dont really need to study the language too much just code and test.
     
  8. Chaosy

    Chaosy

    Tutorial Reviewer

    Joined:
    Jun 9, 2011
    Messages:
    11,065
    Resources:
    18
    Icons:
    1
    Maps:
    1
    Spells:
    10
    Tutorials:
    6
    Resources:
    18
    Wurst by miles, there is no competition.
    Zinc comes second
     
  9. Donach

    Donach

    Joined:
    Jan 12, 2011
    Messages:
    98
    Resources:
    1
    Tutorials:
    1
    Resources:
    1
    For those who never tried WURST: Guys, this is "the thing". It offers so much functionality... No reason to repeat, just head over to their website.
    For project where there is more than 1 guy involved, there is nothing better. We are 3 coders using Git and it works totally amazing (not only the versioning, but the scripting as well :)).
    What can be not liked on "features" like this?
    Now more than ever with 24 player support! :D (we are not using it... yet)

    Code (Text):
    init
        let t = CreateTrigger()
        for int i = 0 to 9
            t.registerPlayerChatEvent(players[i], "-", false)
        t.addAction(function commands)
    Wurst all the way!
     
  10. I voted for these three: Zinc syntax is the most comfortable. Wurst is the most feature-rich. JASS can be inlined to GUI triggers and gives you most control over resulting bytecode.
     
  11. StoPCampinGn00b

    StoPCampinGn00b

    Community Manager

    Joined:
    Apr 2, 2013
    Messages:
    2,462
    Resources:
    1
    Maps:
    1
    Resources:
    1
    I kind of like how this thread is turning out. Programming language nationalism patriotism is on the rise!

    Also I've attached the promo image used to promote this poll in other places; hopefully we'll see some more outside perspective. In short, yes, please spread the news in whatever appropriate way possible.

    Anyway, great work MindWorX and thanks everyone for participating in this thread with votes and posts.
     

    Attached Files:

  12. Napoqe

    Napoqe

    Joined:
    Jul 7, 2011
    Messages:
    242
    Resources:
    0
    Resources:
    0
    You from Blizzard invented I think, a creator of game that is easy-to-understand, powerful and a few moments fun to use for me. One of the motives I bought Warcraft 3 and its expansion, is back to make games and play custom maps. I used my brother's game. I met Warcraft 3 because of the Dota.

    I admit that I encouraged Valve to create a similar tool, but to this day, they not did.

    One of the cons of Warcraft 3 is still game you need to buy digitally, since Dota 2 and Stacraft 2 Arcade are free. You can make free play Warcraft 3 custom maps, but to create and edit maps would require have the game purchased.

    I voted only for GUI, never needed to learn Jass. But Jass I think good to avoid having to click too much. Because of the World Editor, I wish to be a creator and developer of games. I had a good sensation to be when I was developing the Noob Map in 2009 to 2012, receiving feedbacks from friends. And having fun with own games I made.

    I wish you expanded the GUI and Jass.

    And do not make the same problem that Stacraft 2 data editor. I bought game I got disappointed, had little alternative to custom games, the data editor of Starcraft 2 I did not get to learn and I think hard to learn.
     
  13. pusha1999

    pusha1999

    Joined:
    Jan 7, 2014
    Messages:
    68
    Resources:
    0
    Resources:
    0
    i use turbo pascal with qbasic :)
     
  14. Sedistra

    Sedistra

    Joined:
    Apr 27, 2018
    Messages:
    4
    Resources:
    0
    Resources:
    0
    Zinc 'cause syntax.
    Wurst 'cause features.
     
  15. Chaosy

    Chaosy

    Tutorial Reviewer

    Joined:
    Jun 9, 2011
    Messages:
    11,065
    Resources:
    18
    Icons:
    1
    Maps:
    1
    Spells:
    10
    Tutorials:
    6
    Resources:
    18
    Nani?!
     
  16. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,436
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Which are?
     
  17. Glint

    Glint

    Joined:
    Dec 28, 2014
    Messages:
    72
    Resources:
    2
    Maps:
    1
    Spells:
    1
    Resources:
    2
    I voted for Jass, vJass, Wurst, and GUI.

    I don't know if it is a bad idea but it would be awesome if there is an object-oriented feature in GUI. Adding the option to create local variables within triggers. Optimizations with the generated Jass code in GUI. Anything you could do in Jass should be added in GUI. Then an online feature within the World Editor in which you could browse and download resources like custom triggers, object data, and imports. Map-makers do not need to copy-paste triggers from one map to another anymore.

    It will blow my mind if Blizzard is able to pull off something like that.
     
  18. Lord_Earthfire

    Lord_Earthfire

    Joined:
    Oct 5, 2008
    Messages:
    354
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Even though i got a good knowledge of jass, sonehow i find myself using some weird conglomerate of gui with many custom scripts and jass functions that i wrote in my map header to optimize the whole mess a bit (things like orbital coordinate transformation or easy system index creation, destruction and allocation... Yeah, my code looks messy, thx for asking). But the reason is that im far more confortable with gui. When i would get my arse up and trigger more jass systems i would switch to that conpletely, i think.


    Above that, i think i could overall agree with what bribe said. To add to this, jass highlighting is just so much needed to get overview upon your coding, because else i always have problems finding things or debugging.

    Edit: Above that, i would really like to see an easiely accesable database of the jass functions. I know we got multiple tools and tables that contain them, but what lead me for a long time to stick to gui instead of jass was that i just don't know the natives and fiddling them out of tables was just tedious.
     
  19. Rui

    Rui

    Joined:
    Jan 7, 2005
    Messages:
    8,529
    Resources:
    8
    Maps:
    8
    Resources:
    8
    Stability is prized above all else for Protoss and Night Elves alike. So, for me, vanilla JASS is the way to go.

    Occasionally I felt the need for OOP-oriented features, and since vJASS is finished and has remained stable, I eventually explored it. I had been using global blocks a lot prior to that, anyway.

    I confess to being a little lazy on wanting to learn new syntaxes, so I've been postponing indefinitely getting to know Wurst.
     
  20. Jampion

    Jampion

    JASS Reviewer

    Joined:
    Mar 25, 2016
    Messages:
    1,287
    Resources:
    0
    Resources:
    0
    I vote for Wurst.
    I went from GUI to Jass to vJass to Wurst and it was steady improvement.
    Wurst speeds up coding a lot: a powerful standard library that covers all things you often need, support for version control systems, less verbose syntax

    Aside from being a better language overall, it also adds completely new possibilities with compiletime functions and object editing.
    My map uses an item recipe system. I only have to specifiy shop, item name, whether it is an recipe, icon, description, gold cost and required items. The rest is handled by the system.
    Recipe's gold cost is reduced by the gold cost if its requirements and the items will be sorted by gold cost in the shop.

    Code (WurstScript):

    public constant ITEM_ID_EMERALD_PENDANT = compiletime(newItem("Emerald Pendant", SHOP_MAGICAL_3, true, "BTNAmulet"))

    function itemEmeraldPendant(int itemId)
        if compiletime
            itemId.getTypeDef()
            ..setDescription("item descirption...")
            ..setGoldCost(3500)
            ..addRequirement(ITEM_ID_SKULL_PENDANT)
            ..addRequirement(ITEM_ID_GEM_OF_HEALTH)
            ..addRequirement(ITEM_ID_GEM_OF_MANA)[/INDENT]
     
    I can't even imagine how long it would take to create them in the objects editor. And if I wanted to change an item's gold cost, I would have to change the gold cost of items, you can build from it and update the button positions of the items in this shop, so they are sorted by gold cost again.

    In the end I think you need to try wurst by yourself to see how good it is. I was sceptical at first, doubting it would be as good as the people said that were using it.
     
Thread Status:
Not open for further replies.