• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

GUI or Jass???

Status
Not open for further replies.
Level 2
Joined
Mar 13, 2008
Messages
24
GUI vs. JASS

So, I'm pretty good with GUI trigger generally, but after browsing through the forums for awhile, there are a lot of people talking about JASS, and JASS triggers, and whatnot, so, my questions are...

1) Which is better, GUI or Jass?
2) Why?
3) What's the difference between the two?
4) Is there a 3rd type of trigger (I saw some talk about MUI and was unsure what it was)
5) How much harder is JASS to learn than GUI?

Please keep in mind that I just want opinions, so don't kill each other. ^^

Thank you.
 
Level 18
Joined
Feb 28, 2009
Messages
1,971
As someone told me somewhen, JASS is better, because it works faster, coz GUI is using more unneeded BJs. MUI is not a new version of triggers. It`s just an adjective, that spell can be casted multimple times and there won`t anything bug. JASS is not so hard to learn. Worse thing is to use it right.
 
Level 9
Joined
Aug 21, 2008
Messages
533
1)in 90%(or 95%) of cases jass.
2)gui is made for beginners and have many mistakes like causng lagg. if you new at triggering this wont make a differnce but when you start to have several thousand lines of code it WILL make a difference.
3) gui have some nice pictures and never let you make something wrong:grin:
jass is onyl text and if you make a little tipping mistake and dont find it you cant play the map:ugly:(happens often at beginning)
4) MUi means that a spell could be used by unlimit units without casuing a bug.many new mappers make spells which could be only used by 1 unit at the same time, if a another unit casts the spell it may interupppt or bug the first one.
5) if you ever learned a other scripting language it may be not that hard-otherwise it will be VERY more difficult. Before i was able to use jass i had to understand what functions are which was pretty hard.After playing this gamehttp://www.kongregate.com/games/Coolio_Niato/light-bot, i suddenly understand.
 
Level 14
Joined
Mar 4, 2009
Messages
1,156
i don´t know how can you make trigger accept this custom scripts

  • Custom script: call DebugError (GetOwningPlayer(udg_A), "|c00FFFF00Already at full health.|r")
  • Custom script: call DebugMag (GetOwningPlayer(udg_A), "|c00FFFF00Already at full health.|r")
  • Custom script: Get TotalGoldCost(GetUnitTypeId(TriggerUnit()))
i saw script for gold in one map (guess it works than) but it does not allow it in my WE


now is any of this scripts possible to save in JASS ?
 

Rui

Rui

Level 41
Joined
Jan 7, 2005
Messages
7,551
I've merged this thread with the "GUI or Jass???" thread.

JASS is the way to go, even if you can do it in GUI. That's my opinion, at least. Once you learn it, you'll most unlikely want to return to GUI. I don't remember programming a trigger ever since I started scripting.
JASS is not only faster, but allows multiple locals, gives you access to new functions and allows you to do things you couldn't access in GUI... not to mention everything you can do using vJASS.

JASS is a lot harder than GUI, because triggers have these texts that you can understand easily. The JASS syntax is complicated if you have no knowledge of programming.

EDIT: I'd consider GUI if not for tools such as the JASSNewGenPack, which rule out old frustrations such as the World Editor crashing because you forgot this or that. And the function list? Marvelous.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,286
JASS is better for quality, end of discussion.

The reason for this is simple, GUI saves as JASS anyway, thus working in JASS allows more control and so better and more efficent code. vJASS seals this argument by introducing JASS shortcuts and structures allowing even better control over the code and allowing some time saving, allowing you to do more in less time than GUI as well as more efficently.
 
Depends what you want to make. In most of cases, GUI is enough.

GUI is enough for people who don't care about efficiency.

Alright people in this thread are just repeating the same things over and over again -_-.

