• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Release] WurstScript - A Wurst to Jass Compiler & IDE

Status
Not open for further replies.
How do you know that?

It's mostly DotA of course. I made this estimation a couple of months ago by taking user data from a few clients that are used to play Wc3 online (fuck Battle.net)
Garena, RGC and GameRanger were the ones I considered. There are a little under 500000 registered users on RGC (not active. The number of active users is less than 50000 but at least 20000 according to the room data that's being actively updated), 7.4 million active users on Garena (with 600000 online at a time, giving you at the very least a million unique users online a day). I am aware of the fact that Garena is not Wc3-only, but if you check out the number of users online in each of the rooms, you'll find that there are usually hundreds of thousands in the Wc3 rooms and on good days, a few hundreds in the others :/)

Whatever the number is, it's more or less than 5-6 million. The sources that document this stuff are weak, so we can never be so sure of course, but we can still make good guesses ;o
So yeah, don't quote me on that~
 

peq

peq

Level 6
Joined
May 13, 2007
Messages
171
So what are the HelperScripts? (WurstScript/HelperScripts) They look pretty awesome. Is it integrated/usable yet? Is there documentation on it?

The goal is to create Objects like you would with ObjectMerger and/or lua. But we still have some problems with the object format, so it is not ready to use yet.

The HelperScrips can read the AbilityMetaData.slk file and generate the Wurst classes and functions to manipulate abilities. --> https://github.com/peq/WurstScript/blob/master/HelperScripts/AbilityObjEditing.wurst

So with those generated functions, the object creation code should be more readable, as you do not have to remember the codes. And you would be able to create objects in plain Wurst, without having to learn an other language. You could even share functions/constants between object creation and ingame code.
 
Level 9
Joined
Jun 17, 2010
Messages
217
pipe.dll from wurstscript:

https://www.virustotal.com/ru/file/...1039b2b717d88e7fc697b1cc/analysis/1377007651/

This file is encrypted. Please add the file that is not encrypted.




f5cda85b9fbeba7e67271c37b8914ce6.jpg


print("hello world") not displayed!
 

peq

peq

Level 6
Joined
May 13, 2007
Messages
171
I moved the file pipe.dll (256kb) from JassNewGenPack folder to wurstpack / bin folder. Anti-Virus does not swear on file pipe.dll from JNGP.

Could you please give us a link to the JNGP you are using. I could not find the 256kb version of pipe.dll. We will try to use that version for the next update.

For me do not work wurstscript. Even the example of "hello world".

It is hard to see the problem from your Screenshot. Do you see the loading bar of the wurst compiler when saving the map?

You could try to introduce a syntax error in the wurst file and then save the map. You should then see the error message. If you do not get an error message, it means that the compiler could not even find your scripts. Maybe that could be a problem with the long file-path.

If that does not help, could you please send us the log files?

PS: please understand, that the tool still has many problems. We are trying to improve it ;)
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
So as some of you might have noticed the administration of this website has banned Frotty. Of course this crude, unreasonable move will not influence the development of WurstScript, however as the hiveworkshop seems to not appreciate Frottys and Peqs efforts here you are all welcome to join the german mapping community which in the first place was the origin of WurstScript.

http://warcraft.ingame.de/forum/index.php
 
Level 8
Joined
Nov 20, 2011
Messages
202
Well do you think if you ban Frotty you can stop wurstscript?

Nes just need to say: "OMG this signature offends me (because iam a pussy)" and one day later Frotty is banned.

So i can try this aswell:
Each resource of Nes offends me because he uses struct extends array which is a violation to everything which labels good coding style. So can you pls ban him an delete all his resources.

There are much worse signatures on the Hive and nobody got banned for using them. The reason for banning Frotty is NOT his signature.
Have a look at muzzels or my signature, do you think you can ban everyone which supports wurstscript?
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
struct extends array which is a violation to everything which labels good coding style.

who made the labels of good coding if I may ask?


So as some of you might have noticed the administration of this website has banned Frotty. Of course this crude, unreasonable move will not influence the development of WurstScript, however as the hiveworkshop seems to not appreciate Frottys and Peqs efforts here you are all welcome to join the german mapping community which in the first place was the origin of WurstScript.

http://warcraft.ingame.de/forum/index.php

You weren't thinking when posting this were you?

Because not everyone here knows German, for instance I know flying ....(insert w/e you want here) in German so that forum is totally useless to me.

I will not comment the ban, I don't know for what it was issued and etc, I was quite inactive past weeks
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
who made the labels of good coding if I may ask?
There are coding conventions, both conventions for specific languages but also more general ideas about how good code should look like. For instance if you know your way around oop coding you should be familiar with the very popular "gof book"
http://www.amazon.de/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612
or at least you should have heard the name "Erich Gamma". This is just an example.

But if you are not a programmer and only code for wc3 i dont expect you to have a profound opinion on how good code should look like, the quality level of wc3 resources is very low, style-wise.

