| 03-19-2004, 04:12 AM | #1 |
What's the point of leaning JASS? As for the memory leak issue; I don't experience any lag before I played a map for maybe 2 hours, And I only have 256MB of RAM so for someone with the double that'd mean 4 hours of lagfree gameplay (maybe it isn't exactly linear). I'm sorry if I insult you all but it seems that this memory leak issue is more of a prestige issue than a lag issue. Is there any other reasons why JASS is better than GUI? Like some functions you can't live without? I've been making maps half-time since the release of RoC and I've never even considered learning JASS until now. And now I need guidance. What is better with JASS than GUI? What other possibilities are there? Please don't tell me that this memory leak is a big issue because I don't intend to make maps with more than 30 minutes of gameplay since I find maps like that either boring or too much waste of time, I mean really, who would want to spend 2 hours just exping a hero when you are going to lose him afterwards? (If it was an MMORPG I would be glad to exp my hero, but it seems a little pointless putting all that effort for a single game) Oh and no flaming please, it's pointless and I know I may seem a bit condescending but it's only because I need to catch your attention. |
| 03-19-2004, 07:48 AM | #2 |
There are plenty of possibilities. Look at the Jass Vault, there are some of the things you can do with Jass. You can define your own functions and define locals which are two very powerful features in Jass. |
| 03-19-2004, 09:28 AM | #3 |
Strictly speaking using custom script anything can be done in JASS (but thats because custom script is JASS). The main thing is that JASS triggers are generally shorter, far more effecient and easier to write (once you know JASS). To get really cool triggered spells you need to use JASS for local variables and/or game cache, you probably could always do the same spell in GUI but it would require far more variables, take longer to make, and making it multi-instancable would be considerable extra work. Two great reasons to use JASS: Local Variables Functions And whats wrong with prestige? |
| 03-19-2004, 09:49 AM | #4 |
Oh, and memory leaks aren't set on a timer or anything. It all depends on the map and what it's doing. Some RPG's/TD's leak histerically as they're always doing tons of location-leaking and stuff. And begin to lag a bit after even just 30 mins. Added to some of the stuff other told (performance, locals, functions, bla) are much more powerful loops. And... I can tell you right now, you can not make the crazy password system i'm working on right now, without jass... it'd be impossible, so there's one thing :) oh, and in this forum, most of us are mature enough to flame each other too :) Cubasis |
| 03-21-2004, 10:08 PM | #5 |
Thanks for all the replies.. I'll just have to go see what this local variables and locations are in some faq and I'll see if it's useful for me.. :) Also thank you for being mature, I know it isn't a very nice thing to ask someone what's good with what they do.. But I just had to :P And about prestige.. It's good, to a certain level. But like if you have one little memory leak that is quite hard to fix it's probably better to spend your time on balancing your map :P |
| 03-22-2004, 12:34 AM | #6 |
but fixing memory leaks are not hard to do. Its roughly two lines of code at most to your triggers. Hell even blizzard started doing it. You've asked this question twice and both time you have a tone of looking down at us for being wierdos for using this cryptic programming language. There is plenty plenty that can only be done in jass. Almost everything I've made requires jass, and going back to gui is hard. Programming in words is unnatural. |
| 03-22-2004, 09:37 AM | #7 |
While I'm only just getting to grips with the language, I would say the ability to create triggers in-game for specific units greatly improves efficiency for more advanced custom spells. That said, memory leaks can be tricky to fix, in my experience. The mod I'm working on generally requires a couple of triggers be created as listeners for every unit, including a death-listener to destroy all that unit's triggers, and itself, after use. I had to implement a linked-list system on an array and use custom unit values to access the starting index. But that's probably an unusual case. Personally, I just wish they'd release the source code on a non-profit-licence basis. Or better yet, unveil the C++ API that must be behind the scenes anyway. The Game Cache capabilities of the GUI are fairly restrictive, though I haven't used it much myself. Have you ever heard of C Programmer's Syndrome? It's a hacker term for chronically wasteful and inefficient use of memory thanks to a programmer too lazy or inept to manage memory properly (as it's tedious in C.) Basically, JASS suffers to a moderate extent from C Programmer's Syndrome. But the WE GUI? They're practically reading its last rites. |
| 03-22-2004, 12:58 PM | #8 |
@Alfryd: While a linked list is a nice solution, nowadays the gamecache makes such things much easier since it allows you to hook any amount of information to any handle like triggers or units and is not much less efficient. |
| 03-23-2004, 01:40 PM | #9 |
I just have to say that even if you would be able to do everything in GUI, I would preffer JASS , Typing is way faster and more efficient than clicking. |
| 03-27-2004, 12:50 PM | #10 | |
Quote:
|
| 03-27-2004, 02:31 PM | #11 |
MMad, just to tell ya, I hadn't tauched any programming language before WC3 came around. And to tell you the truth, I had this kind of view about JASS coders before I learned JASS. But you must know yourself when you're doing those big actions for each player and stuff... You like, CnP the first line 12 times or sumtin, then you have to click each one, and dig deep into them for the entries you need to change in each one, you know yourself that's alot of clicking for the small stuff you actually change. But yeah, Cubasis |
| 04-04-2004, 03:52 AM | #12 |
Ahm, you make a good point. But that's mostly becouse WE has horrible text modifying features. It's sooo comfortable to code JASS in UE with proffessional text-handling features, Syntax Coloring and Function List. And about triggers that GUI can handle, it all depends on it's weight and the coders perfectionsm. Cause in MOST cases, GUI triggers are going the in-efficient or leaky way of doing stuff. But I still have both a GUI Init trigger and a Jass one, each doing different stuff. Anyways, this is a aging thread, and a oftenly-argued subject. So.,.... Cubasis |
| 04-04-2004, 06:13 AM | #13 |
Before this gets closed I would like to put in my two bits. Like Cubasis, b4 WC3 came around I hadn't learned anything about an OOP language. I had a basis in HTML, but that is nothing compared to JAVA (which I am currently learning) or C++. Anyways, JASS is so much more efficient than GUI in just the fact that you can use native directly. Do you realize that 90% of GUI functions call a function that calls the native, sometimes just switching the order around. That is a waste of time. Also, there are no Remove/Destroy handle functions in GUI. They can be added with custom script lines, but still.... And also the no locals in GUI is a killer. Ever since I learned JASS I don't use GUI. In fact I have converted probably 50% of my GUI triggers in my TD back to JASS so I can perfect them there. And to answer what JASS can do that GUI can't. Well, try making a loop that exits when it finds no more units in a group. Or having 26 elseif clauses in your if block without nesting more if's in. Or making the UnitModulateColor function I just submitted to the vault. Or my UnitFadeTimed function that has already been verified. All of these may be possible in GUI, but not without extensive workarounds that just waste time. And, if you do decide to learn JASS, go with UltraEdit because Warcraft's parses and built-in text editor blow. Coding in UE is twice or three times as fast. |
| 04-08-2004, 10:51 PM | #14 | |
Quote:
i've heard varable events is another thing you can do in jass that cant be done in the gui, as well as creating regions on the fly |
