Publicly misquoting me from a PM seems a bit odd
That was definitely my bad for trying to remember what was said in a PM from half a year ago. No offense intended. Perhaps it was me that felt my codebase was unprofessional, and I was simply telling myself what I expected to hear as I read your words at that time.
Like they did it before, downloading a 50mbs patch and applying it on the game through the patch's .exe? Then there would be no need for Java and CASCO or whatever it's called.
@deepstrasz I am not sure you understand how Java is relevant to this discussion. I was the first one who mentioned it, and I only did so because I use it. Nothing in the game uses Java and nothing is going to.
But I have been working on a library of Warcraft 3 modding code for myself and others to use that is written entirely in Java, and only functions by loading game data. It uses several libraries written by Dr Super Good. Frotty, for example, is another Java developer who is a part of a team that made a similar library. They are more aware of how to work as a team, and use build systems that allow them to reference each other's projects across the internet, so they rewrote most of the Warcraft 3 libraries that I use with their own versions. That's just a matter of personal preference.
"CASC" is the name used for a storage system that is similar to MPQ. I always visualized MPQ files as something similar to ZIP files when I was first learning about them. "CASC" is somewhat similar. It is a storage system.
"Downloading a 50 mbs patch and applying it to the game" only ever worked because they gave you a program that downloaded new data -- stored in an MPQ storage system -- and saved that on your computer, replacing old data from older patches. The code for how to parse and understand the MPQ storage format was included inside of Warcraft III itself. But, it was binary, so fans weren't sure how to use it originally. It took them years to figure it out. Initially they discovered that the library called "Storm.dll" from the game was able to open this storage format. They hacked this library in many ways to obtain standard game models, like the Footman, etc, until Blizzard released patches so that it could no longer be hacked. However, at that point, the fans already had "Storm.dll" with a working MPQ library, and the storage format did not change. So, they continued to modify it and developed fan-made derivative works until they created "StormLib.dll" over the years. Eventually, even more years after that, people ported the StormLib to Java, and so for a while my code used "JStormLib". Then, eventually, Dr Super Good and others entirely replaced this with complete rewrites of MPQ storage system parsers.
The concern here is that Blizzard invented a new storage system. "CASC" is similar to ZIP, again, in that it is a way of storing data. However, the data is stored in many files instead of one file. This means that Blizzard can and will still give you a patch and apply it on the game through an exe. But the EXE will be invisible to you, inside of Battle.net code, because they want it to be easy for users. In addition, there's a new change to the system now. With CASC, instead of downloading a 26 MB "War3Patch.mpq" archive, as the game did many years ago, they can probably download 3 MB of "changes" into the CASC system and have it update itself, rather than replace itself with a whole new 26 MB download. This will greatly improve update bandwidth times for users as Blizzard continues to patch and improve Warcraft III.
The reason I am concerned is that any software developers, including Java developers like myself, need to relearn and rewrite all of our Warcraft III data parsing libraries if we want to load data out of the game itself.
Edit: And, actually, rewriting all of that is probably
not that bad. If Frotty and the Wurst team get hit by a car tomorrow, all of their code is still around and is open source and somebody like Dr Super Good or me could fix it. If I get hit by a car tomorrow, somebody like Frotty's team could take up the Matrix Eater code and fix it if they really wanted to.
But Vexorian was already hit by a car. So, nobody is going to update his old map optimizer or his other systems. The guy who wrote the War3ModelEditor is gone, along with the ability to compile his source code. So nobody is going to update his old stuff.
Blizzard should not be held to the whimsical designs of people who are long gone, but I think that we should try not to let the modding community lose too much of what it can do. And that's why I think a standalone program that can view Warcraft 3 models using data stored in the CASC system should be released by Blizzard, so that guys like me can have several months to catch up with CASC.