Warsmash Mod Engine (Alpha)

This bundle is marked as approved. It works and satisfies the submission rules.
This is the first binary distribution of the Warsmash Mod Engine for Warcraft III. In this Alpha version, you should expect that most likely nothing will work. You need to be ready to laugh at bugs. That is the way to enjoy this current build. If you manage to get into a single player game and have a good time, please post back here and leave a comment because that means you have already exceeded my expectations.

Warsmash is a Warcraft III modding project that aspires to eventually make Warcraft III modding easier by providing a replacement component for the game program that can be more easily modified -- while still requiring the Blizzard Warcraft III game and assets to be installed on the computer only from Blizzard. In short, buy Warcraft III from Blizzard, and then you can begin to use this mod engine with it.
Note:
This is not an anti-Reforged product. I had many amazing conversations with Kam while those guys were making Reforged, and I submitted bug reports to them and was treated with great kindness and got the impression that they were working hard. I posted about the idea of Warsmash here on the Hive in 2016 before Reforged was invented. I have had longer than the Reforged team had to do what I am doing, and I have achieved less, because I am a hobbyist. It is wrong to look at the matter in any way other than this, and when I suggest anything to the contrary I am most likely only doing so for comedic value or to help stimulate Reforged's growth.

Project Setup:
I have only tested this binary distribution with the English Warcraft III edition, Patch 1.22. Based on my tests, this program should be able to function if you reconfigure warsmash.ini to point to your Reforged installation, however when you do so, some of the features of this program will be missing.

For Patch 1.22 or similar patches, unzip the contents of Warsmash.zip and create a folder as a subdirectory of your Warcraft III installation, like this:
189057-a8f0aacd8019610a9116dfae70b97c82.png

Then, inside this Warsmash folder, you should see the Warsmash EXE as well as the necessary files.
It should look like this:
189058-4af075dbe283586544adf97abbaadb6d.png

If you double-click on this EXE, then this should launch the Warcraft III game using the Warsmash Mod Engine (so a lot of the features that are not Warsmash-supported yet will be disabled, but you should be able to click around and maybe even have some fun!). For many users the game will not launch at this time, because your hardware is not supported, so do not be surprised if it does not work. However, when that happens, feel free to report back here and discuss the nature of the problem. Most likely I will very soon publish a build of this tool that has improved error logging support.

Command-Line Options
At the time of writing, Warsmash supports two possible command line arguments. You can make a shortcut to Warsmash and either of these arguments to your shortcut:
Code:
-windowed
-loadfile <name>
The "loadfile" argument searches within the Warsmash game data, and not in any maps folder yet, so it is best if you test with builtin maps. One example would be "-loadfile (2)bootybay.w3m" that should work regardless of your Warcraft III version, for example. It should also load map files from the "Warsmash" folder in your game install if you are using the default configuration suggested above.
The "windowed" argument currently fights with the mouse capture system and can create nuisances that squash the render window and crash the game because it cannot process having a pixel height of 0 for the game window. When I settle on what the best bug tracker should be for this project, we can add that to the list of known bugs.

Open Source
Most of the entire point of Warsmash is to be an open source project. If you would like to build Warsmash yourself from source, you can download all of the necessary files at this location:
https://github.com/Retera/WarsmashModEngine
Warsmash is a Gradle Java project, which means that some of the dependencies are not included in the repo above, and instead they are downloaded as a part of the build process from their respective online locations.

The source code of the Warsmash EXE that I have included in this binary build for ease of use is here:
https://github.com/Retera/WarsmashWindowsWrapper
(This is a very tiny do-nothing program that launches Java, as well as forwarding the -loadfile style arguments to the Java program.)

Check out the Hosted Project Forums here: https://www.hiveworkshop.com/forums/warsmash-mod-engine.780/
Previews
Contents

Warsmash Mod Engine (Alpha) (Binary)

