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

What kind of skills/expertise do I actually need for my map?

Status
Not open for further replies.
Level 2
Joined
May 24, 2019
Messages
21
Hi guys, so since around 2005 when I was still a child I've been messing around with the WE, but was always hesitant to learn JASS since it seemed so difficult when I wasn't even able to speak proper English. Now I've just re-discovered the WE and want to create a new map in a "proper" way, i.e. with spells and generally codes that are MUI and not leaking. So I've now spent days with self-studying JASS (including JASS class), but still it seems very overwhelming, because there always seems to be another dimension of abstraction or effectivesness and I'm a bit baffled about what I'll actually need and what's just necessary for very complex systems but not for "simple" spells.
So for example if I'd want to create a spell similar to locust swarm by myself with JASS, and I want it to be MUI, what do I need for that:

1) JASS and hashtables
2) vJASS and scopes
3) vJASS and its other contents like structs etc.
4) Special systems like unit indexer, util timers, new table (generally what do I need them for?)

Other questions:

5) If I need vJASS, how can I actually code with it at the moment? JassCraft doesnt seem to support it and JNGP seems not to work.
6) Why are many systems/spells on HWS only available in GUI (with dozens of global variables per spell) and would it slow my map performance if I would implement them?
7) Is there something like the ONE TRUE WAY to learn coding? Or won't it matter in the end? Since I've now converted my last map from GUI to JASS (and cleaning memory leaks and so on), I would be frustrated if I now work with JASS for hundreds of hours and then have to rewrite everything into vJASS or Wurst or anything due to performance issues or because it's not MUI or something.
8. For the last 15 years, hardware has naturally improved by a lot. Does that mean that maps generally won't have performance issues if they are probably cleaned of memory leaks, or is the WC3 engine still quite limited?
 
Last edited:
I would probably use vJass and structs. But that is just my preference. Hashtables is really cool, and I really dont utilize them enough.

6) User preference. It would slow it down, since gui intepretation is slower than jass intepretation. Leak depends on what they do with the bj functions. But they should be pretty leakless.

5) vJass is integrated in the current version of WE, so you don't need third party tools. You do however need a third party tool for syntax highlighting.
7) It is probably faster to just build it from vJass to begin with, instead of converting, once you feel comfortable programming in it. Everything that is jass works in vjass.
 
Level 2
Joined
May 24, 2019
Messages
21
Thank you! What program would you currently suggest for syntax highlighting in WE?

Also if someone could come back at my question 4) I would highly appreciate it!
 
1) JASS and hashtables
Hashtable is a great way to store data in jass to the GethandleId(unit item whatever) of any object in the game, or ability/item/unit-Ids this 4 digit things. Both the handleId and the objectId are not allowed to be used in jass arrays cause they are to big. Hence its a great storage technique for them. There is also StringHash which calcs a integer (key) out of a text.

allmost anything can be done with jass and hashtables.

Hashtable cells should be cleared when they are not used anymore, the clear parent is the hashtable destructor which should not be used.
If one uses an HandleId , sec key behaviour; clear childhash is the right one to use.

Special systems like unit indexer, util timers, new table (generally what do I need them for?)
Unit indexer/timer utils were invented before hashtables were a thing. The purpose of them is to provide a stable array index for that unit / timer so you can easyly read/write data connected to that unit/timer in array format.
Its said that arrays are a bit faster than hashes hence they are prefered by speed freaks and on really performance heavy functions.
Unit Indexer is also a gui thing, cause gui hash usage lacks many features.

Table has something to do with limited amount of hashtables in a map (256 or something like that) and that most users do only use a low amount of cells anyway. It manages the key usage for you and packs all in one hashtable. But I never used it.

Thank you! What program would you currently suggest for syntax highlighting in WE?
I use notepad++ or vs code. They are 3.Party and outside of WE.

MUI has nothing to do with the language used. vjass and wurst are higher level languages beeing converted into jass in the end. They can't perform faster (technical). But the code might likely be written faster/better/easier using them.

You might wait some time and learn Lua instead of jass wurst, its on the current ptr (1.31) and with that it probably will be in the real version, too soon. Problem could be that there is no Lua warcraft 3 tutorial. While there are alot vjass tutorials.
 
Level 8
Joined
May 21, 2019
Messages
435
Hi guys, so since around 2005 when I was still a child I've been messing around with the WE, but was always hesitant to learn JASS since it seemed so difficult when I wasn't even able to speak proper English. Now I've just re-discovered the WE and want to create a new map in a "proper" way, i.e. with spells and generally codes that are MUI and not leaking. So I've now spent days with self-studying JASS (including JASS class), but still it seems very overwhelming, because there always seems to be another dimension of abstraction or effectivesness and I'm a bit baffled about what I'll actually need and what's just necessary for very complex systems but not for "simple" spells.
Generally speaking, you can create lots of proper maps using only the GUI, that's what I do, and I can code in 4 other languages. Out of the few things that the GUI can't do, you will find that most of them can be done with the "Custom Script" action, which basically allows you to insert Jass function calls into your GUI triggers. These are mostly used for local variables and clearing memory leaks, but you don't need to go 100% JASS to do it.
If you haven't learned how to code in other languages yet, then JASS might be a bit of an odd niche to start out with. It's also not likely to be a good use of your time, with LUA right around the corner. Also, with Reforged coming out Soon(TM), I find that it's generally a good idea to keep your map as vanilla as possible, as that will greatly increase the chances of it making a seemless transition into the remastered game.

