Posted 8/1/2026, 4:14:58 AM
Warcraft 3 maps should be protected, in the same way that Warcraft 3 models are protected. To understand the protections, become familiar with your local and national government and its rules for intellectual property, copyright, trademark, and ownership of human authored digital content. The way to protect your content is a license. If your government does not support licenses, then your content is not protected.
Some people believe that Warcraft 3 maps can be "protected" in a way different from Warcraft 3 models. Adherents to this (in my opinion false) ideology use this term "protected" to refer to corrupting some portions of the map data -- but not all of it -- so that the map fails to open in Warcraft III World Editor. This suffers from the obvious problem of assuming that:
These are essentially all baseless, extremely flawed axioms. The first two are obviously proven false, and the third one is false for the kind of trolls that you would want to protect against in the first place. Assuming that you are a good-natured human being playing a video game with friends, who has no interest in hacking other peoples' maps against their will (and against intellectual property law, if applicable), it is then reasonable to assume that you have LESS time available than the vicious, no-lifer internet trolls who want to modify your map -- not more.
In the mid 2010s, I created a program that I only shared with a select group of people. This program was called "AssetRipper" and was capable of deep-analyzing Warcraft III maps and spawning a GUI that looked visually similar to the World Editor unit chooser dialog, which would extract out any relevant icons, models, textures, or other graphics utilized by the units selected -- even if the map loaded in the tool had no listfile. I'm not exactly clear on the exact timeline, but I believe that after I created this tool and shared it with a select group of people, one of those people was fascinated by the tool's capability to rip assets out of Warcraft 3 custom content that he said no other tool he had ever seen could do, and he used it to rip assets out of a very popular Chinese mod for the Warcraft III game, incorporated those assets into his own mod without the original author permission, utilized his own mod on his resume, was hired by then-Activision-Blizzard, and created the Reforged that we know and love today. It's possible that the timeline I have espoused here is a slight exaggeration and the events are slightly out of order versus how I presented them, but not by much. Is it possible that Reforged would be better if I had not created and provisioned that tool to those humans at that time? I do not know. I will never know. Do not be disingenuous. Do not steal the work of others without their permission.
That being said, I have spent an extraordinary amount of time to produce a game engine toy system that approximates the Warcraft 3 experience on the external LibGDX game engine -- including loading the original Warcraft 3 custom maps as-is, and attempting to play them. Picture, if you will, a future where every human being who plays Warcraft 3 also has the code for the game and can modify the game itself in any way. It is already the case that in Single Player, there is not any mechanism to disable cheat codes on Warcraft III. Suppose you make a game map so precise, so elegantly and perfectly balanced, that you believe it is your God-given right to prevent any human being from cheating on your Warcraft 3 map. And suppose that to this end, you corrupt the map in every way that you can find to damage World Editor access, and then you develop a trigger in the map which queries the game every 1 second to monitor the player gold, and exits the game with a "Cheaters are losers!" defeat popup any time that the player gold changes more quickly than a designated rate. You think you have defeated your adversary technologically beyond any reasonable doubt.
However, on my rewrite of Warcraft 3 that operates in my own way, where I can change any line of code, all it takes me to play your map is to edit the JASS function used by triggers to query the gold that a player has, and to make it return a flat value on your map. Or, if your map needs that function, I can just edit the "Defeat" function used by the triggers so that it does nothing, until I finish playing your map. Quickly you will see that if I can edit the entire game, then if I am sufficiently dedicated, in the end I always win over you in the technology arms race.
You could solve this with a gentleman's agreement. You could label your map, "Do not play this map on Retera's rewrite of the Warcraft 3 game called Warsmash, as this will ruin the experience and is against my wishes."
But that doesn't actually solve the problem, because it turns out that Warcraft 3 is already extremely modifiable. There is a file in the game storage called "Scripts\Blizzard.j" which defines triggers in the exact same format as the Trigger Editor used in the Map Editor, but the triggers it defines are automatically loaded on every map session. This means that on the original Warcraft III -- not even a rewrite -- it is already possible to introduce custom triggers into the game that apply to all play sessions, which then inadvertently apply to the map that you created and shared. So, for example, in the aforementioned case I might have to be slightly craftier -- it's pretty tough to change the behavior of the "Defeat" or "GetPlayerState(..., PLAYER_STATE_GOLD)" functions from there -- but I could instead make a trigger which fires every 1 second on a timer and sets my gold to a flat value. That way, anytime I spend gold, it jumps back up to where it was and your rate-of-change detector never fires, so I get infinite gold.
This trigger injection paradigm can be done to the game install itself for single player maps, and it's essentially impossible to stop it. Microsoft might make an upgrade for Warcraft III in the future that disables support for third party game mods, essentially trying to make it impossible that players would launch a version of the game where the available assets and scripts are anything other than the official ones -- but if they do that, they will lose a lot of players and those who remain will find more advanced ways to overtake Microsoft's code and do it anyway. We know this is true because they have already done it for World of Warcraft, where it is substantially harder and more difficult to accomplish -- and they did it anyway. So you're not going to stop the game from changing out from under you. Your best bet is to assume that multiplayer desyncs will prevent players from changing their game installs, and that means the only place you might fight this style of cheating is in a multiplayer game.
But it turns out that injecting an override file to "Scripts\Blizzard.j" or something similar can also be done to the map itself. The map is an archive, like a ZIP file, and even if I cannot be bothered to navigate your map scripts or how they work, I can still dump my own "Scripts\Blizzard.j" into your map archive. One obvious way that you might try to prevent this is by utilizing the fact that the map archive format is not exactly the same as a ZIP file, and is instead more convoluted. It is a hashtable, which is a computer science concept that you can research if that entertains you, but what it means is that:
This means that in the worst case, when I try to toss my "Scripts\Blizzard.j" file into your map and then play it with cheats with my friends on the internet, any program that I use to inject that file will fail by design. It might tell me that the hashtable is full, or it might fail without any meaningful error placed onscreen.
That has not made it impossible to edit the map -- it has simply moved the goalpost. In this case, if I want to add a file to the map, then I may need to reconstitute the map by taking all of the files out of it, recording their exact file paths, and then building a new table with a larger table size (more bins) and then putting the files back in. This has to be possible, because the Warcraft III game has to be able to load the files from their bins in order to play the game, even if the original names of the files associated with those bins has been lost.
So, again, if I have a rewrite of the Warcraft 3 game where I can change anything, all I need to do is play your map once through with a file tracer enabled -- so every time a file in your map is loaded into the game, it also saves that file in a folder on my hard drive. This is trivially easy to develop. Before I had an open source rewrite of the game, in the mid 2010s, I developed a tool that had no visual GUI of the game and was not the full game, but which utilizes the knowledge of how the game functions to load all of the necessary units and Object Editor data from the map, parse all of their parameters, and then load all of the files associated with their parameters. In some instances it had a few bugs, but they were always solvable by improving the extent to which the tool parsed the unit data in the same style as the Warcraft III game. And all of this operated accurately and without the archive having any "listfile," because on principle the Warcraft 3 game starts from certain unit data file paths, loads those, and then expands outward to load the files designated by those -- and so this works even if you only have the numerically indexed bins in the map file and no file paths ostensibly present.
Somewhere there is an internet troll named Snarklord who thinks he has enough Snark that he has outsmarted everything I just said, by finding bugs in the Warcraft III map archive format that allow him to hide multiple datas in one bin so that the fan programs load the wrong data per a bin versus the Warcraft III game, so that an attempt to do what I described above would fail, and he thinks he has outmatched me in the technological arms race. However, Snarklord is trivially defeated by Claude Fable because at this point these LLMs are getting so smart I could just ask them to figure out what's the code difference between the original game's archive parser, and my archive parser, and then update mine to match.
So now we have presented a logical proof that no matter what you do, I can play your map online with friends with injected cheats in that map, unilaterally. But for some people, that's not good enough. Some people want more than cheats. They want to open the map in World Editor as if they were the original author. Consider, for example, the following tutorial that I wrote today on Hive to tell someone how to "protect" a map:
Some people believe that Warcraft 3 maps can be "protected" in a way different from Warcraft 3 models. Adherents to this (in my opinion false) ideology use this term "protected" to refer to corrupting some portions of the map data -- but not all of it -- so that the map fails to open in Warcraft III World Editor. This suffers from the obvious problem of assuming that:
- Your adversary is only capable of editing Warcraft 3 maps using the official World Editor program
- The official World Editor program will never receive an update to be able to open a wider range of map formats without crashing
- Your adversary has insufficient time or mental energy to regenerate the missing or corrupted portions of the map
These are essentially all baseless, extremely flawed axioms. The first two are obviously proven false, and the third one is false for the kind of trolls that you would want to protect against in the first place. Assuming that you are a good-natured human being playing a video game with friends, who has no interest in hacking other peoples' maps against their will (and against intellectual property law, if applicable), it is then reasonable to assume that you have LESS time available than the vicious, no-lifer internet trolls who want to modify your map -- not more.
In the mid 2010s, I created a program that I only shared with a select group of people. This program was called "AssetRipper" and was capable of deep-analyzing Warcraft III maps and spawning a GUI that looked visually similar to the World Editor unit chooser dialog, which would extract out any relevant icons, models, textures, or other graphics utilized by the units selected -- even if the map loaded in the tool had no listfile. I'm not exactly clear on the exact timeline, but I believe that after I created this tool and shared it with a select group of people, one of those people was fascinated by the tool's capability to rip assets out of Warcraft 3 custom content that he said no other tool he had ever seen could do, and he used it to rip assets out of a very popular Chinese mod for the Warcraft III game, incorporated those assets into his own mod without the original author permission, utilized his own mod on his resume, was hired by then-Activision-Blizzard, and created the Reforged that we know and love today. It's possible that the timeline I have espoused here is a slight exaggeration and the events are slightly out of order versus how I presented them, but not by much. Is it possible that Reforged would be better if I had not created and provisioned that tool to those humans at that time? I do not know. I will never know. Do not be disingenuous. Do not steal the work of others without their permission.
That being said, I have spent an extraordinary amount of time to produce a game engine toy system that approximates the Warcraft 3 experience on the external LibGDX game engine -- including loading the original Warcraft 3 custom maps as-is, and attempting to play them. Picture, if you will, a future where every human being who plays Warcraft 3 also has the code for the game and can modify the game itself in any way. It is already the case that in Single Player, there is not any mechanism to disable cheat codes on Warcraft III. Suppose you make a game map so precise, so elegantly and perfectly balanced, that you believe it is your God-given right to prevent any human being from cheating on your Warcraft 3 map. And suppose that to this end, you corrupt the map in every way that you can find to damage World Editor access, and then you develop a trigger in the map which queries the game every 1 second to monitor the player gold, and exits the game with a "Cheaters are losers!" defeat popup any time that the player gold changes more quickly than a designated rate. You think you have defeated your adversary technologically beyond any reasonable doubt.
However, on my rewrite of Warcraft 3 that operates in my own way, where I can change any line of code, all it takes me to play your map is to edit the JASS function used by triggers to query the gold that a player has, and to make it return a flat value on your map. Or, if your map needs that function, I can just edit the "Defeat" function used by the triggers so that it does nothing, until I finish playing your map. Quickly you will see that if I can edit the entire game, then if I am sufficiently dedicated, in the end I always win over you in the technology arms race.
You could solve this with a gentleman's agreement. You could label your map, "Do not play this map on Retera's rewrite of the Warcraft 3 game called Warsmash, as this will ruin the experience and is against my wishes."
But that doesn't actually solve the problem, because it turns out that Warcraft 3 is already extremely modifiable. There is a file in the game storage called "Scripts\Blizzard.j" which defines triggers in the exact same format as the Trigger Editor used in the Map Editor, but the triggers it defines are automatically loaded on every map session. This means that on the original Warcraft III -- not even a rewrite -- it is already possible to introduce custom triggers into the game that apply to all play sessions, which then inadvertently apply to the map that you created and shared. So, for example, in the aforementioned case I might have to be slightly craftier -- it's pretty tough to change the behavior of the "Defeat" or "GetPlayerState(..., PLAYER_STATE_GOLD)" functions from there -- but I could instead make a trigger which fires every 1 second on a timer and sets my gold to a flat value. That way, anytime I spend gold, it jumps back up to where it was and your rate-of-change detector never fires, so I get infinite gold.
This trigger injection paradigm can be done to the game install itself for single player maps, and it's essentially impossible to stop it. Microsoft might make an upgrade for Warcraft III in the future that disables support for third party game mods, essentially trying to make it impossible that players would launch a version of the game where the available assets and scripts are anything other than the official ones -- but if they do that, they will lose a lot of players and those who remain will find more advanced ways to overtake Microsoft's code and do it anyway. We know this is true because they have already done it for World of Warcraft, where it is substantially harder and more difficult to accomplish -- and they did it anyway. So you're not going to stop the game from changing out from under you. Your best bet is to assume that multiplayer desyncs will prevent players from changing their game installs, and that means the only place you might fight this style of cheating is in a multiplayer game.
But it turns out that injecting an override file to "Scripts\Blizzard.j" or something similar can also be done to the map itself. The map is an archive, like a ZIP file, and even if I cannot be bothered to navigate your map scripts or how they work, I can still dump my own "Scripts\Blizzard.j" into your map archive. One obvious way that you might try to prevent this is by utilizing the fact that the map archive format is not exactly the same as a ZIP file, and is instead more convoluted. It is a hashtable, which is a computer science concept that you can research if that entertains you, but what it means is that:
- A one-way function is used on a filepath, such as "Scripts\Blizzard.j," for the game to determine if it is in the map archive
- This one-way function still works even if the text "Scripts\Blizzard.j" appears nowhere in the archive (instead only its numeric bin being present)
- The map can run out of numeric bins within which to place files, such that attempts to add more structurally fail by design
This means that in the worst case, when I try to toss my "Scripts\Blizzard.j" file into your map and then play it with cheats with my friends on the internet, any program that I use to inject that file will fail by design. It might tell me that the hashtable is full, or it might fail without any meaningful error placed onscreen.
That has not made it impossible to edit the map -- it has simply moved the goalpost. In this case, if I want to add a file to the map, then I may need to reconstitute the map by taking all of the files out of it, recording their exact file paths, and then building a new table with a larger table size (more bins) and then putting the files back in. This has to be possible, because the Warcraft III game has to be able to load the files from their bins in order to play the game, even if the original names of the files associated with those bins has been lost.
So, again, if I have a rewrite of the Warcraft 3 game where I can change anything, all I need to do is play your map once through with a file tracer enabled -- so every time a file in your map is loaded into the game, it also saves that file in a folder on my hard drive. This is trivially easy to develop. Before I had an open source rewrite of the game, in the mid 2010s, I developed a tool that had no visual GUI of the game and was not the full game, but which utilizes the knowledge of how the game functions to load all of the necessary units and Object Editor data from the map, parse all of their parameters, and then load all of the files associated with their parameters. In some instances it had a few bugs, but they were always solvable by improving the extent to which the tool parsed the unit data in the same style as the Warcraft III game. And all of this operated accurately and without the archive having any "listfile," because on principle the Warcraft 3 game starts from certain unit data file paths, loads those, and then expands outward to load the files designated by those -- and so this works even if you only have the numerically indexed bins in the map file and no file paths ostensibly present.
Somewhere there is an internet troll named Snarklord who thinks he has enough Snark that he has outsmarted everything I just said, by finding bugs in the Warcraft III map archive format that allow him to hide multiple datas in one bin so that the fan programs load the wrong data per a bin versus the Warcraft III game, so that an attempt to do what I described above would fail, and he thinks he has outmatched me in the technological arms race. However, Snarklord is trivially defeated by Claude Fable because at this point these LLMs are getting so smart I could just ask them to figure out what's the code difference between the original game's archive parser, and my archive parser, and then update mine to match.
So now we have presented a logical proof that no matter what you do, I can play your map online with friends with injected cheats in that map, unilaterally. But for some people, that's not good enough. Some people want more than cheats. They want to open the map in World Editor as if they were the original author. Consider, for example, the following tutorial that I wrote today on Hive to tell someone how to "protect" a map:
Last edited by Retera
on 8/1/2026, 4:16:58 AM.
(3 edits)
But at the end of all your progress, when you have it all, did you accomplish your dreams?