I'm just going to state the facts..

  • JASS is more efficient than GUI
  • You can do everything in GUI you can in JASS, the point of JASS is it's easier and faster to code. Not to mention the above statement.
  • GUI is generally easier to learn, especially if you do not have any programming knowledge, but JASS isn't that hard to learn either.
  • Saying "Making 'this' system needs JASS" is pretty stupid, I mean you can do everything you can in GUI as you can in JASS, though you may need some custom scripts for the GUI version.
  • People who use GUI stop saying 'Jass blowz ballz becusze GUI is easir!'. You may or not know that GUI is just a frontend for jass, it's compiled to jass when the map is saved. And also 99% of GUI'ers don't know JASS, while 99% of jassers know GUI.

Now this thread should have been closed a while ago -_-
 
Also, you cannot replicate everything in JASS in GUI.

Remember, I'm not talking about vJASS. And I stated you may need some custom scripts.

Trackable events are one of the only exceptions, I can't think of any others atm.

Using JASS is not about efficiency.

To me it is a big plus. It's also about the ease of making your code efficient compared to how much trouble you would have to go through to make an efficient GUI code.
 
Level 40
Joined
Dec 14, 2005
Messages
10,532
Remember, I'm not talking about vJASS. And I stated you may need some custom scripts.
So you may need JASS? Also, vJASS is a preprocessor, so it can all be done in vanilla JASS (and it's easy, if ugly, to).

To me it is a big plus. It's also about the ease of making your code efficient compared to how much trouble you would have to go through to make an efficient GUI code.
Until you realize that the difference is rarely noticeable.
 
Level 12
Joined
Feb 23, 2008
Messages
587
GUI Vs Jass.

I think it comes down to what type of programing you want to do. Would you like to work in machine code or use c? or use c or c++, or use c++ or C#.

Or use jass or GUI.

GUI Is a higher level programing language. And because of that you lose power, and flexibility. But its also easyer to work in, as you dont need to know as much.
 
Level 10
Joined
Sep 21, 2007
Messages
517
As a GUI patron and advocate, i painfully admit JASS is better. I do not reccommend JASS to you unless if you want to memorize alot of functions and types of functions, types of variables and much more, now with user-custom added shit such as structs and if you really feel like learning all of that just to make a spell more efficient and have a bit more possibitilies to be able to make a lagless Particle system or lagless naything else, then its not worth it. GUI is capable of doing almost ANYTHING, and if anyone dares say no to this, then please contact me personally, or on this thread. Personally, i dont think learning a whole new language just to improve mapping skills appeals me alot, instead i use my creativity to pass through triggering obstacles, and yes sometimes JASS is imperative, but it's only one function in a custom script - prett easy in other words. My sole purpose for this game is to make something someone loves and to entertain the public; what is yours? If it is to both make a high quality map to the public and entertain them then learn JASS, otherwise if you just want to entertain them, start being creative in GUI! Also please remember, people using JASS are extremely creative too, its just that most people using GUI are not that creative. An example is the GetUnitID, do you know thats just a custom value attached to a unit, but it just gets recycled. At the end its your choice based on what you want, GL HF and happy mapping.

Yours sincerely
Diehard@Azeroth
 
Level 21
Joined
Aug 21, 2005
Messages
3,699
Custom scripts are not GUI. Even if it's only one script, it's still NOT possible in GUI, no matter how you turn things around.

I know what vJASS compiles to, but theres still a lot more freedom in vJASS than there is in JASS.
There's the same freedom in jass. You're just going to write real ugly code. This as opposed to GUI where you write ugly code either way.

GUI Is a higher level programing language. And because of that you lose power, and flexibility. But its also easyer to work in, as you dont need to know as much.
The purpose of introducing another level is increasing the flexibility. In the case of languages such as c++, the power you've lost is not noticeable.
GUI does not increase flexibility (it decreases it, you seem to agree). So regardless of the decrease in efficiency, what's the point of GUI if it does not do what an additional layer is supposed to do?

I do not reccommend JASS to you unless if you want to memorize alot of functions and types of functions, types of variables and much more
What, you're saying you don't need to memorize anything in GUI? You need to memorize just as many types and functions as in jass. Memorizing types is not difficult at all. Anyone can guess what a Player variable is, and the jass equivalent player is not that hard to remember, is it? Especially if you already know GUI, all you have to do is make everything lowercase. Except for 1 or 2 exceptions such as Point vs location. But once you're using jass, you should not use locations anyway.
Memorizing functions in GUI may as well be harder than in jass. When you can do everything with CreateUnit() in jass, you have 2 alternatives to "Create Unit" in GUI. That's 1 more function than jass has. Oh, you can search for functions? Guess what, TESH can search too. All you have to do is download World Edit newgen.

I'm not even going to attempt to create a list of things you can't do in GUI. It's seemingly endless.
 
Level 12
Joined
Feb 23, 2008
Messages
587
I think the only reason people dont use or learn jass. Is its got a higher learning curve. And They generally can get by with out it. In the long run i am sure jass is the way to go, i am just not interested to learn the syntax. But perhaps its easier to learn then i think.
 
Level 21
Joined
Aug 21, 2005
Messages
3,699
in GUI you can remember them, if used after a while, but you dont have to memorize like in JASS, and please do give me the list :)
Sorry, but no. It's exactly the same thing and not a valid argument. Remembering jass functions is exactly the same as remembering GUI functions. I can even say jass functions may be easier to remember, since most of them follow the same logics. CreateUnit creates a unit, CreateGroup creates a group (unit group), CreateEffect creates a special effect, CreateItem creates an item. SetUnitX sets the X coordinate of a unit. SetItemX sets the X coordinate of an item. A child can learn these within a day.
I sure know I can type "CreateUnit" faster than I can scroll down to the "Create Unit" action. Oh, and there's still the search option, 1 click away.

