• 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.

[General] Confusion regarding different tools, versions and languages.

Level 3
Joined
Nov 4, 2008
Messages
22
Hey, hope everyone is well.
Thank you for investing your time reading my thread.

My Background (you may skip this part if you are only interested in the question):
It's been about 7 years since I played Warcraft 3, and more specifically used World Editor. Previously my knowledge and experience was one map that I created using GUI, with a few dozen triggers, object editor changes and a few other minor things. The map generally worked quite well, I think.
I got back to Warcraft 3 recently and felt like either editing my current map or creating a new one, but this time I would like to do this via code, rather than the GUI.
I have got experience mainly in Terraform/Terragrunt, Python and Bash, and a little bit in JavaScript.

What I tried and read:
I started reading mainly here but also on a few other places about what people are using to create and edit maps.
I wanted to start from the beginning, and I understood that JASS was used initially (and I read a guide on it), so I downloaded a jass extension in vscode (because the script editor in World Edit is pretty much not readable/useable imo), but even that wasn't very helpful to be honest.
Then I read that people used JASScraft, but I couldn't find a download that felt up-to-date/safe to use.
Then I read that vJASS was introduced, which is an enhanced version of JASS that can be used with "Jass NewGen Pack". So I found and downloaded JNGP 1.5 and encountered multiple issues during the setup process, fixed some, but at some point that made me think that it's perhaps obsolete and not the correct approach. After that I read in JNGP 1.5 download thread and saw multiple people saying it is actually obsolete. So I stopped.
Then I saw that Lua is a much better approach towards editing, but I also read that it's only supported by Warcraft 3 Reforged which I don't have and currently don't plan to get/use.
Then I read about something called WEX, which I did not touch yet.
I also read about versions which made me even more confused.
I also read this guy's thread, but there seems to be mixed information, so sadly that didn't help me either.

My Question(s):
Versions - I read people talking about versions 1.26, 1.27 and 1.31, but my Warcraft 3 version seems to be 2.0, and my World Editor is 2.0 as well. Are you guys referring to a different context in versions?
1733861133258.png

1733861041816.png


Libraries - I understood that common.j and blizzard.j are the places to look for functions. I am not sure how to get these files, but I found the files info here: Link.
Is there a better way? Somehow to integrate all the information to the code instead of manually searching for stuff?

Main Question; Tool and Language - So, what combination of tools and languages is recommended to create, edit and debug maps (without having Reforged)?


I feel like I am all over the place and not sure how to continue.
Any references and places to read the answers to my questions are also welcome.

Thanks again.
 
Last edited:

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
You are on the latest patch and technically playing Reforged already. Purchasing the remaster simply unlocks the HD graphics which can be toggled on/off in the Options menu. Also, this latest patch (2.0) introduced more graphics options so you now have the choice between SD (what we grew up with), Classic HD (latest), and HD (Reforged) - or some combination of all three.

Anything before patch 1.32 is considered pre-Reforged and is no longer supported on the BNET app. So if you want to make a map on 1.26, 1.27, or 1.31 you would need to find an installation for those versions and have a valid cd key. Just remember that you won't be able to play with others on that version without a private server.

If you're reading a thread or comment on Hive that was posted before the year ~2019 then it's fairly safe to assume that you're reading something slightly to completely outdated, at least if you're working on patch 1.31+. A lot of things have changed over the years and there's some pretty substantial new tech to use in 1.31+.

You should be able to update your game on the BNET app and play with other people using your original cd key. The game has NOT been split between Reforged and Non-Reforged players. This means that you're able to play brand new maps created by people who have purchased Reforged even though you have not. You are only missing out on the HD graphics (and maybe some other minor "features").

Note that if a map was designed to use HD assets then expect missing assets and other weirdness if you play it on SD. Also, I think mapmakers have the choice to limit their map to a specific mode (HD/SD/Both). From my experience, although I hardly play, most maps leave it up to the player to decide how they want to experience the map and have a suggested mode -> "This map was designed for HD".

You shouldn't need to buy Reforged to gain access to any modding tools. I personally use the latest patch + standard World Editor + Lua as my scripting language + WCSharp as the only 3rd party tool (allows you to design your map using Visual Studio and C# which compiles to Lua). Of course you're free to use whatever tools you're comfortable with. Here are some links:

Lua: Modern, less limitations, more flexible, more efficient. Likely ideal if you're trying to push the game to it's limit.

