Retera / WarsmashModEngine

An emulation engine to improve Warcraft III modding
GNU Affero General Public License v3.0
192 stars 37 forks source link

Suggestion: Create a new fork that is fundamentally the same, but still not WC3 (basically a twin with some twists) #13

Open onlyreportingissues opened 2 years ago

onlyreportingissues commented 2 years ago

Maybe you can borrow the assets from this open source game https://github.com/0ad/0ad for now, till the fork has its own assets in the unforeseen future. ( A YouTube video about the game: https://www.youtube.com/watch?v=_8HUuR8jGGg )

0 A.D. license: https://github.com/0ad/0ad/blob/master/LICENSE.txt

Retera commented 2 years ago

Due to the nature of the current codebase doing what you are asking would likely take an incredible of time to do, but I appreciate the sentiment and honestly wish that I had planned more for that because at some point I probably WILL want to do what you are saying.

v4dkou commented 1 year ago

A potentially interesting stepping stone in that effort could be trying to replicate both Warcraft 3 and Starcraft 2 off the same core codebase (considering SC2 engine has a lot in common, like .m3 models)

This would also attract interest in the AI community who currently have to use an official client, which is not cross-platform (although Wine + free starter account work) and not open-source (although, it has a very extensive API)

By the way, if we ever start working on this OSS Starcraft 2 client, we'd need to re-implement the protocols used in this API https://github.com/Blizzard/s2client-api

Retera commented 1 year ago

These engines do not have M3 models in common. There is almost nothing in common between SC2 and WC3 engine other than the visual experience. Running SC2 on a WC3 emulator is technologically akin to trying to run Windows 7 experience using XWindows. As a user they may look similar, but they are not compatible technologies. You might be able to create a mod that would run on Warsmash using space themed character assets and behaviors, but even after a large technical undertaking like that in the end you would have a very different, new game experience that would not match SC2.

Some reasons why SC2 will not run on Warsmash:

So, I am not saying anything would stop you from going to the Hive Workshop modding site and downloading a ton of ported Starcraft 2 assets, then opening Microsoft Excel and providing hp and damage values for these guys in each their own row and saving it to the format Warsmash expects and then playing it. You could totally do that. I could probably do that in a day or two if I was on vacation and my life depended on it. But it would probably look nothing like the Starcraft 2 that you know.

Alternatively, since an emulated warcraft mod like that probably doesn't interest you, you could write your own engine and make your own open source Starcraft 2 emulator project from scratch. I don't know if a project like thay already exists, but obviously you could copy any of my code that you needed to help with that. I am just incredibly skeptical that literally any of my code would help with that... at all...

v4dkou commented 1 year ago

I am aware of differences between SC2 and WC3 engines, and I don't agree that they are severe. Each subsystem has been improved over the years (like the upgrade from MDX/M2 in WC3/WoW and to M3 in SC2), but those are (in my humble opinion) just that: upgrades.

Most of the things you mentioned could be fixed by

  1. improving existing code (rewriting path-finding)
  2. making subsystems pluggable (i.e. provide 2 different implementations for unit data loaders, XML and SLK)
  3. adding things on top of the existing engine, having them disabled for "Warcraft 3 mode" (postprocessing, shader effects, etc.)

I was not trying to convince you to do any of that, just want to know the direction of this project, so as to gauge whether I could contribute in a useful manner.

I am trying to emulate my childhood experience of Warcraft 3 modding by immortalizing that technology. That explains it perfectly, thank you. I might have been under the wrong impression that this project is about providing a platform to make modding easier.

By "a potentially interesting stepping stone in that effort (of making the engine re-useable)" I did not mean "crudely imitate SC2's gameplay". Of course, there are many gameplay differences.

For instance, in SC2 the limit on units in one control group has been lifted.

And the way I see it, that is what could make this an interesting platform for mods. Imagine being able to pick and choose game play mechanics from these two games?

Warcraft 3 adventure map that has a giant golem chasing you through the cliffs like a Colossus sounds fun to me. But you're probably right, it might be easier to do this with Starcraft 2 Editor.

