• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Warsmash Mod Engine (Alpha)

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:
Originally I only tested this binary distribution with the English Warcraft III edition, Patch 1.22. However, more recently, I was trying to use Patch 1.29 when possible to prepare for W3CE as the future. Based on my tests, this program should be able to function if you reconfigure warsmash.ini to point to your Reforged 1.32 installation, however when you do so, some of the features of this program will be missing and 1.33 and beyond are not supported.

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 are going to use Patch 1.28 or older, rename the "warsmashLegacy.ini" file to be named "warsmash.ini". Otherwise, if you are going to use Patch 1.29 (such as from a W3CE installation) then keep the "warsmash.ini" that comes with the ZIP.

If you double-click on the Warsmash 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. Based on my hardware tests thus far, I am currently requiring OpenGL 4.5 for Warsmash even though there is a solid case to be made that OpenGL 4.5 should not be required ideologically. So, backwards compatibility might be improved in the future, but on OpenGL 4.5 compatible systems right now is where I find that Warsmash really works.

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 Multiplayer Alpha 1.1j (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...
The error you listed should be re labelled as Map Not Found later in my opinion. So it is actually not finding MyMap.w3x in this case. Could there be a typo, such as map saved as "MyMap.w3x" but then you launched with "-loadfile MyMap.w3m"? In that case, the m at the end would be the problem typo.
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
The error you listed should be re labelled as Map Not Found later in my opinion. So it is actually not finding MyMap.w3x in this case. Could there be a typo, such as map saved as "MyMap.w3x" but then you launched with "-loadfile MyMap.w3m"? In that case, the m at the end would be the problem typo.
I have 2 files called "(2)BootyBay" in the same directory but one is w3m and the other is w3x, I build with the commands
Java:
-loadfile (2)BootyBay.w3m -windowed
-loadfile (2)BootyBay.w3x -windowed
But just the first build without an error (except for 'wasting memory' or 'can't load mdx' but the map runned), I tested with other maps and is the same case.

Edit: I posted the wrong command.
 
Last edited:
What is probably happening is that the -loadfile is not looking in the correct directory. The name "(2)BootyBay.w3m" refers to a file inside of the game MPQs so it will always find that file but it is not actually finding the map you were looking at in the editor. You could try modifying the "(2)BootyBay.w3m" map that you are trying to load, then launching again... I bet you won't see your modifications in-game.

I suggest resting this tutorial about the INI files to fix this problem. Essentially, -loadfile only looks for maps within the folders added as type "Folder" in the INI, and does not look in the current Warsmash program build folder, unless you add that build folder to the INI. One way to usually add it would be to add the folder name "." which refers to current directory on most systems. But, then it will still depend on the current working directory of the Warsmash application when you launch it, which can easily be somewhere weird when running from an IDE such as IntelliJ.

Edit:
So, as an example, I usually put my Warsmash maps in some folder that is something similar to

INI:
Type06=Folder
Path06="D:\Games\Warsmash\ReterasMaps"

It's an obvious folder where I'm just dumping maps for Warsmash to find, written out as full path in the INI.
Make sure that when you add an entry to the INI, such as the example above that has index 06, that then you put the "Count" at the top to +1 of that number, so for example if you have 0 to 6 then you need to have Count=7 at the top.
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
@Retera I'm not sure if that is the reason, I think is because the Gradle is old, because also throws me this message:
Code:
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.6/userguide/command_line_interface.html#sec:command_line_warnings
 
The IOUtils null pointer exception that you listed is happening in my code and not in gradle, so it is not affected by gradle other than with the current working directory of your program, which gradle may decide for you. If you want to fix it, you will need the map to be located in one of the folders listed in the INI data sources section.

You yourself said that the program was able to load "w3m" files, specifically Booty Bay. If the engine was able to load any map at all, then your gradle configuration is able to run, as far as I'm concerned.

Did you try the EXE binary distribution? If you really believe gradle is the problem, notably that binary does not use gradle. Getting familiar with it could be a starting point.

Anyway I totally know the feeling of interacting with a technology that feels unfinished or incomplete. I think a lot of us have that feeling. If you try running the Warsmash again in a year or two, I think that for sure I will have added the "Custom Games" feature where you choose a map from the "Maps" folder and you play the map that you click in the in-game UI. Once it gets to that point, it should feel exactly like Frozen Throne and you would not need to worry about this anymore. So, if you would like, you could wait until that time when that feature gets added.
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
You yourself said that the program was able to load "w3m" files, specifically Booty Bay. If the engine was able to load any map at all, then your gradle configuration is able to run, as far as I'm concerned.
In reality, now I don't know what is the real problem, I think is not the type file because I have a custom map that is a w3m file and didn't run.
The gradle I'm also not sure, the version is auto-generated so I don't think is repairable.
Did you try the EXE binary distribution? If you really believe gradle is the problem, notably that binary does not use gradle. Getting familiar with it could be a starting point.
What is that?
Anyway I totally know the feeling of interacting with a technology that feels unfinished or incomplete. I think a lot of us have that feeling. If you try running the Warsmash again in a year or two, I think that for sure I will have added the "Custom Games" feature where you choose a map from the "Maps" folder and you play the map that you click in the in-game UI. Once it gets to that point, it should feel exactly like Frozen Throne and you would not need to worry about this anymore. So, if you would like, you could wait until that time when that feature gets added.
The reason I wanted participate in this is I wanna know how the programs are created (in this case, this game), also to learn where they can fail, I don't wanna just "wait patiently" until the problem was "fixed" while I can do something.
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
Can you post:
1) Contents of the Warsmash.ini file you are using
2) Location on your HDD of the map you want to play?