I'm not trying to convince you to use jass. But it's not fair to say jass functions are harder to remember.

I think the only reason people dont use or learn jass. Is its got a higher learning curve.
If you've never programmed before, that's certainly a fact. Then again, if you have never used GUI, learning jass instead and knowing how to write efficient jass triggers fast heavily outweights the benefits of learning GUI "faster".

Ok, an (incomplete) list. Note, I'm going to include vjass features in some cases.
  • Global declaration Freedom: declare global variables at any point in the script, as opposed to having one huuge chaotic list of variables. It helps organisation.
  • Constants: declare constants, essentially the same as variables except that they cannot be changed. This is a jass feature, and impossible in gui.
  • No local variables possible
  • No functions possible
  • Debug mode: allows scriptlines marked with the "debug" keyword to only be executed when the script is compiled in debugmode. Really useful. It was already supported by jass but not yet implemented. So technically it's jass, practically it needs vjass to work.
  • Libraries: Organise your code so it can be shared easily. Libraries can require other libraries, effectively creating a hierarchy where one system requires another, and systems can work plug-and-play. TimerUtils for example is a system that has 3 possible implementations. Don't like one? Copy/paste another implementation and you have to change nothing else.
  • Many functions are jass-only: Memory cleaners (DestroyGroup, RemoveLocation, ...), GetLocalPlayer, trackables and trackable related functions. CreateDestructableZ, CreateLightningZ, and any unit/item./... function using X/Y coordinates instead of locations. It even gets worse when some GUI-only leaks cannot be fixed through custom scripts.
  • structs: creating your own new variable types. It's possible to do this in GUI, but it would take hours of work, would be incredibly hard to modify, will not have type safety and looks uglier than my ass. What would not be possible is encapsulate your new types with methods and operators.
  • 2D Arrays: possible in GUI, but pain in the ass again. Especially with the arithmetic mess you leave behind. Same for dynamic arrays.
  • Typecasting *was* possible but no more since 1.24
  • Comments on the same line as an action not possible in GUI
  • GUI is inefficient. Could have been a lot more efficient but blizzard made it so.
 
Level 11
Joined
Apr 13, 2006
Messages
353
in GUI you can remember them, if used after a while, but you dont have to memorize like in JASS

