- Apr 19, 2008
Is there any way to download/test your version.
Sure. Reforged is 30 GB, but Warsmash is 1 MB, so that is 30000x smaller, which is entertaining. Obviously this is because it does not include the assets.
I have attached a copy of the 1 MB repo to this post. If you're more interested, I already added a couple of people to the private repo on bitbucket but nobody actually made contributions yet to my knowledge.
I want to make it public and put the repo on GitHub in the future, but I was waiting to do that until it's more of something that players could actually enjoy for something other than making trollish YouTube videos. Namely, I would like to see it be multiplayer capable first, among other things (items, heroes, etc).
There are still huge, drastic issues with this build that make it almost unplayable for certain users.
- The attached zip file contains code from the git branch titled "blasphemy" which is supposed to be capable of loading from a Reforged Installation. I tried that one time, and it was able to launch. But, on Reforged:
- The FLAC audio hack is mostly untested because the new dialogue SLKs will prevent audio from working, so you'll be missing most sounds if you use a Reforged install
- Obviously only SD graphics are supported, I've never claimed this thing to be capable of parsing HD, although the "blasphemy" branch here is using a version of the MDLX parser from the newest builds of Retera Model Studio that other authors besides myself (thanks to @GhostWolf and a couple patches from @twilac and BogdanW3 ) updated to be HD compatible -- although the engine would have no idea how to render the HD models, so don't try that, because I never ported those portions of Ghostwolf's viewer into the rendering pipeline. The reason for including this code from newer RMS builds is to get the SD models from the Reforged Installation to parse, since they are nonsensically in the new MDX1000 format on Reforged
- The unit shadows are missing when using the Reforged install -- this is probably due to some issue with how UnitSkins.txt is being loaded but I'm not interested in pursuing that for the moment
- So, my personal preference even with this new branch is to use Patch 1.22 (NOT 1.32, not a typo) as the source of game data. There's no reason to use a patch newer than that for testing; it only makes things more complicated. You can use 1.30 or 1.31 if you would like. They would probably work because I have some basic support for some of those file location names and lookups and the "blasphemy" branch has stuff copied from Retera Model Studio to load CASC (previous idealistic non blasphemy versions were MPQ only). So, in summary, if you configure it the correct way this engine will probably be capable of launching given any Warcraft 3 install from 1.22 to 1.32 that you feed it, with the above noted limitations. Also, for 1.29+ you have to go to WarsmashConstants.java and change MAX_PLAYERS=16 and replace it with MAX_PLAYERS=28.
- The only records that I have of other users attempting to launch version(s) of this prototype in the past encountered technical issues in order to launch it. @Antkibo who was interested in contributing was originally not able to launch this because his hardware could only use OpenGL 3.X or so, and I use code copied from HiveWE that requires OpenGL 4.X or so. Essentially, I was requiring computers with GPUs from 2017+ or so without really thinking about it, or something like that. I changed around the code in the hopes of getting OpenGL 3.X and did some shader backporting from the HiveWE-based stuff and I got really, really close. I was able to launch the engine on my crappy 2013 lenovo laptop that gets 5 fps on Patch 1.31 because it only has integrated graphics, and I saw ~40 fps on this engine. That is, of course, because of Blizzard's choice to make 1.31 default to DirectX 11 or 12 or whatever. 1.31 running with the command line args to use the old DirectX9 code on the official Blizzard War3 game sees 55 fps or something, much better than my code, on 1.31. BUT I was only able to launch then engine on this OpenGL 3.X environment on the 2013 crap laptop by using local code modifications to remove features that I did not commit (again these OpenGL version numbers are not totally accurate, I'm writing this from memory, this might still have required OpenGL 3.3). So, most likely Antkibo never got the engine running but it's been a while since I checked in with him about it. The hardware problem stems from the number of textures available on the ground tiles. WC3 only allows 16, and likewise these GPUs are only allowing 16 shader texture units. The HiveWE code that I copied wants to assume we have some new hardware magic without the 16 limit and uses a 16th GPU shader texture for blight I think, and then a 17th shader texture for map .shd shadow file data rendering baked into the ground colors or something like that. So, on my laptop, what I did was that I removed the .shd shadow file rendering baked into the ground so that doodads and buildings had no shadows (except on cliffs which were not affected and used less texture units).
- The only other occurrence that I know of someone trying to get this code to run on their own hardware was someone who grabbed a copy of the code that I posted in a zip file on a discord server in a somewhat trollish way. I posted the code trying to point out to people that they could aspire to do something like this project. Probably 2-3 months later this guy found the link again and downloaded it and actually tried to run it. I do not recall if the bugs he was seeing were things that I fixed since then -- they might just have been hardware differences between his computer and mine. But suffice it to say that the unit portrait and the UI and stuff did not really line up at all the way it does on my computer.
- The font that was loaded on his computer is something that I have not seen, and there is no text other than "No Upkeep" which was hardcoded in the sourcecode at the time for the sake of example. So I believe he was launching this with a different language locale of WC3 that I have never tested with that used special characters, and possibly that language locale is not supported yet on Warsmash at all (since I have never tested it). This could be Chinese characters, Cyrillic, etc, I have no idea.
- The portrait is not behind the portrait UI FDF component and looks gross and offset. This is probably an ongoing issue on Warsmash because I have not seen this on my own machine, so I never fixed it. The portrait X/Y logic is decoupled from the FDF rendering logic in a hastily written way because I don't yet support the FDF frame type "MODEL".
- The move/hold position/attack/patrol icons are all highlighted at the same time. That was an engine-level issue (my own fault quite directly with the highlighting decision logic) that existed for a week or two and should be fixed in the version included in this post
- The cliffs are missing in the upper left hand corner of the screen. I have no knowledge of why, so it is possible that they would also be missing for other users, since they were not ever missing on my PC and so I do not anticipate ever fixing a bug related to missing cliffs.
So, this is all super off-topic and if you wanted to pursue discussion on this it should probably be done somewhere else, but I thought I should mention some of that if I was going to post the code, since the probability is like 90% that anybody trying to run it without a guide is going to run into issues.
How to launch the repo
- Download IntelliJ community editor
- Open the project as a gradle project, not just generically as java
- Find "core/assets/warsmash.ini" and reconfigure this INI file with the location of your Warcraft 3 install (the one in the repo is literally a copy of my own using absolute paths and won't work on any other machine by default, so consider it only as a template)
- Run the "DesktopLauncher" class's main method