I think this can help me help you
Ok, this is stupid, but while I'm doing what you asked to me I realized that there are 2 ini files, one in the builded Warsmash and other in the pre-builded, and I was editing that is in the builded, then I edited that is in the pre-builded and then I finally can run the maps (not every map but now what they have a little edits in the World Editor).

Really, I asking to the gods why this dumb things are still happening to me???
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
Ok, now that I finally can run the maps I add the life regeneration, it wasn't hard (I'm not sure how to upload it).
To do the other things that you asked me I need the IDs of the data and for some reason the modified editors don't show me them and the only way to look at them is using the Reforged Editor and I don't wanna open it, close it, use the Regedit and open again the 1.26 editor everytime.

Edit: Ok I can list them myself, but I just asked in case you already did it.
Edit2: Nah, it will take me hours, did you have a list of the IDs?
 
Last edited:
for some reason the modified editors don't show me them and the only way to look at them is using the Reforged Editor and I don't wanna open it, close it, use the Regedit and open again the 1.26 editor everytime.
Yeah, sometimes what I do is to open Units/UnitMetaData.slk in Microsoft Excel or a free alternative and then I can read the IDs from there.

Nah, it will take me hours, did you have a list of the IDs?
I didnt have a list ready to go at this moment other than just looking in Units/UnitMetaData.slk but a person could try to reformat what is in that file to a list that was more easy to read if they wanted.
For upgrades, there is also Units/UpgradeMetaData.slk

At some point, maybe I should consider rewriting the Warsmash unit data parser to query based on SLK column name instead of the 4 letter meta data ID. Over time, I have become convinced the original game was querying SLK column name. But for now, my code APIs basically require us to live off of those *MetaData.slk files.
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
I tried that of checking the daytime to consider it in the regeneration, the problem there is no way to reffer the actual simulation outside the class until I see, because every time I wanna add a reference, always there is another reference for the actual instance of the other classes, since I don't wanna screw the code I need a direction to do this.
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
At the end I achieve it, I just add in the CSimulation class:
Java:
private static CSimulation Instance;
And in the constructor:
Java:
Instance = this;
And I can do this:
Java:
public static boolean IsDayTime() {
    final float time = Instance.getGameTimeOfDay();
    return (Instance.gameplayConstants.getDawnTimeGameHours() < time &&
            Instance.gameplayConstants.getDuskTimeGameHours() > time);
}
And to the regeneration (I did a some other things, but principally):
Java:
final String regentype = this.unitType.getRegenType();
if (!Objects.equals(regentype, "none")) {
    if (Objects.equals(regentype, "always") ||
            (Objects.equals(regentype, "day") && CSimulation.IsDayTime()) ||
            (Objects.equals(regentype, "night") && !CSimulation.IsDayTime())) {
        if (this.life < this.maximumLife && !this.constructing) {
            float regen = this.unitType.getHPRegen();
            if (regen > 0) {
                regen *= WarsmashConstants.SIMULATION_STEP_TIME;
                this.setLife(game, Math.min(this.life + regen, this.maximumLife));
                //this.stateNotifier.lifeChanged();
            }
        }
    }
}
The problem is I don't know if there is a reason you made instanceable the CSimulation Class instead of making it static.
 
The problem is I don't know if there is a reason you made instanceable the CSimulation Class instead of making it static.
Hey, that's cool that you got this to work! I was trying to avoid static state where possible, just for the sake of the kinds of code design ideas that I was using.

