1. Want to make a short map for the June 30 Custom Game Night? Check out AvatarsLord's Map Challenge!
    Dismiss Notice
  2. Join in on Icon Contest #17 and show your interpretation of a legendary equipment set!
    Dismiss Notice
  3. Join us in our custom games night on Saturday, June 30. We'll see you on Battle.net and Discord!
    Dismiss Notice
  4. Texturing Contest #28 has come to an end; vote for your favorite swamp dweller here! You can vote up to 3 entries.
    Dismiss Notice
  5. The Maxwell vs PrinceYaser Icon Challenge has come to a finish. See the results here!
    Dismiss Notice
  6. We've created the Staff Job Openings thread. We're currently in need of icon, video production, and social/multimedia positions to be filled. Thank you!
    Dismiss Notice
  7. Music Contest #10 Retro is out! Join us for some retro/vintage fun!
    Dismiss Notice
  8. Don't be stagnant - embrace change! The time has come to evolve and join the Techtree Contest #12 - Evolution.
    Dismiss Notice
  9. On May 20th a new law about privacy and data processing comes into work in the EU. I am no lawyer and I need help figuring out if we comply and if not, what we must do about it. Please message me if you can provide any assistance. Read more. Ralle
    Dismiss Notice

What is your preferred language for developing Warcraft III maps?