Retera commented 1 year ago

I am trying to emulate my childhood experience of Warcraft 3 modding by immortalizing that technology.

That explains it perfectly, thank you. I might have been under the wrong impression that this project is about providing a platform to make modding easier.

I feel like this comment is meant as an emotional jab at me given that the front page of this project says that it intends to make modding easier. To be honest, as I write this, I am actually laughing out loud quite a lot. Somehow this is humorous to my tired mind. You're not wrong; obviously I like the idea of making modding easier. Maybe I was writing without thinking to say that I want to emulate my childhood. But are these two goals not the same? I think they only become separate if we decide to separate them. It begs the question, what is modding?

Have a look at the first few seconds of this video: https://youtu.be/klYVCdpk7u8

The user CanFight sent me a Warcraft 3 map he made that lets you walk around in a minecraft world and place blocks. You can already do that with Reforged, but you cannot change the selection cap to more than 12 units or change a hero to hold more than 6 items. This is really counter intuitive if you think about it. From my standpoint it feels like because the modding community encouraged Blizzard to try to make Warcraft III into some open-ended game engine, we completely skipped over offering the possibility to make basic changes to the Warcraft III RTS experience in any reasonable or short amount of time.

But I think the world is kind of at a time where we collectively struggle to even understand what that is. Is Warcraft 3 the pathfinding system? Is it the selection cap? Or is it the (exceedingly broken) concept of the Ability Editor that lets us tweak magic values in property maps while prohibiting us from actually creating new abilities without a grotesque slew of a workarounds? Or is Warcraft 3 simply a brand name of Arthas and Uther that was bought to be used to help hype Arclight Rumble Mobile?

I am well aware that what I am building is ostensibly not reasonable. If we spent the time to make absolutely everything in the entire engine pluggable like Unreal Engine or whatever, then we could probably have considered this project done about the time that it had the capacity to render a 3D model. Maybe everything beyond that is up to the user? But then, why not just use LibGDX? If one were to use Box2D for collision and LibGDX's ModelBuilder and ModelInstance stuff for 3D or whatever they advocate these days, you would have a camera class and the ability to load 3D models and what else do you need? You could maybe draw some units in blender, drop those in and give them Box2D collision nodes, and then use Scene2D to draw some nice buttons for unit abilities or something like that.

Warsmash does almost none of that. Warsmash is crazy town. I have a local copy of World Editor where I can draw a world and press Test Map and it opens Warsmash. Are you going to link Galaxy Editor's Test Map button to directly launch Warsmash? I do not think that would be easy to do.

I am in part exploring the extent to which my very human creative mannerisms could have gone if Warcraft 3 were more modular, like you say. But, because I know that will take a long time to do, in many cases I started off by emulating the Warcraft 3 and then I just hardcoded the behaviors. So, for now in those cases, modularity is achieved by simply editing the sourcecode.

I have played with several forks like that, where I did stuff that (unlike the game of Minecraft) would be generally not reasonable or not possible to build on Reforged:

Here's one where the command card grid is 3x5 like Starcraft 2, and the unit train queue has 9 slots instead of 7: https://www.youtube.com/watch?v=F_apm4lGemI

And here's one where the hero inventories can have up to a 3x3 item grid of 9 items, instead of being locked to either 3x2 (or else a popout window custom system that can't show cooldowns and can't distinguish right click from left click): https://youtu.be/VDowmZA8L3s

So, surely it would be nice to eventually rip out my UI spaghetti code and make a modular userscript UI on a system composed of model instances and UI buttons. But I hardcoded a lot of things and got a little bit away from that in my first iterations of a Warcraft 3 emulator.

v4dkou commented 1 year ago

Glad I've made you laugh! 🙂 I was being a bit quippish, hope that no offense was taken.

The last video looks very fun indeed; fix a camera behind the hero's 3D model and it will look like World of Warcraft pre-Alpha. I wonder whether this is how the project started...

Anyway, I guess for the time being it's best not to set wide goals like the original issue suggests so as not to spread efforts too thin.

Thanks for extensive replies!