So for example if I'd want to create a spell similar to locust swarm by myself with JASS, and I want it to be MUI, what do I need for that
1) JASS and hashtables
2) vJASS and scopes
3) vJASS and its other contents like structs etc.
4) Special systems like unit indexer, util timers, new table (generally what do I need them for?)
It can be done entirely in GUI, and there's hundreds of ways you could go about implementing it. Some more efficient than others. MUI is really all about synchronization errors, so if you've designed your triggers in a way that prevents those, then you can safely call your triggers "MUI Optimized".


I6) Why are many systems/spells on HWS only available in GUI (with dozens of global variables per spell) and would it slow my map performance if I would implement them?
Most people stick to the GUI and use scripts whenever needed. Some prefer to go full JASS, for a variety of reasons, including the fact that text is a more portable format that can be written anywhere and easily imported compared to GUI. GUI is, however, far less prone to errors, particularly with new developers.

7) Is there something like the ONE TRUE WAY to learn coding?
No, but learning JASS is perhaps not the best way to go about it right now. Again, LUA is coming, and JASS is only really used in WC3, so you will have minimal general knowledge from learning it, and its usefulness could be very shortlived. You'd be way better off learning a much bigger programming language like Java, C#, PHP, Python, or C++. These also have really good tutorials online, and you can actually land a job with those, and do things outside of this little map making hobby.

I don't generally think that going full JASS is at all worthwhile unless you are making a crazy complicated maps that completely rewrites the general boundaries of the game, and I actively discourage new map makers to throw themselves head first into it, especially now. You can clear the memory leaks in GUI, and you will find that to be much faster for most things, as you don't have to look up syntax constantly.

For the last 15 years, hardware has naturally improved by a lot. Does that mean that maps generally won't have performance issues if they are probably cleaned of memory leaks, or is the WC3 engine still quite limited?
Hardware has indeed changed a lot, and performance issues in WC3 are nowhere near what they used to be. Memory leaks can still be an issue if left unhandled, and there's also odd things like desynchronization and performance glitches like the ones that occur with terrain deformations, but in terms of raw performance power, I wouldn't worry all that much about hyper-optimizing every little atom of your map.

IN SHORT:
I encourage taking a step away from JASS and focusing on having fun with map creation using mostly GUI. There's very few things that actually truly need JASS, and those are generally far from beginner friendly.
 
Level 9
Joined
Jul 30, 2018
Messages
445
JASS is only really used in WC3, so you will have minimal general knowledge from learning it, and its usefulness could be very shortlived.

Though I agree its usefulness might be a bit short lived, I don't think learning any coding language is a bad thing or wasted time. All programming more or less still uses the same logic. If you master one language, it is easy to hop on to any other language after that: you'll just have to learn the syntax, minor logic changes and the general way of working, but it will always improve your general understanding of programming.

Even GUI gives you a good starting point. I've played around with the Editor since I was just a kid, then at some point I got around with Game Maker Studio, which uses its own language GML, which is derived from and resembles C# quite closely. Even though these both languages are very isolated and used in practically one program, I was still one of the best in class when I started studying computer programming in school.

So for the OP: it really depends what your goals are. If you just want to stay with Warcraft 3, then I think JASS is fine, as it will work fine with Reforged and LUA. If you have any deeper interest in game developing, programming and programming languages, JASS and Warcraft 3 custom maps might be a good place to start, but prepare to shift to LUA and other programming languages at some later point.
 
Level 8
Joined
May 21, 2019
Messages
435
I don't think learning any coding language is a bad thing or wasted time. All programming more or less still uses the same logic. If you master one language, it is easy to hop on to any other language after that: you'll just have to learn the syntax, minor logic changes and the general way of working, but it will always improve your general understanding of programming.
I agree entirely, but I think that there are better ways to go about learning programming, and I really wanna emphasize what you wrote next:

Even GUI gives you a good starting point. I've played around with the Editor since I was just a kid, then at some point I got around with Game Maker Studio, which uses its own language GML, which is derived from and resembles C# quite closely. Even though these both languages are very isolated and used in practically one program, I was still one of the best in class when I started studying computer programming in school.
My first "programming" experience was GUI as well. It gives you a very nice concept of the logic behind programming in an environment where all of the heavy lifting is done for you, while streamlining the code in a way that makes fatal errors very difficult to make and easy to fix. I'd argue that learning JASS only gives a moderately better understanding of programming, while being several times harder to pick up. Thus, I am advocating the use of the GUI, much like I'd recommend a graphically oriented web developer to use prototyping tools instead of learning Javascript and how to simulate backend responses.
 
Status
Not open for further replies.
Top