Discussion in 'Warcraft Town Hall' 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. MindWorX

    MindWorX

    Blizzard Developer

    Joined:
    Aug 3, 2004
    Messages:
    680
    Resources:
    5
    Tools:
    1
    Tutorials:
    4
    Resources:
    5
    We are trying to gather a bit of survey data about the different languages in use by the community today.

    Please poke everyone you know, so we can get as much information as possible.
     
  2. Abovegame

    Abovegame

    Joined:
    Jan 2, 2016
    Messages:
    418
    Resources:
    1
    Maps:
    1
    Resources:
    1
    As of recently i started using JASS so there goes my vote. I may sometime take a shot at Wurst. It seems promising.
     
  3. BloodSoul

    BloodSoul

    Joined:
    May 10, 2009
    Messages:
    589
    Resources:
    2
    Spells:
    2
    Resources:
    2
    I chose JASS, because of compatibility in general, and that for a long time I refused myself to use anything that depends on a third-party software (good old vanilla WE). However, unfortunately, there are some things lacking in JASS, as many users are already aware of, such as:
    • Not being capable of using globals/englobals anywhere, not even in the map header;
    • Having to null local variables;
    • It doesn't have features like structures, nor classes (One of the reasons why vJass exists).
    So, sometimes my code ends up being quite weird and unreadable in order to accomplish some things.


    However, I recently started using Wurst for its features such as anonymous functions, closures, extension functions, the amount of libraries that come out of the box, cascade operator, its OOP style which facilitates my code a lot, specially when implementing libraries to my map. Wurst also significantly reduces the amount of time I take to make something - No need to type needless keywords. Besides, it also introduces the compiletime preprocessor for object editing, which is quite nice and better organized if compared to ObjectMerger.
     
    Last edited: May 31, 2018
  4. ScrewTheTrees

    ScrewTheTrees

    Joined:
    Jan 13, 2017
    Messages:
    24
    Resources:
    1
    Tutorials:
    1
    Resources:
    1
    As you know sweetheart, i like produce in pure jass.
    But i would love to have native vJass syntax and some extended functionality, as long as it doesnt compile to weird shit x)
    Also add support for multiple globals blocks!
     
  5. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    6,231
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Why? How would this influence the trigger editor?
     
  6. Mechanical Man

    Mechanical Man

    Joined:
    Jan 18, 2005
    Messages:
    5,240
    Resources:
    39
    Models:
    30
    Icons:
    3
    Packs:
    1
    Maps:
    4
    Tutorials:
    1
    Resources:
    39
    When not using GUI, I use pure JASS, mostly to keep compatibility with original editor in case something goes wrong with 3rd party tools.
     
  7. Bannar

    Bannar

    Joined:
    Mar 19, 2008
    Messages:
    3,073
    Resources:
    20
    Spells:
    5
    Tutorials:
    1
    JASS:
    14
    Resources:
    20
    I use both, Wurst and vJass.
    Willy, if you want I can create multiple accounts to vote for the language you want to win, hehs.

    Sure, I'll poke all my andrews and pleb friends to vote!
    Thanks for doing the poll, appreciated!

    Some notes:
    - cJass is buggy, cannot be really used for public resources
    - vrJass, Ruke never finished it really
    - Zinc has some internal issues, though knowing the limitations, it's fine to use it. However, vJass, his brother in arms, is superior in every aspect

    - GUI/ plain Jass is what most new ppl use because despite living in 2018, downloading 3rd party tools scares them (honest, sad truth)
    - vJass has easier learning curve compared to Wurst (for new coders coming from plain Jass)
    - Wurst offers modern features such as unit tests and compiletime functions

    Thus, the decision comes down to:
    - keep/ merge GUI/ plain Jass
    - not breaking compatibility with vJass and Wurst
     
    Last edited: May 30, 2018
  8. A]mun

    A]mun

    Joined:
    Dec 4, 2007
    Messages:
    677
    Resources:
    0
    Resources:
    0
    Mostly GUI, sprinkled with some JASSy functions and custom scripts.

    I would probably use a lot more JASS, but i am still drawn towards the visual appeal of the GUI - somehow text only code is still hard for me to grasp.
     
    Last edited: Jun 7, 2018
  9. Kaijyuu

    Kaijyuu

    Joined:
    Jun 2, 2004
    Messages:
    827
    Resources:
    0
    Resources:
    0
    I use JASS but solely because of forward compatibility. Many, many maps became unmaintainable due to using old worldedit hacks that didn't work with the new version. Were I to vote for which one I felt does the job best aside from that, it'd be either vJASS or Wurst.

    EDIT: Switched vote to vJASS because I imagine that's closer to the answer you're looking for, actually.
     
  10. The_Silent

    The_Silent

    3D Modeling Reviewer

    Joined:
    Feb 4, 2008
    Messages:
    2,603
    Resources:
    144
    Models:
    36
    Icons:
    87
    Packs:
    8
    Skins:
    12
    Maps:
    1
    Resources:
    144
    Jass/vJass, but only because that is what I'm familiar with. Jass/vJass is by no means great, it is bulky as heck. Turning it more c++ or c# like would be great. Aka, making it more object-oriented would be great. I need those classes man.
     
  11. Aniki

    Aniki

    Joined:
    Nov 7, 2014
    Messages:
    490
    Resources:
    4
    Spells:
    1
    JASS:
    3
    Resources:
    4
    What bugs do you have in mind?

    I find cJass quite nice actually:
    Code (C):

    define {
        void = nothing
        int = integer
    }

    // for loop
    for (int i = 0; i < 10; i++) {

    }

    // lexical scoping of local variables / local variable declaration freedom
    // this feature alone is worth a lot in "my book"
    void foo() {
        vblock {
            int x = 4
            BJDebugMsg(I2S(x))
        }

        vblock {
            int x = 5
            BJDebugMsg(I2S(x))
        }
    }
     
    Macros do come in-handy when one wants to generate repetitive code.
    Of course you gotta be careful with macros that are used in an expression context:
    Code (C):

    define Mul(a, b) = a * b
    int x = Mul(1 + 1, 2)
    // =>
    int x = 1 + 1 * 2 // probably not what we wanted

    // we need to wrap the macro's arguments in parenthesis
    define Mul(a, b) = ((a) * (b))
    int x = Mul(1 + 1, 2)
    // =>
    int x = ((1 + 1) * (2))
     
    But, as someone's uncle once said, with great macro power comes great 'typeunsafetability' =)
     
  12. Wareditor

    Wareditor

    Joined:
    Jan 16, 2009
    Messages:
    489
    Resources:
    2
    Maps:
    2
    Resources:
    2
    vJass using the Cohadar's Jasshelper for faster compile time and additional features.
     
  13. Kyrbi0

    Kyrbi0

    Joined:
    Jul 29, 2008
    Messages:
    7,138
    Resources:
    1
    Models:
    1
    Resources:
    1
    I voted for GUI and Other.

    GUI: because that's basically all I do. Is nice & simple, comes stock with every version of the game, ultimate compatibility, and I essentially never make anything that needs a more complex solution. Occasional use of Custom Script, whatever that is.

    OTHER: because the only thing I use more than GUI is the Object Editor. Yes. Boo, hiss.
    But let's be honest here; even as it currently exists, the OE is chock-full of interesting even unused abilities which, properly modified, provide a wide range of possible functionalities. If it were possible to "fix" some primary issues with the OE:
    - Buff Stacking (aside from Auras & 1-2 other abilities, no standard 'buffed' ability can stack with the buff of a custom ability based off of itself)
    - Minimize/remove 'hard-coded' ability data fields (e.g. Targets Allowed, Durations, un-dispellable Doom, un-level-able Runed Bracers, Incinerate only working in the original, etc etc)
    - Enable modification of buffs' positive or negative nature (i.e. a buff -> debuff or vice versa without a miscolored Buff icon tooltip, and with proper AI interaction (i.e. would seek to get rid of buffs-turned-into-debuffs, etc))
    - Fix Spell Steal to work properly with custom buffs
    - and more...

    I tell you that would be an unprecedented boon to modding & an amazing step forward in World Editor functionality.
     
  14. Kam

    Kam

    Blizzard Associate Producer

    Joined:
    Aug 3, 2004
    Messages:
    2,541
    Resources:
    22
    Models:
    8
    Icons:
    2
    Maps:
    12
    Resources:
    22
    Please voice your opinion on this. We are basing some decisions off the feedback we receive.
     
  15. Kyrbi0

    Kyrbi0

    Joined:
    Jul 29, 2008
    Messages:
    7,138
    Resources:
    1
    Models:
    1
    Resources:
    1
    And here I thought that was obvious... ^_^

    Good stuff! I've done my part.
     
  16. moyackx

    moyackx

    Joined:
    Feb 15, 2006
    Messages:
    768
    Resources:
    7
    Maps:
    4
    Spells:
    2
    Tutorials:
    1
    Resources:
    7
    I've put jass and vJASS because it's the base code system and Lua because it was good enough for a macro/static language system. By suspecting that the purpose of this survey is to define which language will be implemented NATIVELY in WE, then it would be logical to extend to vJASS for the sake of compatibility in older maps.

    My question is: in the imaginary case of having a tendency with languages like zinc or wurst (or vrJASS), Blizzard will endorse the usage of Java in the WE itself??
     
  17. Retera

    Retera

    Joined:
    Apr 19, 2008
    Messages:
    594
    Resources:
    2
    Models:
    1
    Maps:
    1
    Resources:
    2
    It's hard for me to vote since GUI is not an option, but rather "I don't program maps" is an option. And, ideally, I would multi-vote all of JASS/vJASS/GUI.
    As a kid, I learned first the GUI, then JASS programming, then Java programming, then vJASS, and more recently I have returned to using the GUI when possible, sometimes with a customized TriggerData.txt and TriggerStrings.txt to add new functions -- in combination with JASS and vJASS. I like the drafting power of the GUI, but it would be terrible and limited without the utility of JASS.
    The ideal solution would be a programming IDE, where you have a context-sensitive GUI suggestion when typing something. Just like how I choose "Unit" in the GUI, then move on to choose, "Create Unit Facing Angle" it is convenient when an IDE provides the ability for me to type the letter "u", it suggests "unit", then I type the ".c", and it suggests "create", so that I result in coding:
    Code (Text):
    unit.create(
    ...Without doing more effort than it would have taken to leverage the suggestion utility of GUI, since I only typed 3 characters, "u.c".

    Maybe I could live in a world where I only coded purely in JASS/vJASS if there was a function in the advanced JASS editor that allowed me to click on a unit in the Terrain Editor and insert
    Code (Text):
    gg_unt_Hpal_0003
    as necessary. As it stands currently, I am not going to type something like that in JASS, but instead write some GUI system that references that character by clicking on it, because this feels more convenient. Then, perhaps I might convert it to JASS if I need increased utility.

    Edit: I voted for JASS/vJASS because my biggest project was originally a game mod, so I code by modifying an external "Scripts\Blizzard.j" override and then importing it into the vanilla world editor. I just don't do this for my big project because it wouldn't be compatible with a general-case Blizzard.j override. The override has to be pure JASS to function, but when possible for spurious mapping I download vJASS systems to allow myself to use structs and the library/scope keywords, to overcome the obvious lack thereof in the original world editor. The ability to wrap plain JASS code in the "library" or "scope" keyword to simply say "this block is in phase 2" or "this block is in phase 1" to determine the ordering of function definitions, instead of the vanilla world editor being locked to Trigger creation order, is incredibly powerful. But, ultimately you can accomplish the same with the map header script, it's just less visually appealing and more time consuming to copy between maps.
     
    Last edited: May 31, 2018
  18. 00110000

    00110000

    Joined:
    Aug 27, 2012
    Messages:
    75
    Resources:
    14
    Models:
    14
    Resources:
    14
    I largely use GUI with some imported jass systems because you honestly don't need much to make a fun map. A lot of people tend to over complicate things by having wicked systems and stats but still tend to fall short on actually having a fun map that many would want to play.
     
    Last edited: Jun 3, 2018
  19. pOke

    pOke

    Joined:
    Mar 24, 2013
    Messages:
    1,062
    Resources:
    1
    Maps:
    1
    Resources:
    1
    I mainly use vanilla JASS but often use vJass because of some nice features that make life easier.
     
  20. karlek

    karlek

    Joined:
    Dec 31, 2017
    Messages:
    6
    Resources:
    0
    Resources:
    0
    Map making with Wurst has simplified the collaboration process a lot. Mainly, since it enables version control for our project. Both for triggers and object definitions by codifying the units, spells and buff objects. Also, many of the very unintuitve memory leaks are fixed automatically. No longer do I need to null all the variables in every code path before returning.
     
Thread Status:
Not open for further replies.