Reviews
eejin
A very cool project that shows a lot of promise. Launching it is kind of inconvenient as you have to obtain the Warcraft 1.22 game data files from somewhere. I think it would really help in adoption if you'd make it default to loading data from the...

Retera

Tool Reviewer
Level 30
Joined
Apr 19, 2008
Messages
1,208

Here is the download for the Fel Orc Adventure map that I posted videos of myself playing on this engine a few times. I just played the map and was able to collect all 6 Fat Lewt items in about 30 minutes in my adventure. I launched the game by using this binary build, as well as the command line command:

Code:
.\Warsmash.exe -loadfile Maps\UndergroundFelOrcAdventure.w3x

In order for this to work, I created a custom folder inside the Warsmash folder called Maps, so this was basically at the location:

Code:
<War3Install>\Warsmash\Maps\

Here is a video of today's adventure in Warsmash:

I had to work really hard because there is currently no way to heal or revive my heroes, but I wanted Gor'thok to survive until the end, so I exploited kiting mechanics that do not work the same yet as in the base Warcraft III game, because the Warsmash kiting is simpler and creeps who attack one of my units will keep trying to attack that unit forever, so I was able to use this to keep Gor'thok alive all the way until the end to make sure that I had all the Fat Lewts collected at one time.
 

Retera

Tool Reviewer
Level 30
Joined
Apr 19, 2008
Messages
1,208
Amazing what you have achieved :)
Thanks! But to me what I aspire to achieve in the future is a bit more amazing, since for most people the bundle here will probably still have a lot of issues when they try to use it. There is a lot of work to do for this project that I am aspiring towards, so this bundle only contains a binary snapshot of the current repo that I have been working on for the purposes of letting people tinker with it and get a general concept of what I am trying to achieve even if it is still under construction.
 

eejin

Tool Moderator
Level 10
Joined
Mar 6, 2017
Messages
194
A very cool project that shows a lot of promise. Launching it is kind of inconvenient as you have to obtain the Warcraft 1.22 game data files from somewhere. I think it would really help in adoption if you'd make it default to loading data from the WC3 Reforged game files. Right now you have to manually set that in a text file and I didn't manage to make it work.

It's missing a lot of functionality compared to WC3, but a lot of work has already been done too. The thing I missed most was drag selecting units. I'm looking forward to seeing more of the progress you are making and what kind of impact an open source WC3 will have on the community.
 

Retera

Tool Reviewer
Level 30
Joined
Apr 19, 2008
Messages
1,208
Launching it is kind of inconvenient as you have to obtain the Warcraft 1.22 game data files from somewhere.
You can make it run with Reforged, but I just did not bother because then the unit shadows and some of the sounds do not load because I do not support them yet. I just tested with this same binary alpha build and unzipped it into my Reforged folder:

1618170326880.png

Then after this, I replaced my "warsmash.ini" to have these contents that specify to use the Reforged installation:
INI:
[DataSources]
Count=4
Type00=CASC
Path00=".."
Prefixes00=war3.w3mod,war3.w3mod\_deprecated.w3mod,war3.w3mod\_locales\enus.w3mod
Type01=MPQ
Path01="resources.MPQ"
Type02=Folder
Path02="C:\Users\MyUsername\Documents\Warcraft III\Maps"
Type03=Folder
Path03="."

You will have to change the INI config sample above since Reforged is not a self-contained product and uses My Documents, and currently this configuration wants to know the location of your Maps directory (the one provided uses the sample username "MyUsername" and needs to be changed).

Once I have this data configuration specified, I click the Warsmash EXE that I have located as follows (NOTE: It will not work if you put inside 2 folders instead of inside 1 folder due to the contents of the INI)

1618170538793.png

After I do this, the EXE will launch me to a menu that loads the legacy game client's menu definitions but from the Reforged installation. This looks about the same as with Patch 1.22, but it has the Korean note on the upper left, and it has the Reign of Chaos version button on the upper right.