Jass/vJass: 15+ years of user made content to support it. It's the default language so it's likely more stable (I've seen a lot of Lua-only desyncs).

Both languages have access to the same codebase so newly added natives are usable in both Lua and Jass mode, although some are only accessible via code so GUI users are missing some features. Note that you have to choose between one language or the other, you cannot use both at the same time.
 
Last edited:
Level 34
Joined
May 14, 2021
Messages
1,599
The version you are currently playing on is up-to-date, as long as you used an old Reign of Chaos key associated to your Battle.net account. You can play Warcraft III on the latest patch with the Classic SD graphics, but you won't get all Reforged-exclusive features (such as custom maps or campaigns with HD graphics like CSW). In 2.0 patch, if you own a legitimate copy of the Reforged, you can also switch between Classic HD and HD graphics, or revert back to the old Classic SD. Other than that, latest patch allows you to play online on official Battle.net server. Do note that the online play is cross-over: you can play against the other people that own Reforged, even if you only had the legitimate copy of the Classic client.

Since you are using the latest patch, your vanilla World Editor comes with everything that's normally included in alternative WEs in the past. That is, the introduction of Lua and vJASS languages, even though unique features exclusive to JNGP like multiple tilesets in one map is absent. Lua was introduced in vanilla 1.31 WE, which was the last version before the release of Reforged builds. You can also implement the "custom UI" features on some maps with the latest version of vanilla WE. If you want to make map on pre-Reforged versions (like 1.26, 1.27, 1.31), you have to search an existing game installation for those versions and have a legitimate CD Keys. You can't play online on official Battle.net server on those versions, but any private servers can do.

(I'm quite noobish when it comes to mapmaking, but still a good idea for using the latest patch of the game and the World Editor)
 
Level 3
Joined
Nov 4, 2008
Messages
22
Thank you both for the detailed, clear and informative answers!

You are technically playing Reforged already and are on the latest patch. Purchasing the remaster simply unlocks the HD graphics which can be toggled on/off in the Options menu. Also, this latest patch (2.0) introduced more graphics options so you now have the choice between SD (what we grew up with), Classic HD (latest), and HD (Reforged) - or some combination of all three.

Anything before patch 1.32 is considered pre-Reforged and is no longer supported on the BNET app. So if you want to make a map on 1.26, 1.27, or 1.31 you would need to find an installation for those versions and have a valid cd key. Just remember that you won't be able to play with others on that version without a private server.

If you're reading a thread or comment on Hive that was posted before the year ~2019 then it's fairly safe to assume that you're reading something slightly to completely outdated, at least if you're working on patch 1.31+. A lot of things have changed over the years and there's some pretty substantial new toys to use in 1.31+.

You should be able to update your game on the BNET app and play with other people using your original cd key. The game has NOT been split between Reforged and Non-Reforged players. This means that you're able to play brand new maps created by people who have purchased Reforged even though you have not. You are only missing out on the HD graphics.

Note that if a map was designed to use HD assets then expect missing assets and other weirdness if you play it on SD. Also, I think mapmakers have the choice to limit their map to a specific mode (HD/SD/Both). From my experience, although I hardly play, most maps leave it up to the player to decide how they want to experience the map and have a suggested mode -> "This map was designed for HD".

You shouldn't need to buy Reforged to gain access to any modding tools. I personally use the latest patch + standard World Editor + Lua as my scripting language + WCSharp as the only 3rd party tool (allows you to design your map using Visual Studio and C# which compiles to Lua). Of course you're free to use whatever tools you're comfortable with. Here are some links:

Lua: Modern, less limitations, more flexible, more efficient. Likely ideal if you're trying to push the game to it's limit.

Jass/vJass: 15+ years of user made content to support it. It's the default language so it's likely more stable (I've seen a lot of Lua-only desyncs).

Both languages have access to the same codebase so newly added natives are usable in both Lua and Jass mode, although some are only accessible via code so GUI users are missing some features. Note that you have to choose between one language or the other, you cannot use both at the same time.
Versions and Classic/Reforged are understood.
You mentioned that your scripting language is Lua, but in fact you actually code in C# and only compile it to Lua?
I read the introduction to the Lua guide you provided, it does seem like it will be great and informative guide to follow (sadly I can't say the same about the 10 years old JASS guide I read the other day). Actually gave me the urge to read it regardless of which path I go with.

I do lean towards learning Lua for map development, but I am a little worried about 2 things.
1. You mentioned that there is a lot of potential desync with Lua. The guide introduction also mentioned that, but it also mentioned that it's mostly due to lack of experience and the solutions are available online.
-How bad these issues are? How much experience/effort is generally required to properly deal with it?
2. Possible lack of content. Having 15+ years of content for JASS sounds amazing and valuable. If Lua was introduced quite recently, then I am worried to have very limited content, resources, community and alike. Which might make the process unnecessarily difficult.
-Is this something to worry about, or Lua isn't that new and there is enough information online to support a fluid and enjoyable development?
Also, I must admit that 1-indexing sounds very weird.
The version you are currently playing on is up-to-date, as long as you used an old Reign of Chaos key associated to your Battle.net account. You can play Warcraft III on the latest patch with the Classic SD graphics, but you won't get all Reforged-exclusive features (such as custom maps or campaigns with HD graphics like CSW). In 2.0 patch, if you own a legitimate copy of the Reforged, you can also switch between Classic HD and HD graphics, or revert back to the old Classic SD. Other than that, latest patch allows you to play online on official Battle.net server. Do note that the online play is cross-over: you can play against the other people that own Reforged, even if you only had the legitimate copy of the Classic client.

Since you are using the latest patch, your vanilla World Editor comes with everything that's normally included in alternative WEs in the past. That is, the introduction of Lua and vJASS languages, even though unique features exclusive to JNGP like multiple tilesets in one map is absent. Lua was introduced in vanilla 1.31 WE, which was the last version before the release of Reforged builds. You can also implement the "custom UI" features on some maps with the latest version of vanilla WE. If you want to make map on pre-Reforged versions (like 1.26, 1.27, 1.31), you have to search an existing game installation for those versions and have a legitimate CD Keys. You can't play online on official Battle.net server on those versions, but any private servers can do.

(I'm quite noobish when it comes to mapmaking, but still a good idea for using the latest patch of the game and the World Editor)
I plan to continue playing in bnet original/main server and use the latest patch rather than mess with old ones, and the fact the there is a cross-over without limitations of playing with each other sounds great.
Also I currently don't feel the need to have multiple tilesets, so that will not be an issue either.
 
Last edited:
Wurstlang is another option—a strongly typed programming language with indentation-based syntax that has been in development for over 10 years. The code compiles to either Jass or Lua.

A Visual Studio Code extension is available, offering features like LSP support for autocompletion, syntax error detection, and more. Wurstlang allows you to write object definitions (units, abilities....), eliminating the need to use the World Editor except for terraining. You can code in VS Code, press F1, select "Run Map," and the map starts—no need to launch the World Editor.

The language boasts a robust standard library, and projects are often open-sourced and hosted on platforms like GitHub or Bitbucket.

I started modding with Wurstlang because it was user-friendly, and I appreciated its website, documentation, and the small blog articles published over the years.
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
Versions and Classic/Reforged are understood.
You mentioned that your scripting language is Lua, but in fact you actually code in C# and only compile it to Lua?
I read the introduction to the Lua guide you provided, it does seem like it will be great and informative guide to follow (sadly I can't say the same about the 10 years old JASS guide I read the other day). Actually gave me the urge to read it regardless of which path I go with.

I do lean towards learning Lua for map development, but I am a little worried about 2 things.
1. You mentioned that there is a lot of potential desync with Lua. The guide introduction also mentioned that, but it also mentioned that it's mostly due to lack of experience and the solutions are available online.
-How bad these issues are? How much experience/effort is generally required to properly deal with it?
2. Possible lack of content. Having 15+ years of content for JASS sounds amazing and valuable. If Lua was introduced quite recently, then I am worried to have very limited content, resources, community and alike. Which might make the process unnecessarily difficult.
-Is this something to worry about, or Lua isn't that new and there is enough information online to support a fluid and enjoyable development?
Also, I must admit that 1-indexing sounds very weird.
1) I can't promise that Lua is completely desync-proof but there are popular maps currently being played on BNET that use Lua mode. The major desyncs are likely documented with solutions so they're "as bad" as whatever the difficulty of the solution is.

2) Yes, Jass has more resources, but the thing to remember is that Lua can do whatever they do but better. There are already Missile systems and Damage systems written for Lua which are generally the most sought after. Lua is an actual programming language used outside of Warcraft 3, it has way more information then you'll ever find for Jass - which is a language used exclusively for this game. It's also translatable outside of the game which is cool.

Anyway, I would just go with whatever language looks the most familiar and easy to use for you. I like C#, I use it in my Unity game development, so it made sense to also develop my Warcraft 3 projects in it.
 
Last edited:
Level 3
Joined
Nov 4, 2008
Messages
22
Wurstlang is another option—a strongly typed programming language with indentation-based syntax that has been in development for over 10 years. The code compiles to either Jass or Lua.

A Visual Studio Code extension is available, offering features like LSP support for autocompletion, syntax error detection, and more. Wurstlang allows you to write object definitions (units, abilities....), eliminating the need to use the World Editor except for terraining. You can code in VS Code, press F1, select "Run Map," and the map starts—no need to launch the World Editor.

The language boasts a robust standard library, and projects are often open-sourced and hosted on platforms like GitHub or Bitbucket.

I started modding with Wurstlang because it was user-friendly, and I appreciated its website, documentation, and the small blog articles published over the years.
Thanks! For now, I decided to use Lua as it's an actual world-wide programming language which should benefit me outside of Warcraft 3.
Although being able to write object definitions sounds really nice.

1) I can't promise that Lua is completely desync-proof but there are popular maps currently being played on BNET that use Lua mode. The major desyncs are likely documented with solutions so they're "as bad" as whatever the difficulty of the solution is.

2) Yes, Jass has more resources, but the thing to remember is that Lua can do whatever they do but better. There are already Missile systems and Damage systems written for Lua which are generally the most sought after. Lua is an actual programming language used outside of Warcraft 3, it has way more information then you'll ever find for Jass - which is a language used exclusively for this game. It's also translatable outside of the game which is cool.

Anyway, I would just go with whatever language looks the most familiar and easy to use for you. I like C#, I use it in my Unity game development, so it made sense to also develop my Warcraft 3 projects in it.
Understandable. Thanks for the guidance. I have started learning Lua and will proceed with that for now 🙏
 
Top