Later on when we are not using -loadfile, and there is a button in the game to play a map, then exit the map to the menu, then play a different map, it will be possible for one instance of Java to have multiple CSimulation instances representing two different "simulation play sessions". I think that the original Warcraft 3 uses a lot of static state, and that is why we have bugs in the game where sometimes certain maps say "you need to exit Warcraft III and start it again before playing this map" because the Blizzard Entertainment Warcraft III program code will store variables statically, and then not clear them out when someone quits to the menu and then starts playing a different map.

So, knowing that there is this possible for errors, I was trying to avoid static state as much as possible. But I still used static state in one or two places for some of the attack type and damage tables. So I have not followed my own rule perfectly on this.
Because there will only ever be one CSimulation instance at a time then I think it is true that your change will always work in all cases. The only time this would not be true would be if someone made a very crazy mod of the game where players were jumping between two maps in a multiplayer session where the game engine was getting asked to "keep both maps running" or something like that. It's still a crazy idea. That will probably never happen.

So, in general, I think if what you're doing is working then it's great!
Edit: A week or two ago after I suggested implementing the hit point regeneration like this, I tried implementing it, too. I might update the github repo with my latest branch that includes my change in case you want to compare against a different solution for fun. It was really similar to yours but I used my instanceable paradigm and so the function to update HP only is called from CUnit.update(CSimulation) and then it takes a CSimulation passed in as an argument.
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
Hey, that's cool that you got this to work! I was trying to avoid static state where possible, just for the sake of the kinds of code design ideas that I was using.

Later on when we are not using -loadfile, and there is a button in the game to play a map, then exit the map to the menu, then play a different map, it will be possible for one instance of Java to have multiple CSimulation instances representing two different "simulation play sessions". I think that the original Warcraft 3 uses a lot of static state, and that is why we have bugs in the game where sometimes certain maps say "you need to exit Warcraft III and start it again before playing this map" because the Blizzard Entertainment Warcraft III program code will store variables statically, and then not clear them out when someone quits to the menu and then starts playing a different map.

So, knowing that there is this possible for errors, I was trying to avoid static state as much as possible. But I still used static state in one or two places for some of the attack type and damage tables. So I have not followed my own rule perfectly on this.
Because there will only ever be one CSimulation instance at a time then I think it is true that your change will always work in all cases. The only time this would not be true would be if someone made a very crazy mod of the game where players were jumping between two maps in a multiplayer session where the game engine was getting asked to "keep both maps running" or something like that. It's still a crazy idea. That will probably never happen.

So, in general, I think if what you're doing is working then it's great!
Edit: A week or two ago after I suggested implementing the hit point regeneration like this, I tried implementing it, too. I might update the github repo with my latest branch that includes my change in case you want to compare against a different solution for fun. It was really similar to yours but I used my instanceable paradigm and so the function to update HP only is called from CUnit.update(CSimulation) and then it takes a CSimulation passed in as an argument.
That's great, so I think I can continue with other thing, you telled me about the constructions not working, so I can work with that, so I need a direction.

PD: Isn't there a chat that we can talk instead of here?
 
Hey, sometimes for example last night I don't know if you are tracking all my posts or whatever but I posted some random opinion on an off topic hive thread while I was getting into bed. And I think at a time like that when I am getting into bed and post some opinion on some topic somewhere, for me it is easier in my mind to do that than it is to give meaningful and accurate instructions on how you can improve the construction system. I'm sorry if that's trouble for you, but it is something that happens as a result of how I am a hobbyist. I spent a lot of time on Warsmash already to this point and I really want to make my vision for it be achieved, but I have a job that I am working at 5 days a week, all or almost all the day long, so I usually only get to care about Warsmash and focus on this creative space on the weekends, primarily. Even then, yesterday I didn't do that and instead of communicating online much, I was digging into a custom faction on Warcraft 3 that a modding friend I met 8 or 10 years ago online recently created. This guy made a faction just for me to use as a possible future mod on Warsmash to help advertise it, and I think that's very cool. Rather than only play his faction, I was breaking it apart and trying to make it run outside of his map and learning about what I could do with it. I have made a lot of disorganized Warcraft 3 mods and certain parts of his generated jass script were fascinatingly well organized, in their own way.
Then yesterday evening when I was still at the computer, I forgot to reply to you and I played Diablo 2 Resurrected instead. I suppose I am not above the hypocrisy of playing Diablo 2 Resurrected. It has been fun for me.

So, it's just self serving really. From time to time I am doing whatever I want, and when I remeber I am happy to chat and help you learn this project.

I use Discord often, probably because other people use it. I never bothered to deeply evaluate whether it was good or not, but I have used it extensively. So, for better or worse, if you have a discord account, Discord could be one place to try to reach me that might possibly reach me faster.
 