This is simply not true. If you use JNGP, you can pull up a list of all functions and search through them. You also get function auto-complete which makes life really easy. I'd argue there is less to memorize than with GUI.

My sole purpose for this game is to make something someone loves and to entertain the public; what is yours? If it is to both make a high quality map to the public and entertain them then learn JASS, otherwise if you just want to entertain them, start being creative in GUI!

I don't see the difference really. A high quality map entertains people...and you shouldn't be aiming for anything less.

I think the only reason people dont use or learn jass. Is its got a higher learning curve. And They generally can get by with out it. In the long run i am sure jass is the way to go, i am just not interested to learn the syntax. But perhaps its easier to learn then i think.

It is a lot easier to learn than you think. I'd also argue that there isn't really a higher learning curve. This is a perceived thing because people prefer visual over text. In reality, had you spent all the time learning GUI on JASS instead you would be just fine.

Sure you can get by without it...if you don't want to make anything worthwhile. It may be that my expectations are too high, but why bother creating something unless it is high quality?
 
Level 21
Joined
Aug 21, 2005
Messages
3,699
Creating a high quality map is something different. Other than leaks, you don't really need jass to make a good map.

But jass simply is much more powerful than GUI, without being much harder to learn. If you're ever going to make a map that uses more than very generic triggers (such as: unit enters region, make him move to another region) then why bother learning GUI in the first place?
 
Level 10
Joined
Sep 21, 2007
Messages
517
GUI is much easier to "memorize" even tho you can just scroll down a bunch of functions and find them than to memorize JASS, because even though JASS nowadays may have these lists compiled by people, youd have to scroll down to almost every function alot of times more than GUI because as GUI states, it is a Graphical User Interface, done to be aesthetic for the eyes. Of course there is the exception where progrmaming gets hard and JASS becomes easier to read and GUI becomes chaotic (where i am at, but after using GUI for so long, dont feel like using JASS except when its imperative).
 
Level 31
Joined
May 3, 2008
Messages
3,154
Well, ill simply write this message,

Jass is the most effective way for doing stuff, BUT every jass function can (almost) be made in GUI, it would just take alot more time, and alot of variables, like the Diablo Inventory system, that was GUI.

Yes, but it can never be as efficient as JASS and it took longer time to be done.

GUI is much easier to "memorize" even tho you can just scroll down a bunch of functions and find them than to memorize JASS, because even though JASS nowadays may have these lists compiled by people, youd have to scroll down to almost every function alot of times more than GUI because as GUI states, it is a Graphical User Interface, done to be aesthetic for the eyes. Of course there is the exception where progrmaming gets hard and JASS becomes easier to read and GUI becomes chaotic (where i am at, but after using GUI for so long, dont feel like using JASS except when its imperative).

I disagree about this. I use GUI a lot till I try JASS and VJASS, is sure a little hard at the beginning, but once you get the hang of it. It was far easier and less time consumption compare to GUI.

Infact, GUI lack of many advantage compare to JASS.
 
The advantage of GUI is that it has some help text on their windows, (although most of the time text gets truncated because apparently too long even though it could fit in) while in JASS there is no such thing and you must have complete knowledge about these functions to know how they actually work (e.g. which unit is in this function picked), names are pretty straightforward, but still, for example, wtf is enum, in gui is well explained that it pick some units that fulfill certain conditions. Also I find moving, cnping, toggling those AI block easier.

Furthermore in AI scripts, there is complete mess as it requires you to know the war3 AI behaviour perfectly, so even those function names can't help you much and there are very few people knowing about it.

P.S. Is that gui help text fixable so it can be read whole text?
 
Level 21
Joined
Aug 21, 2005
Messages
3,699
The advantage of GUI is that it has some help text on their windows, (although most of the time text gets truncated because apparently too long even though it could fit in) while in JASS there is no such thing and you must have complete knowledge about these functions to know how they actually work (e.g. which unit is in this function picked)
I got a lot of experience with GUI too, and I can say most of the helptext is totally useless. And when it could be useful, it's truncated or just not available at all. For example:
Unit - decrease level of ability on unit
"If the unit does not have the ability, it does nothing"
Really helpful... I would have never figured out myself.