Abusing features is NEVER a good coding style, however in some situations it is appropriate to sacrifice good style for better performance or better efficiency (shorter code). But what 90% of these highlevel jass libraries do with struct extends array is simply abusing of language features for purposes they are not meant to be used for and WITHOUT BENEFIT. The result is unreadable, ugly code. (to be honest the problem is the vjass language that tries to be as powerful and comfortable as possible at the same time)

You weren't thinking when posting this were you?

Because not everyone here knows German, for instance I know flying ....(insert w/e you want here) in German so that forum is totally useless to me.

I will not comment the ban, I don't know for what it was issued and etc, I was quite inactive past weeks

You never used a foreign website before? Never used xgm.ru with the google translator?
 
Level 8
Joined
Nov 20, 2011
Messages
202
I agree with the general idea that vJASS often makes code more complicated without a benefit, but I do not see what it has to do with struct extends array.

  • It is a hack in the sense that you have to take care of some low level details yourself. Just to get some tiny optimizations people sacrifice readability, maintainability and safety.
  • It is is a hack in the sense that you declare your struct to extend array but it will not be a subtype of array as one might think. ("array" is not even a type in vJass)
  • It is a tool people use to implement hacks like ARGB. Wurst has tuple types for those cases which are much nicer in my opinion, see for example Colors.wurst).
  • If you see "struct extends array" in someone’s code you don't know if he did it just for the tiny optimizations, or if he really has an allocation mechanism with some different behaviour, or if he wanted to have a type alias for integers, or if the struct is just used as a namespace, or ....

This is why struct extends array sucks. In wurst you won't need to use struct extends array, because the compiler handels the allocation right.
And all the other things which are possible due to struct extends array are also possible in wurst, but they was realized via some build in features like tuple types, enums, generics,.....
This leads to MUCH MORE readability and the features are very easy to use.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
This is why struct extends array sucks. In wurst you won't need to use struct extends array, because the compiler handels the allocation right.
And all the other things which are possible due to struct extends array are also possible in wurst, but they was realized via some build in features like tuple types, enums, generics,.....
This leads to MUCH MORE readability and the features are very easy to use.

so C++ is also unreadable language because you can overload new and delete operators for custom allocation?

also point 3 in that is biased opinion(in my opinion is even said there)
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
so C++ is also unreadable language because you can overload new and delete operators for custom allocation?

no one says that the pure existance of "struct extends array" is a bad idea, bad is only the excessive and inappropriate use that is very common here. In C++ you can overload new/delete, but it is rarely used (many c++ programmers never used it) because the default allocator is usually just fine.

Its the exact same thing. Think about it...
 

peq

peq

Level 6
Joined
May 13, 2007
Messages
171
so C++ is also unreadable language because you can overload new and delete operators for custom allocation?

If you look at the reasons why people overload new and delete in C++, you will see that most of the reasons are not transferable to Jass. In my opinion we do not need custom allocation in Jass. Apart from that, C++ has a standard which defines how the new and delete functions should behave. So if you read C++ code with overloaded new and delete operator it is usually clear what the purpose is.

But the comparison with C++ is not bad. I think it is generally agreed that C++ is not the easiest language to read. There are often many ways to do something and the nice syntax is often already used for older features.

If you compare C++ to Java (or Python, C#, Go, Rust, ...) you will see that those languages are often much easier to read. This is because they have learned from some of the mistakes in C++ and because they are often more restrictive.

With vJass and Wurst it is similar. Wurst is sometimes more restrictive. But everyone who used it so far told me that it is easier to read.

And: The restrictions make it easier to implement the IDE. I think it would be very hard to have such an IDE for vJass because of features like textmacros and vjass-modules and the lack of proper packges and imports in vjass.

also point 3 in that is biased opinion(in my opinion is even said there)

Everything is based on opinion and trade-offs. But with wurst you now have a choice.
 
Level 6
Joined
Jul 30, 2013
Messages
282
Well this does seem very promising indeed.

(and i can see oh so many ways this would make my life easier..)
but..
compatibility with vjass (and cjass .. lets face it..vjass is a pain to write without it..) is kind of a must for existing projects.

so.. any way to make wurst and vjass compatible? I'd be happy even if vjass and wurst code didn't have to interact but if i could leverage vjass libs from within wurst that would be just awesome :)
 
Level 23
Joined
Jan 1, 2009
Messages
1,610
Well this does seem very promising indeed.

(and i can see oh so many ways this would make my life easier..)
but..
compatibility with vjass (and cjass .. lets face it..vjass is a pain to write without it..) is kind of a must for existing projects.

so.. any way to make wurst and vjass compatible? I'd be happy even if vjass and wurst code didn't have to interact but if i could leverage vjass libs from within wurst that would be just awesome :)

Theoretically you could just copy jasshelper's generated Jass code into a trigger of the map and it should work. But I doubt you would want to do that everytime your vjass code changes.
I think peq is working on smth regarding vjass.
The lib thing isn't too much of an argument unless you have many own ones.
For most things there are packages in the wurst-standard library (timers, sounds, dummycaster, movable effects, etc)
 
Status
Not open for further replies.
Top