Level 23
Joined
Jun 26, 2020
Messages
1,838
@Retera I said that because you took days to answer me, I understand that you are busy or you wanna relax, but I though at least you can tell me about the place we can chat, speaking of which, yes I have a discord, but where can I find you there (I'm not sure is the Retera Model Studio Users Group).
 
Level 2
Joined
May 13, 2020
Messages
18
Hi, it’s been a while since I posted here but I wanted to ask if there are some features which don’t need finishing quickly and no one is working on yet. I don’t have a lot of time to work on something at the moment, but I would love to contribute and may have a bit more time this month.
 
Hi, it’s been a while since I posted here but I wanted to ask if there are some features which don’t need finishing quickly and no one is working on yet. I don’t have a lot of time to work on something at the moment, but I would love to contribute and may have a bit more time this month.
Sure. There is probably more that is not done than that is done. I have three or four Windows 10 machines that I use regularly recently because I was preparing for the pandemic and never got rid of the old ones when I got replacements and although at least one of them is junk and cannot handle the GLSL shaders of Warsmash without modifications due to hardware limitations, basically at least three of them have their own local clone of the Warsmash git repo and they have all forked down their own path with modifications and have not merged back together yet. So it's about time for me to do that merging. There are also two remote mirrors, one that is public on GitHub for the world to see and one that is private, and the private mirror is sitting a few months ahead of the public GitHub mirror with my more recent updates. I'm not sure how extensively you've tested but as an example I believe the current public GitHub sourcecode is not actually capable of playing WarChasers in the manner that I presented in my most recent public showcase video on my YouTube account.

I was letting the public repo fall behind and updating the private repo for a bit because I was thinking that the private repo would only be marginally useful to the public while it's still under heavy development. In particular, because I enabled my Jass interpreter to execute during play, crashes are more frequent and dependent on map script which heavily restricts the number of maps that can be playtested without problems/crashes. Nevertheless, my goal is that the outcome will be that I can support a subset of Jass including map "config" functions, so that I can create the single player custom games experience where the user chooses a map from a list UI.

Once that's working, after that I was thinking of trying to take the hacked together multiplayer engine and see if I could get something functional for the holidays so that I could do multiplayer holiday fun with the engine.
But when I talk about a multiplayer experience on this engine, it still is not going to achieve my the goal at all for a very long time. Only the Orcs are actually anything close to a playable RTS gameplay if we fire up the engine with War3 unit stats and no modifications. The human build mechanics are missing, so humans can only harvest resources but not spend them on much. Night Elven build exists as a copy of Orc build, but isn't finished. Undead build was implemented enough that it looked functional in one video one time but it is largely untested. I think that on one of my computers the Undead build will actually alert "We cannot summon there" when the player clicks outside of a blighted region but I forget if that's included in the public GitHub mirror at the moment. Ghoul lumber harvest works and includes the eye candy to turn trees into a blighted state, but Undead buildings ability to spawn blight when finished constructing is probably missing if I recall and the Haunted Gold Mine systems are not in place so Undead can't get gold. Similarly, the Night Elves cannot get gold or lumber in any version except for two nights ago I was tinkering before bed and drafted a first iteration of wisp lumber harvesting that works for a few workers at a time but will give up instead of harvesting if the wisp can't find a tree quickly enough due to side effects of how the movement system is implemented.


Even if we added a way for all these races to get gold and create structures so that the Orcs were not the only "playable" race, the Research system is not implemented and crashes if we enable it from sourcecode and try performing any research at a building. There's some skeleton code but it's not finished. Similarly, the icon will show appearing to offer a way to upgrade a town hall to tier 2 in some of the recent versions, but the code to actually run a loadbar (but WITHOUT a unit queue UI) and then transform the unit to a new kind of unit with more HP and a different name is not implemented. I think the hardest part of that will be implementing a morph mechanic to transform a unit to a new unit type, but once that is done it will get re-used frequently. Maybe the Root ability will use that? But probably not; initially I am targeting emulating a Frozen Throne experience, and only after that I would like to mod my own engine to build something superior. So for the first draft, I would probably just hack together Root in a way that feels similar to how it was clearly hacked together on Frozen Throne. Don't know, because I did not implement it yet.

Even in a theoretical future where we fix everything I just listed and have a game where all races can access all their units and structures, heroes are not yet applying the "Techtree - Requirements Tier 2" stuff yet to limit to one hero per tech tier. Also, when they limit to one of a kind of hero at a time, the Jass native for this applies a limit that is implemented incorrectly. It allows us to train the hero a second time up until the train bar finishes for the first hero of that kind, so you can make two Blademasters for example, which is silly and broken. But the problem is the abstract concept of setting player unit availability from jass. Speaking of Jass, if I upload that version so you could try to fix that, the Jass debug system and the tracebacks it gives pointing to what line of jass caused the crash is still quite hacky and annoying to work with, so any improvements on that would be great.
A lot of the WC3 modders who are really into it on Hive's Discord told me that implementing Jass into my engine instead of just dumping in a lua library from online and having all maps convert jass to lua on the fly was a terrible idea, but I did it anyway. I am not yet building an idealistic engine to serve all purposes (yet!) -- at first I want an emulator of my childhood Frozen Throne experience, and then afterwards I may try to upgrade and innovate and make my own things from what I learned. Only then, I will be able to do my own Reforging and learn if my claims for years that Reforged developers were not doing a good job are actually true, or if what they did was actually best and I simply did not respect them.
If I did not have the rule of constraining myself to an emulator of Frozen Throne, the well-reasoned feature creep would make everything that I am doing into nothing, and I would have created something totally different. You can actually already play Warcraft III on the Starcraft II engine, and a lot of people spent more time collectively inventing Starcraft II to be the future of RTS moreso than what I have spent on this project. But I remained on Frozen Throne engine for years and did not move my projects to Starcraft II in part because I enjoyed the simplicity. Now Reforged made it more complicated, even though it's hard to point a finger at anything in Reforged and say it was wrong. So, when I get the opportunity to do my own Reforging in a few years, I want to start from an emulator of the actual simple experience that I know I value, and not be trying to start from a Reforged emulator for example. This has been my goal and yet most builds of Warsmash engine still have systems for loading MDX1000 models because they include so much stuff from Hive community that changed too quickly before I could save how I liked it, and also because of societal pressures on me from people I know who are somehow convinced it's a good thing when I can dump this engine on a PC that only has Patch 1.32 and then play the engine anyway.

So anyway what I was originally going to say is that even little things like training a hero is broken. Ability levels are broken. Accordingly, there is no system for leveling a skill on a hero, just some skeleton code that started implementing it but was not finished in CAbilityHero. I have systems for ability menus though, so even if they're a bit obtuse to use it's conceivable to me that implementing learnable hero skills probably wouldn't take that long. But some stuff will have to change.

I'm sorry this is not a bulleted list but if anything through all of that reaches out and grabs your attention and calls out to you as something you would enjoy tinkering with, I would say to have at it. Even if I end up egotistical and don't use your work or something, or even if I forget to check your fork like how I implemented my own HP regen solution instead of looking at yours, I think that the experiences we have when tinkering with this system and adding stuff can be good experiences. The sky is the limit, you can learn anything, and it builds you into a better person even if Activision Corporate emails me tomorrow morning with a C&D on this project and I delete all Retera accounts and disappear forever. Even the original devs of War3 basically say this -- just do whatever and have fun and keep learning.

( To be clear, though, I had it on decent authority that Activision will not care what I do as long as I continued to make no money and I just mod Warcraft 3 however I want for fun, though. Sounds to me like maybe Activision will not be making any more RTS games, and their lawyers probably cost $1000 per hour for a consultation, so they're not going to even bother to consult their lawyers for something worth $0 like my Warcraft 3 modding habbits. )
 
Last edited:
Level 2
Joined
May 13, 2020
Messages
18
Sorry for taking that long to reply. Unfortunately, the time of the month when I have more time has not yet arrived and things got even more stressful than expected. I wanted to take my time and read your message properly and not skim through it.

Yeah, keeping different project versions consistent over multiple devices is a problem I know too well.

The Jass interpreter sounds very interesting, but I can imagine that it is a pain to get running consistently.

Fixing some of the construction stuff sounds like something I’d (hopefully) be able to pull off. Maybe even the blight mechanic or the hero training mechanic. I’ll have to look at the code again next week to see if I understand it well enough yet to properly integrate these things but I’m looking forward to it.

Thank you for letting me know about what I could try!

Absolutely, I agree that doing things like that for the sake of the experience is the best way to approach it. And it is exciting to experiment with the code and learn something while doing so.

(That’s good to hear. I mean, it would still be a real shame if they shut it down.)
 
Level 25
Joined
Feb 2, 2006
Messages
1,669
This project is awesome.

Some feedback (nothing serious):
  • Missing yellow arrow icons for Sentinels and Alliance Campaign and some of the missions in the list.
  • Cannot choose the Difficulty in the campaign screen (no combo box).
  • I cannot choose any map when I go to "Custom Game". There is no list of maps. (I have an old English Warcraft pre Reforged).
  • Reforged support would be cool. If I place it in the Reforged folder it doesn't work from scratch. That would be useful for Reforged users even if you don't like Reforged. You will get more users = more feedback.
  • The text on the loading screen of The Durotar campaign is placed wrongly. It covers the title text.
  • Starting the Durotar campaign crashes the game. I guess this is because it does not support all the triggers yet? Maybe instead of crashing you could just load the terrain and not execute the unsupported code stuff (it's just a guess maybe it is something different since I am able to start other missions).
  • Maybe add the Reign of Chaos campaigns to the campaign screen.
  • I just started one mission of the Frozen Throne Undead campaign and got a revealed map with all the units on it and I think wrong alliances since units were killing each other from start. Maybe the units were placed there for the cinematic so I might be wrong.
  • Opening the main menu in a single player campaign map does not pause the game.
  • I cannot see the square of my view on the minimap so I do not know where I am with my camera.
  • No chat in the singleplayer mission -> no cheats.
  • No hero icons on the left after training a hero.
  • Can't click on the unit portrait to move the camera to its position.
  • Orc UI although I am playing Undead.
  • Cannot hit barrels/destructibles with right click order (I need to explicitly order the attack).
  • No options yet -> no permanent health bars, volume, resolution, wide screen support.
  • No fog of war?
  • Crashes when starting several scenarios of the campaign.
Maybe when you fix/improve these things and no more crashes happen you can start supporting JASS functions one by one. I am really impressed with this project!
 
I cannot choose any map when I go to "Custom Game". There is no list of maps. (I have an old English Warcraft pre Reforged).
Funny thing I discovered here, but when I go to the bottom of the main tool page and navigate to the "hosted project forum" and check the teaser videos section, it looks like the author of this project, Retera, has a version of this tool that is ahead of the one we have available for download. For example, the last two videos feature a single player menu that is clearly able to choose a map, as well as a video claiming to be footage of multiplayer support that also features jass triggers in multiplayer, automatic right click of barrels, and a bunch of other stuff that doesn't seem to be in this download (like you noted).

Maybe Retera intends to publish that newer version at some point in the future for us? @Retera
 
Level 5
Joined
Mar 1, 2020
Messages
22
I would love to test the latest version
As mentioned in other thread, I've been playing with GUI configured multiplayer. This bundle has now been updated with a test build for that. More info here:

Edit: Would it bother anyone if I take down the older alpha binary from last year? There is a huge version jump in the multiplayer client because it uses JASS.
 
As an update to anyone trying to use this, after I posted the note about multiplayer I forgot to test the live server powering the multiplayer to check that it worked similarly to how things had been on my local machine.

I found that there was a bug preventing games from starting where the IP : port of the hostbot sent to each client was incorrect. It was sending 127.0.1.1 to each client (for the handshake to switch from TCP chat lobby server to the UDP lock step gameplay endpoint) even though it had the valid port number, so then games would not start. (Technically they would start, and then ingame the world would be frozen.)

No one reported this issue to me so I do not know if anyone had tested the multiplayer capability yet. However, the "warsmash.net" server deployment version now has this issue fixed. I will probably get the changes committed and pushed to the public github sometime soon (for anyone who is trying to use only their own gaming network server instance and not use mine).

Edit:

Updated with a few fixes, but still a ton of stuff yet to be fixed.

Edit 2:

Updated with a few more fixes. After some multiplayer with Hayate/BlenderBoi, we ran into some stuff that should be fixed in this later round of updates.
 
Last edited:
Level 2
Joined
Jan 17, 2017
Messages
11
As mentioned in other thread, I've been playing with GUI configured multiplayer. This bundle has now been updated with a test build for that. More info here:

Edit: Would it bother anyone if I take down the older alpha binary from last year? There is a huge version jump in the multiplayer client because it uses JASS.
Can't you simply use the github releases for this?
 
Level 25
Joined
Feb 2, 2006
Messages
1,669
What's the point in developing the same game second time?
I don't hate the project, I'm just not interested.
If this version would work well, it could add features to improve the quality of maps which are missing from Reforged and bring back the feeling of the original Frozen Throne at the same time. I like the old GUI of the main menu and Battle.net.

Some features which could be added in this project which are missing from Reforged/Frozen Throne:
  • 24h servers where more than 24 players could join and leave at any time. This would allow RPG servers.
  • Map transitions/campaigns in multiplayer.
  • A proper JASS debugger with break points, stack traces etc.
  • Many new natives to access more from the game engine.
  • Fixes of all the known bugs in Warcraft which Blizzard simply does not fix.
  • Remove limitations: All tilesets/cliff types in one single map, gigantic map sizes and player numbers in one map.

Since Blizzard doesn't add many requested features and does not fix most of the bugs, this could at least provide them to make more interesting maps in the future.

Some feedback for the current version:

  • Clicking on the Reign of Chaos icon in the main menu does nothing for me and the game freezes or something.
  • Having multiple units selected like Peasants I cannot see the build icon.
  • The teams combo boxes in the lobby do not work.
  • The color combo boxes in the lobby do not work.
  • When I start a melee game, I have instant victory for some maps (not all).
  • Map folders are not shown in the lobby.
  • Maps are simply listed with their file name (not that important I know).
  • Minimaps do not show neutral building icons.
  • Advanced Options do not open.
  • The background sound in the main menu is a bit weird.
  • No minimap square, buttons, icons etc.
  • No tooltips in Time of Day, gold, food etc.
  • Loading screen does not show minimap and no player names + races.
  • Portals do not work. I guess the whole war3map.j has to be interpreted to make everything work including the victory stuff, enabled portals etc.
  • No chat.
  • No log GUI.
  • Battle.net UI could show the online users on the right side.
  • Creating a custom game in your Battle.net and starting it led to a freezing game.

I think you know most of these issues but it would be cool to see them fixed soon. A JASS interpreter is probably a lot of work but at least interpreting the basic functions like Waygates and everything else for melee maps would be nice.

I am actually really impressed with the Battle.net support. I have joined a custom game with your name in it. Maybe it is hosted permanently. Good multiplayer support with some join functionality for running games would attract more players.
 
Level 7
Joined
Aug 5, 2018
Messages
62
When an open-source engine recreation gets far enough in quality, it becomes superior to an undeveloped proprietary engine to keep the game alive. This isn't very common, because getting an engine to that point with hobbyists is very difficult. But it's possible. For example Caesar 3 has Julius (open-source engine sticking to vanilla gameplay but with loads of QoL changes) and Augustus (variant of Julius with loads of gameplay improvements). The game experience is much better than with the original.

I would love to see this engine get to the point where it's a reasonable alternative to using Vanilla 1.29.
 
I would love to see this engine get to the point where it's a reasonable alternative to using Vanilla 1.29.
Me too. Did you manage to play this engine and have some fun? How far did you get, if I might ask?

There is bug in the network code right now so it often freezes during play.
 
Level 7
Joined
Aug 5, 2018
Messages
62
Me too. Did you manage to play this engine and have some fun? How far did you get, if I might ask?

There is bug in the network code right now so it often freezes during play.
I haven't tried it out for now, I haven't been playing W3 lately. But I think that the concept and what you have achieved so far are promising, and that there is a much better chance for it to work long term than of Blizzard sorting out the mess they've created. I'll let you know about my impression when I come around to testing it.
 
work on 1.31?
I had problems with it. You have to recompile JCASC for the other version of CASC, and then if you get that working there was some encryption problem with the 1.31 version of the WAV files when they would load via JCASC or something.

What does work, in my experience, is to use JCASC to extract the exact contents of 1.31 to a folder and then mount that folder as a Warsmash data source. You can read more about how to probably do that in the README of Warsmash that has WC3 version-specific descriptions of how to configure this technology:

[You might need to CTRL+F for "Warcraft III: Frozen Throne: Patch 1.31" in this README file]
 
What are the benefits of this app?
It allows source-code modifying of behaviors, so that means that we can do stuff like adding WoW features or porting to mobile phones:

Or the 3x3 inventory that can hold 9 items like in this video, which would probably never work on Reforged UI Frame APIs:

As a note, I published an update to the binary download today that includes a bunch of additional changes from the past several months, including a pausable jass VM that supports TriggerSleepAction as well as the JSON ability system contributed to the GitHub by the user Glasir/Glasislundr
 
Level 1
Joined
Oct 2, 2023
Messages
7
hello my friend Please add many new features to particle emmitAR 2. For example, I would like to ask you to add filters that make the 3x3 textures look intact in the game and the extremely transparent textures of the emmitar texture.
And one more request, can you invent a program to make an easier ribbon emmiter animation for warcraft3 itself? that is, you animate in it, for example, you write the animation time of your model 0-200 (for example, "stand" state), you animate in the program, and when you are ready, you enter the generated codes of that animation into your war 3 model editor and connect to bone transfer the value to the rotation translation places of the ribbon emitter and the problem is solved.


I apologize if google translator translated some of my words incorrectly
 
Level 1
Joined
Oct 2, 2023
Messages
7
my goal is similar to yours bro. that is, the difference is in particle states. I say popcorn fx effects should be similar to ordinary warcaft3 classic effects. I will soon send pictures and concepts of my dream particle emmiter, ribbon emmiter and new emmiter coupler, which I hope you will use in your project. thank you very much in advance!
 
Please add many new features to particle emmitAR 2
Although this is possible, it would probably require players to use a recompiled version of the engine. For example, when I was using MDX1300 in the engine and loading from the WoW alpha build someone sent me, those have a different particle emitter format for PRE2 and so if the model version is 1300 the parser would have to jump over a bunch of extra data. Rather than to render that data, since I was not familiar with the WoW stuff I skipped it while parsing, effectively removing it. However, if it was desired, like you are thinking it would be possible to use your own particle logic in a custom recompiled version of this project.

But I might hesitate to throw that into the mainline engine itself unless if it was blocked behind some notably unique version information that would not conflict with any present or future model versions. Maybe a separate chunk type like PRE3, or perhaps a different model file version that isn't 800/900/1000/1100 nor 1300/1400/1500 from WoW alpha (which stupidly are from 2005 from "the other time that the version number increased above 800" and is an independent reinvention of bone weights and other stuff that was added in Reforged)
 
Level 1
Joined
Oct 2, 2023
Messages
7
Although this is possible, it would probably require players to use a recompiled version of the engine. For example, when I was using MDX1300 in the engine and loading from the WoW alpha build someone sent me, those have a different particle emitter format for PRE2 and so if the model version is 1300 the parser would have to jump over a bunch of extra data. Rather than to render that data, since I was not familiar with the WoW stuff I skipped it while parsing, effectively removing it. However, if it was desired, like you are thinking it would be possible to use your own particle logic in a custom recompiled version of this project.

But I might hesitate to throw that into the mainline engine itself unless if it was blocked behind some notably unique version information that would not conflict with any present or future model versions. Maybe a separate chunk type like PRE3, or perhaps a different model file version that isn't 800/900/1000/1100 nor 1300/1400/1500 from WoW alpha (which stupidly are from 2005 from "the other time that the version number increased above 800" and is an independent reinvention of bone weights and other stuff that was added in Reforged)
good I will post pictures and descriptions of the missing and bugged slots of PE2 soon, it will take me a few days!
 
Level 1
Joined
Oct 2, 2023
Messages
7
Hello bro!
I have posted a picture of what I have in mind now and I will let you know if there are any other thoughts
1-Emitter Latitude: this is a function that tilts the effect moving along Z to 0-180 degrees, a function that must be placed in each of 3 segments
2- Flags-Team Color Ingame: that is, a function that moves to Z by coloring the emission particles in 12 or 24 different colors. You can say that there is a correct Replaceable ID feature 2, but the bug feature where he can't switch from that Hero Glow form to anything else could have removed him from PE2.
3- Circular Emitter: This is a function that directs the distance between the X-Y axes to Z. Its activation options are: -1 to Z from the left side, 1 to Z from the right side, and finally 0 to no Z direction
4- Filter Mode:
Blend-Additive- type of filter added together XD. This is more like Reforged emitters.
Mega-Blur- This is a type of effect that emits sound from heat.
For example: (Time: 1:25)

Shadow-Blend - A strange type of smoke effect.

2D and 3D filter types are the perfect way to improve the functionality of Tail.

Bro I have some more thoughts. I hope to share the rest of my thoughts with you in a few days. Yes, I would like to share the Flare Emitter function with you, but the messages with pictures are not ready. After a few days, I will introduce you again with my ideas. I think you will analyze my ideas. Many thanks in advance for the thoughts!
Although this is possible, it would probably require players to use a recompiled version of the engine. For example, when I was using MDX1300 in the engine and loading from the WoW alpha build someone sent me, those have a different particle emitter format for PRE2 and so if the model version is 1300 the parser would have to jump over a bunch of extra data. Rather than to render that data, since I was not familiar with the WoW stuff I skipped it while parsing, effectively removing it. However, if it was desired, like you are thinking it would be possible to use your own particle logic in a custom recompiled version of this project.

But I might hesitate to throw that into the mainline engine itself unless if it was blocked behind some notably unique version information that would not conflict with any present or future model versions. Maybe a separate chunk type like PRE3, or perhaps a different model file version that isn't 800/900/1000/1100 nor 1300/1400/1500 from WoW alpha (which stupidly are from 2005 from "the other time that the version number increased above 800" and is an independent reinvention of bone weights and other stuff that was added in Reforged)
 

Attachments

  • Emmiter2 Picture.png
    Emmiter2 Picture.png
    151.5 KB · Views: 7
Top