1618170671326.png

Also, there is some bug with the Reforged support, so if you click the Campaign button to play campaign missions it will crash. So to get around this, you want to launch your maps with -loadfile from the command line instead. I think that this can be fixed later, though.

Edit:
Actually, I thought about this a bit more, and you probably do not want to do the above process unless you recompile the engine with MAX_PLAYERS=28 instead of MAX_PLAYERS=16. Maybe later we can change that constant to be a config value, or based on map save version.


Edit 2:
Here's a test image from a sourcecode mod to support Reforged campaign data. Apparently Reforged still includes all the metadata to build the old campaign UI, except that they are unified together so that the RoC/TFT distinction is gone. [Dropdown for Difficulty is missing because the Warsmash FDF parser does not support dropdowns -- not because it is missing in Reforged]
1618172185690.png
 
Last edited:
Level 6
Joined
Jul 21, 2019
Messages
153
Not realistic of me to promise i'll learn coding any time soon just to help you, when i can barely make GUI triggers work, (i think i could but by the time i become useful you'd probably be done already). But as i said i'm happy to serve as a guinea pig of sorts, i will eventually provide feedback which you can study in order to understand how accesible Warsmash is to average dummies who just play the game (unless it is meant only for users with coding skills).

Anyway, i have faith in you, what you're doing is far beyond my rodent comprehension, and i may not understand coding, but i can see you're commited to your project, that and the fact that you're clearly skilled already make me believe you're capable of finishing this, just don't give up!
 

Rui

Rui

Level 39
Joined
Jan 7, 2005
Messages
7,478
I am not a very experienced programmer myself. When I looked into your repository, I went to search for Main.java to try and figure out what happens from there, but no success. :p In any case, I'm skeptical whether the lot of it is understandable by the average mortal without further documentation?
 

Retera

Tool Reviewer
Level 30
Joined
Apr 19, 2008
Messages
1,208
When I looked into your repository, I went to search for Main.java to try and figure out what happens from there, but no success.
Sorry, instead of Main it is named DesktopLauncher.java. This is the default bame if you create a new LibGDX project.
Retera/WarsmashModEngine

i will eventually provide feedback which you can study in order to understand how accesible Warsmash is to average dummies who just play the game
Were you able to run the EXE ? o_O
 
  • Like
Reactions: Rui
Level 1
Joined
May 13, 2020
Messages
3
It’s amazing, how far the project has come already :thumbs_up:

I know, I’m a bit late to the party, but here are some of my “findings” from testing out the game:

I had no issues starting a single player game. Campaign maps worked for the most part and custom maps seem to work out too for the most part.

Interestingly, these campaign maps wont load for me:

  • NightElf01
  • NightElf04
  • Orc04Interlude
  • NightElfX02
  • NightElfX03
  • NightElfX05
  • NightElfX07
  • NightElfX08
  • NightElfX08Finale
  • HumanX01
  • HumanX02
  • HumanX03Interlude
  • HumanX03
  • HumanX04
  • HumanX05
  • UndeadX04
  • UndeadX05
  • UndeadX07b
  • UndeadX08
  • UndeadX08Finale
Which is strange, since they – or some of them at least – seem to load just fine in the showcase videos. Maybe it is because I used version 1.21 or because I have a German copy of Warcraft.

Other than that, the German localization works without issues. The non-English letters are displayed perfectly fine too.

Also, unless there is a lot of fighting going on, or the map was just loaded, the frame rate is rather good. I usually got above 120 fps during normal gameplay.

Some minor issues, I have not yet seen documented anywhere else would be: The cliff and ground textures in Undead04 seem to be broken for some reason. And the portrait of the Unbroken model is unanimated (which is most likely because its only animation is named “stand” instead of “portrait”).

I’ve only had limited time to look at the code lately, so I can’t really make much of a statement about how it currently looks.

I hope there is some – at least slightly – helpful information in my short review :)
 
Top