names are pretty straightforward, but still, for example, wtf is enum, in gui is well explained that it pick some units that fulfill certain conditions.
http://lmgtfy.com/?q=define:+enumerate
native GroupEnumUnitsInRange takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing
This enumerates units within a certain <radius> of <x, y> using the filter to filter out certain units. Refer to GetEnumUnit to get the enumerated unit. Refer to GetFilterUnit to refer to the unit as it is being filtered.
The naming is still straightforward. Yeah, you need to know what "enumerate" or "filter" means, but you also need to know what "picking" or "matching" means...

Also I find moving, cnping, toggling those AI block easier.
I'm not too sure what you're saying... Isn't this an advantage of jass, rather than of gui?

Furthermore in AI scripts, there is complete mess as it requires you to know the war3 AI behaviour perfectly, so even those function names can't help you much and there are very few people knowing about it
How would GUI solve this problem?
 
Level 21
Joined
Aug 21, 2005
Messages
3,699
DSG, about time you get an account there, even if it were only to be able to *read* posts like that.

Vexorian said:
I wasn't speaking of you directly; there are just certain people who see GUI like some sort of horrid plague and all those who use it must be erradicated and refuse to accept that anything ever can be made in GUI.
That's because it IS a horrid plague.

No kidding, it is like a virus, and the fact this discussion is happening is proof.

GUI must be exterminated, it is a waste of time. I think everyone should be given access to the best tools. A great deal of this is to prevent people from believing it is right to stick to tools that lock people into a mentality that makes the transition harder.

GUI is but a hazard to this improvement, it slows progress. Therefore I'll oppose it as the plague it is.

No wc3c contest I remember had a no GUI rule, I even remember a couple of GUI things that won prizes. I doubt contests will ever have a no GUI rule ([1] which BTW means this whole discussion is as irrelevant as a cow's sense of smell) But that doesn't change the fact GUI is a really , really, really bad tool, forcing people into a low spectrum, making them think they are "weaker", and wasting their time.

A community in which GUI is accepted is not healthy, because GUI forbids modularity and sharing code. Sure attempts to defeat these weaknesses happened, that's how things like WEU happened (and as you already know it sucked terribly). GUI is a complete antipattern, and it is very harmful. People that think it is some sort of standard or that it is all right would often frown upon you for not using GUI in your spells because copying a text trigger is too hard for them.

These are the reasons I have opposed GUI ever since I noticed for the first time how it doesn't allow sharing code. Even when Jass kept crashing and causing tons of issues, it was better than GUI.

People that can't get over the "GUI is all right" mentality, should really drop coding altogether and focus on things like art (hence the reason wc3c welcomes some of them) else they are just harmful to the community, as in really.

I actually started with GUI and making tools for GUI like some things in UMSWE (that then were added to WEU), with time it was clear enough that GUI is a solution looking for troubles and the difficulties it adds to everyone's lives are way too large in comparison to any 'good' thing about it (which are actually nil so far).



Anyway, because of [1] and because there is already a decision about the olympics (wait for Sunday for a conclusion on what's going to happen) this thread is useless and therefore I am closing it.


Edit: To add, I did not begin with this strong opposition to GUI as a plague, it started with the likes of weaaddar, dataangel and Kattana, honestly if it wasn't for them I would have stayed with GUI and that's just plain wrong.

I think that though some people may see it as elitism, there is probably not a better solution to the GUI problem than being aggressive to them. I see some sites out there, and perhaps because of some attempts to be nice, GUI ressurfaced as something acceptable and it is only making the Jasser's lives harder, just like in the old times. What I see in the other sites is more of a reason to know that I should keep my strategy.
 
Status
Not open for further replies.
Top