Mix two W3 Versions

Status
Not open for further replies.
Level 4
Joined
Apr 11, 2021
Messages
31
Hi, I was wondering is it possible to kind of Mix 1.31 and 1.26a ?

The thing is, I play W3 on GameRanger and everyone on GR uses 1.26a which is outdated
I was wondering is it possible that we mod 1.31 in a way that its version change to 1.26 and we can play on GR ?
And also modding the values and metadatas like damage and health and etc of each unit, so there would be no difference in online game and game would be sync,

The only thing i want is 1.31 Ui and rendring engine, which is modern
and the ability to play with 1.26a
 
Short answer: nope. If only for melee stats, mostly yes.

There are multitude of things to account between these two versions. New abilities like Sundering Blade, or UI expansion that adds 2 frame positions (5 and 6), and let's not get started with the natives. Yes, memhack and render edge exist, but that's another whole beast. If you want expanded view, consider Render Edge. That is 1.26 and should fit the camera needs.
 
Looks like Daffa beat me to the punch here, but you might be entertained by the contents of the spoiler in this post that I was writing:

mod 1.31 in a way that its version change to 1.26
Please give up on doing this, this will take you longer to do than the time that you will remain interested in modding Warcraft III, because it is so complicated.
Do not underestimate the substantial behind-the-scenes changes made by the Reforged team. Structurally and internally, 1.31 is much closer to Reforged and would sooner crossplay with 1.32 than it would with 1.26. Still, it will not ever crossplay with 1.32 (not EVER!) but I am saying that you would be more likely to make that happen than to make it crossplay with 1.26.

I can explain further technical details at some point if you are interested, because I believe that I understand enough to explain many of the technical reasons behind what I am saying, but I am telling you that it is better for you if you decide not to be interested.

As a background: who am I? I am a fan of Warcraft III modding who has been modding the game for years as a hobby, and I am not affiliated with Blizzard Entertainment in any way, but I decided that I would try to rewrite the game of Warcraft III by combining freeware tools and programs from here on the Hive, so that I could entertain myself by learning more about how this game is put together and possibly get the experience of making "source code mods" some day of a nearly identical hobby freeware game engine written in a different language than Blizzard's Warcraft III. My rewrite of the game is very incomplete AND NOT YET WORTH YOUR TIME TO USE IT so I'm just mentioning it so that you know what has caused me to learn some of these things.

So if you can imagine this world I exist in where I can change anything about the code, I have hacked in support for using a 1.31 installation as well as using a 1.26 installation (and many others as well) while loading my own custom code piece, which you can think of as "replacement game code" that reads from the same characters models and unit data information. So this forces me to become intimately aware of the extensive differences of 1.31 and 1.26, because I have basically created game code that can load either one and use it to play something akin to the Warcraft III experience. I will be playing 1.31 for a bit, and then I change a config file to tell the game to load assets now from my 1.26 installation instead, and I make one or two code changes, and then I run the game and it still launches. Of course, when I say "the game still launches", I am not referring to the Blizzard Entertainment Warcraft III program. My program when it runs on 1.26 will use that data and information, but I have different code, so for example if you play it on a widescreen monitor I have dictated to the computer to stretch in a different way. The space around the UI stretches and is left with black empty space instead of the whole game stretching.

1621181752147.png

And I can do this on 1.26 because I am not running the program code of Patch 1.26, nor any program code from Blizzard, but instead I am running completely my own program where all design decisions are dictated by me telling the computer what to do. Each pixel of each murloc is rendered using a complex set of linear algebra equations that I typed into the computer by copying from information available here on the Hive.

Now, unfortunately what I created does not have any multiplayer and frequently crashes, because it is not Blizzard's polished game code, and so I am not advocating for you to use it at this time. But the point is that I have experienced "switching assets" from 1.31 to 1.26 with "the same code" and had my program "still work" and so this gives me background to explain to you the issues that you will run into.

Even when my program is completed, and let's assume its able to switch underlying assets like this, if we assume that in 2022 or 2023 there might be a time when I add multiplayer to my code, at that time still you WILL NOT EVER be able to have one guy with a 1.31 installation, and another guy with a 1.26, and they both run THE SAME CODE of my game engine and join each others' game. Even though it might be "the same code" from me to run either way, this cross compatibility will never exist. Now, I am going to try to explain why.

Imaginary Steps (You Should Never Actually Try) That Might Make 1.31 Run Like 1.26

Step 1: Change MAX_PLAYERS constant

When I am playing a 1.31 map on my replica of the game code, and then I want to change to emulate the 1.26 client with my code, the first thing that I always have to do is go into the game source code and change the MAX_PLAYERS constant. In my replica, this is a magic number that sets the number of players in the game. For the 1.31 emulation it must have the value 28, whereas for the 1.26 emulation it must have the value 16. Typically we refer to this as "12 players" or "24 players" but there are 4 other neutral players in the game. This same constant changed in the 1.31 source code, so to begin hacking your 1.31 to become 1.26, you must do some sort of hack to the 1.31 binary game code (which is probably both illegal, and outside my knowledge of how to do it) where you basically would go to anywhere in the game engine that the number 28 is used for this purpose and change it to 16. When I wrote my own game to play this sort of Warcraft III style of experience, I was using a totally different programming language than Blizzard used to create Warcraft III -- my game is run with an interpretted language -- and this means even when mine is running, it doesn't actually "run" and its more like my code is "being run by" another, smarter program. As a result, changing this ONE SINGLE constant from 28 to 16 is easy for me. However, we assume that the 1.31 C++ code uses some constant that is statically compiled in C++, then it is safe to assume that although the number is probably in one place in the sourcecode inside the Blizzard Entertainment offices in California, after the program has compiled the constant is likely to be inlined and all over the place in the binary. So essentially you will spend your first day(s) of this project searching through Warcraft III.exe with a memory analyzer or something, and I don't have experience using those, and you have to find every place where you see the number 28 used for a player count and change it to 16.

Step 2: Changing Game Assets
To understand the game assets, it probably helps to understand where everything came from during the design of Warcraft III. The cleanest way that I have ever seen this is if you look at very old versions of the Reign of Chaos. You have mentioned hit points as an example of something must absolutely match for network syncing, and you are absolutely right. It turns out, there are tons of other things that changed on Patch 1.31 besides hit points -- and I do mean tons -- but let's start with the hit points.

The hit point values of every unit, organized by the unit's type (footman, peon, peasant, etc) are saved in a file that back in the Reign of Chaos was named "Units\UnitBalance.slk". The SLK extension is probably something most users are not familiar with, but you can actually open it in Microsoft Excel and on the Reign of Chaos Patch 1.00, when I install from the disk, this Microsoft Excel-compatible Spreadsheet still has the comments in there. As I can see by opening the file, there are three HP related columns on the spreadsheet, "HP", "realHP", and "regenHP". We can see some comments. Frank Pearce left this comment on regenHP:

Frank Pearce:
HP regeneration rate per second.

There is also a comment from an unlisted author on "realHP":

Hero strength determines HP. This is the calculated, actual HP of the unit.

I would say that I believe "realHP" is not used in the modern game engine, and was probably only in this excel spreadsheet to help the guys in 2002 figure out how to balance the units.

So, the reason I mention any of this is that in order to do what you are asking, you are going to need to understand the very specific information in these Warcraft III installations in order to do what you ask.

Now, let's take these HP columns as an example and talk about their evolution over time and where they are stored in Warcraft III: The Frozen Throne patch 1.26, versus where they are stored in Warcraft III: Reforged PrePatch 1.31. Yes, I have met people who are deeply offended that I refer to Patch 1.31 as the Reforged PrePatch, because it does not have the Reforged menu and they do not hate it. However, the patch notes for Patch 1.31 say, "This is the last patch to prepare for Reforged" or something similar, and I am calling it Reforged because of its design architecture as a piece of technology, not because of how people feel about it.

In the Frozen Throne patch 1.26, the game was built as an expansion called "The Frozen Throne" layered on top of an installation called "Reign of Chaos" for the base game. So, using HP as an example, this information was in "Units\UnitBalance.slk" originally. But you don't see that file on your computer. It is stored in a container. We can think of this container similar to how you probably have used ZIP files in the past. However, to improve performance and encrypt the game against hacking, the original 2002 game did not use a ZIP as the container for game information. Instead, the 2002 game developers used their own container called "MPQ" which stands for Mike O'Brien PaQ. It really is basically just a file container with some extra performance and encryption stuff going on to improve load times. At this point, there are 20 years worth of technologies built to modify them, so they are basically as easy to work with as a ZIP, or almost so.

When we look in the Reign of Chaos installation, determining the hit points for a unit is very simple. We open the "War3.mpq" archive and we find "Units\UnitBalance.slk" in there. This is the only place on this version where unit hit points are stored.

The first time that this became more complex was when the first Reign of Chaos Patch come out sometime in 2002. Users who connected to Battle.net would download new game data into a file called "War3Patch.mpq". This was a second, new container of game data. This file contained its own copy of "Units\UnitBalance.slk" with NEW and UPDATED versions of the unit hit points for the patch. When the game looks for any file to load, such as "Units\UnitBalance.slk", now the logic is
  1. Look in "War3Patch.mpq" to see if you have the file at this patch
  2. If that fails, look in "War3.mpq" to see if you have the file at this path
So, this meant that the old War3.mpq wouldn't change each time a new patch was installed, and as a result downloading patches was relatively quick. The patches would just replace or modify "War3Patch.mpq" with new updates, and it was a much smaller file that contained only the files that had actually changed in the patch.

So then The Frozen Throne expansion came along and suddenly there are a lot of different versions of the hit points of each unit. Maybe there is a unit who needs 300 hit points in the Reign of Chaos campaign, 200 hit points in the Reign of Chaos balanced online matchmaking mode, 400 hit points in the Frozen Throne, and 375 hit points in the Frozen Throne balanced online matchmaking mode. This seems rather complex. To account for this, the code for where to find unit information has to get more complex. So we introduce new copies of "Units\UnitBalance.slk" in new locations:
  • "Units\UnitBalance.slk" - This file is still here, but it is replaced in Frozen Throne to have the latest melee competitive play ruleset for Frozen Throne. We can think of it as "the official" version of the hit point values. If you go online and join a ranked match, it would use this one. It's the go-to solution.
  • "Melee_V0\Units\UnitBalance.slk" - This file is a copy of the version from the Reign of Chaos, but it is formatted differently so that it can load on the Frozen Throne engine. This also has the melee competitive play balance changes to provide the latest and greatest Reign of Chaos gameplay. That way you can crossplay, so that when you play Frozen Throne, you can go back and play a game with a Reign of Chaos ruleset by launching 'Warcraft III.exe' instead of 'Frozen Throne.exe'.
  • "Custom_V0\Units\UnitBalance.slk" - This file is a copy of the oldest Reign of Chaos version -- the one used to make the Reign of Chaos campaign missions. It can be updated slightly to match the Frozen Throne format for the data, but the contents are the HP values of the oldest Reign of Chaos build. Because of this, when you play the Reign of Chaos Campaign on your Frozen Throne installation, the campaign missions will always be supported with their original game balance in working order, even after new patches are released for the game that change Reign of Chaos competitive play HP values to rebalance the game.
    • This file is also used if you play a custom map with the Reign of Chaos ruleset (i.e., you click on "Warcraft III.exe" then inside the game choose "Single Player" then choose "Custom Game" then play a map THAT IS NOT MARKED AS A MELEE MAP by the World Editor.)
  • "Custom_V1\Units\UnitBalance.slk" - This file is a copy of the oldest Frozen Throne version -- the one used to make the Frozen Throne campaign missions. That way, even after new Frozen Throne balance patches are released, the campaign missions will always be supported with their original game balance in working order.
    • This file is also used if you play a custom map with the Frozen Throne ruleset (i.e., you click on "Frozen Throne.exe" then inside the game choose "Single Player" then choose "Custom Game" then play a map THAT IS NOT MARKED AS A MELEE MAP by the World Editor.)
So, fundamentally, the program code for 1.26 knows about these 4 locations to look for files. But there are actually more copies of the unit hit point information than this, because of all the different layered MPQ archives and how some of them get used, and some of them do not get used anymore after new patches are released. If you look at your 1.26 installation, you will find the unit hit point information in the following locations:
  • War3.mpq
    • "Units\UnitBalance.slk" - This is the old version. No longer used, because it is overridden by files in the same location inside of the patch data.
  • War3x.mpq
    • "Units\UnitBalance.slk" - This is the old version snapshotted for the first release of Frozen Throne. I installed Frozen Throne from my CD and it condenses the patches so that there is no "War3Patch.mpq", instead all the game data is just packaged in War3x.mpq. So in that version, "Frozen Throne Patch 1.14", we use this file as our competitive play information. But assuming that you have a 1.26 installation, then this file is defunct and overridden by the patch data file
    • "Melee_V0\Units\UnitBalance.slk" - Not used for same reasons as the above file
    • "Custom_V0\Units\UnitBalance.slk" - Not used for same reasons as the above file
    • "Custom_V1\Units\UnitBalance.slk" - Not used for same reasons as the above file
  • War3Patch.mpq
    • "Units\UnitBalance.slk" - Latest Frozen Throne competitive balance HP values here. These are the ones actually used in melee games.
    • "Melee_V0\Units\UnitBalance.slk" - Latest Reign of Chaos competitive melee balance HP values here. Used if you play Reign of Chaos ranked online, or melee maps.
    • "Custom_V0\Units\UnitBalance.slk" - Latest Reign of Chaos custom map balance HP here. Actually used, for example if you play Reign of Chaos campaign.
    • "Custom_V1\Units\UnitBalance.slk" - Latest Frozen Throne custom map balance HP here. Actually used, for example if you go online and play dota or some TD or play Frozen Throne campaign, etc, this will be the file that is used.
So, with the above file information, you can see that the files in War3Patch.mpq are always the ones used to determine hit points, since they have all been changed in a patch. But what about files that were never changed in a patch, but changed in the expansion? We want our game to support two different modes of play -- the Reign of Chaos, and the Frozen Throne expansion. When we talk about using the assets on Patch 1.31, take a look at the Icon of the Human Priest. When you play in the Reign of Chaos mode, you will notice this icon is different between 1.26 and 1.31. Now, if it was only that icon, obviously it would not matter. But the point is that it shows that the fundamental way the assets load was changed between 1.26 and 1.31 in a way that was complicated. I believe the reason is this: patch 1.26 does not load War3x.mpq when you use the Reign of Chaos mode. It is not necessary, and without this file we do a better job exactly emulating the assets and data used by someone who does not have Reign of Chaos at all so that we crossplay with them perfectly (no desyncs). Imagine the following scenario: maybe Friend A and Friend B want to play together in Reign of Chaos online, but Friend A never bought the Frozen Throne. To support this, when Friend B clicks on his "Warcraft III.exe" (NOT expansion) application on his computer, it must decide not to load any Frozen Throne data and so the "War3x.mpq" is not loaded. The Reforged devs didn't understand this on 1.31 so when we get there I will explain how on that version, the assets are no longer structured in a way that would even make this conceptually possible.


Now that I gave you a good description of how and why the files are located as they are on Patch 1.26, let's talk about the (in my opinion stupid) idea of making your Warcraft III: Reforged PrePatch 1.31 installation load the information from the files listed above and the hurdles that you will have to overcome to do so.
First off, when the Reforged team was tasked with updating these systems, they became frustrated. Apparently, in their opinion, everything that I described to you until now annoyed them because it was complex, and they always had their bosses standing over their shoulders asking for progress obviously. It seems better to reinvent it to be less complex, right!?
So on 1.31, there is no longer the idea that you could have the Reign of Chaos without the Frozen Throne. We scrap that idea as being too complicated. We scrap the idea of War3.mpq and War3x.mpq as being separate. "If you want to emulate Reign of Chaos," the Reforged dev thinks to himself, "you might as well just run the game with the same assets but a different set of rules." Shouldn't you be able to just use "Melee_V0\Units\UnitBalance.slk" as the source of your HP information, even while loading War3x.mpq? It is a sound principle if we assume all users have the expansion, and it would theoretically simplify the game data.

So, now the year is 2017. Mike O'Brien who invented MPQ or whatever jumped ship from this company years ago and is now the boss of Guild Wars. The MPQ archive is considered a frustrating legacy technology and frowned on by everyone at the office in 2017 Blizzard. In order to build Reforged, it's better if we store all the game assets in the same format as the other modern Blizzard games. These games are no longer stored with a simple container like a ZIP. They are something we can stream! Maybe you are playing WoW and you only visited the Outland, and you are in a hurry and just installed the game so you want to stream the game while you play and only download the Outland without downloading 50 GB of other continents.

Enter the CASC technology. This is a new way of storing information centered around streaming it from Blizzard servers. What the player has on their computer is meant to be irrelevant. It's just a mirror of the current Blizzard server contents that's cached on their computer so it loads fast. It was invented circa 2014 for these other games like WoW and eventually Starcraft 2 and all the other Blizzard games and such. In this format, things are more complicated so that it's easier to always stream down any missing file from a Blizzard server that you might need, since any game is going to be always online anyway. Maybe some of the files don't install immediately on the user's computer and just stream down when they need them.

So, to prepare for Reforged to stream down in this way, everything in Patch 1.31 is reformatted to the CASC storage system. If you have a copy of 1.31, that's because you somehow held it off from updating to the latest build which is Reforged, anyway. So you're sitting on this local mirror of the out of date version of Reforged that is 1.31. Now you are deciding you have a new goal: PUT 1.26 IN IT.

So, the first logical thing that you want to do is get a CASC local datastore editor. To be honest, I have never done this. I do not know how to do this. This is where my ability to help you ends. I modded the old MPQ game for 15 years and became quite familiar with it, but when I tried to mod CASC data for WoW model swapping in 2014, what I found was that as soon as I would replace a game file, then launch the game, the game would re-stream down the official version of the file thinking that it was corrupted by accident. This is the point of CASC. I deleted my Reforged installation except for the tiny EXE and played the Reforged game and as I played it, it regenerated its 26 GB of data. This same technology, I believe, is present in 1.31 even though the server to download from might be gone now.

So you have two choices that come to mind for me for modding the CASC contents of 1.31 to contain the 1.26 data:
  1. You can try to find a program to edit this local mirror of the CASC information as though it were a zip... some special editor someone might have created to let you think of this in the manner in which you want to think of the simple container in the old Patch 1.26 game format. That might exist, but if it does I do not know about it. I do not have a program like that.
  2. You can try to go to shady private WoW server forums. (Yes WoW, not Warcraft III, this is not a typo). Learn from the shady people there how to replicate a Blizzard server and trick your Patch 1.31 client into thinking that its local CASC cache is out of date and it should update itself to your new version from your hacked server in the same way that WoW illegal private servers probably trick the WoW game client to do that, probably. I am not aware of any local in-place CASC editing solution so if I was dedicated to doing this, maybe this way is the first way I would try.
There are probably some hardcore Patch 1.31 modders out there who are thinking to themselves right now, "I know this Retera guy is being crazy here! You don't have to do any of that!" that they are, kind of, correct. Given that a technology is not known to me to modify the contents of the CASC/Reforged installation (using on and after Patch 1.30+), we can fall back to a different solution. Duplicating data as a last-ditch solution to change what the game will load when it runs. In other words, we agree that modding died after Patch 1.30. We agree that unlike Patch 1.29 and below, there is no longer a reasonable way that fans can change the contents of their game installation. However, you can still trick the game into loading more data on top of what it normally would contain. You can do this by modifying your registry to activate a debug setting built into Warcraft III that will cause it to load files from your computer as though they were included in the game. Essentially, there is a registry key named HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\Warcraft III where you can add a REG_DWORD named Allow Local Files, and set it to the value 0x1, and then if you put your own "Units\UnitBalance.slk" as just a flat file inside your Warcraft III 1.31 installation, then it would load this file. Then when you play with other users you will desync because your game client will use whatever hit points you place inside this custom UnitBalance.slk file.

So, let's assume you are now stuck doing this and you've given up the ship with regards to actually changing what is inside your Warcraft III: Reforged PrePatch 1.31 installation (as you should) and you now are doing a local files mod instead, this interesting "third option". For the sake of example, I just tried building and configuring something like this on my computer. So, since it now contains 1.31 as well as the flattened Frozen Throne-only view of the Patch 1.26 files unzipped out of the MPQs, it will load the 1.31 client with the 1.26 data and assets.
1621200862299.png


In order to launch this, of course, I have to choose the x86 or x86_64 folder to launch the game, and at that point we encounter this error message:
1621201112013.png


This is because 1.31 has a special new UI component built into the menu for switching between Reign of Chaos and Frozen Throne. So, being the Warcraft III modder that I am, I went ahead and added back the Edition Button to the game, and tried to relaunch. At this point, I have diverged the contents of my installation from 1.26 or whatever, but let's ignore that for the time being. Now I am able to launch this (Frozen Throne only) broken hilarious client that is "using Patch 1.26 data" to the fullest extent that I know how. Of course, the first thing that happens is a get a nonsensical error message with no text, since what we are doing is stupid and we are breaking the game.

1621201289083.png


This is probably Patch 1.31 asking me to upgrade to Reforged, even though we are using the 1.26 assets and stuff so it has no text to display since there was not a stupid popup like that in Patch 1.26. I will choose "No" to humor this bad idea a little further and let's try to play a game.

Here's a video of what happens. By the time I reach the Single Player-> Custom Game menu it stops working:

This is probably because the script API systems and game data formats are just really fundamentally changed in a lot of ways on Patch 1.31, and you could spend a lot of time trying to find which compatibilities stopped us here, but a the end of the day, even if you figured them out, Patch 1.31 used a different networking protocol to play games online so that players would not need to port forward games that they hosted and the games would be hosted on Blizzard servers, and even in LAN probably Patch 1.31 was using the Bonjour service for the Reforged way of doing LAN, although actually I'm not sure and I have not tested that necessarily.

It's just a bad idea that will never work and you should not try to do it. All those files I listed before with regards to just hit points, and that's just hit points and there are hundreds of other files in this game that got moved all around during all the work and development for Reforged (and thus are moved in 1.31). The other game balance data on 1.31 is supposed to be located in a folder named "war3.w3mod/_balance/custom_v0.w3mod/units/unitbalance.slk" and "war3.w3mod/_balance/custom_v1.w3mod/units/unitbalance.slk" and "war3.w3mod/_balance/melee_v0.w3mod/units/unitbalance.slk" and this is similar to 1.26 but it's all in a different place, and the local files hack doesn't honor it properly if you put it in that place, I don't think. So, based on whether the game you joined was melee or custom, you would need two game clients to join the correct one.

At this point, actually because of the natural of my real life away from this video game, I cannot go on down the rabbit hole of ridiculousness, because crossplay between Reforged engine and Frozen Throne engine is just actually stupid and impossible even though they are derivative works of the same original thing.

So, in summary, this idea can die in a fire, and have a nice idea.
 

pyf

pyf

Level 32
Joined
Mar 21, 2016
Messages
2,985
@erfanmola: Have you followed my previous advice so far?

[...] rendring engine, which is modern [...]
In case you are referring to DirectX11, then maybe give dgVoodoo2 a try?

[...] 1.31 Ui [...]
For the record, extra fixes / improvements for Legacy versions of the game can very certainly be achieved by editing the fdf files, but in that case one must run the game with an executable that allows to load more modified files than allowlocalfiles does. This is (for example) how the subtitles of the FMVs can be fixed.

[...] is it possible that we mod [...]
Because 'we' implies 'you', then you are encouraged to submit patches/feedback here for example:

The thing is, I play W3 on GameRanger and everyone on GR uses 1.26a which is outdated
I was wondering is it possible that we mod 1.31 in a way that its version change to 1.26 and we can play on GR ?
Please contact GameRanger, and ask them to support v1.31.x?
 
Level 4
Joined
Apr 11, 2021
Messages
31
Looks like Daffa beat me to the punch here, but you might be entertained by the contents of the spoiler in this post that I was writing:


Please give up on doing this, this will take you longer to do than the time that you will remain interested in modding Warcraft III, because it is so complicated.
Do not underestimate the substantial behind-the-scenes changes made by the Reforged team. Structurally and internally, 1.31 is much closer to Reforged and would sooner crossplay with 1.32 than it would with 1.26. Still, it will not ever crossplay with 1.32 (not EVER!) but I am saying that you would be more likely to make that happen than to make it crossplay with 1.26.

I can explain further technical details at some point if you are interested, because I believe that I understand enough to explain many of the technical reasons behind what I am saying, but I am telling you that it is better for you if you decide not to be interested.

As a background: who am I? I am a fan of Warcraft III modding who has been modding the game for years as a hobby, and I am not affiliated with Blizzard Entertainment in any way, but I decided that I would try to rewrite the game of Warcraft III by combining freeware tools and programs from here on the Hive, so that I could entertain myself by learning more about how this game is put together and possibly get the experience of making "source code mods" some day of a nearly identical hobby freeware game engine written in a different language than Blizzard's Warcraft III. My rewrite of the game is very incomplete AND NOT YET WORTH YOUR TIME TO USE IT so I'm just mentioning it so that you know what has caused me to learn some of these things.

So if you can imagine this world I exist in where I can change anything about the code, I have hacked in support for using a 1.31 installation as well as using a 1.26 installation (and many others as well) while loading my own custom code piece, which you can think of as "replacement game code" that reads from the same characters models and unit data information. So this forces me to become intimately aware of the extensive differences of 1.31 and 1.26, because I have basically created game code that can load either one and use it to play something akin to the Warcraft III experience. I will be playing 1.31 for a bit, and then I change a config file to tell the game to load assets now from my 1.26 installation instead, and I make one or two code changes, and then I run the game and it still launches. Of course, when I say "the game still launches", I am not referring to the Blizzard Entertainment Warcraft III program. My program when it runs on 1.26 will use that data and information, but I have different code, so for example if you play it on a widescreen monitor I have dictated to the computer to stretch in a different way. The space around the UI stretches and is left with black empty space instead of the whole game stretching.

View attachment 379490
And I can do this on 1.26 because I am not running the program code of Patch 1.26, nor any program code from Blizzard, but instead I am running completely my own program where all design decisions are dictated by me telling the computer what to do. Each pixel of each murloc is rendered using a complex set of linear algebra equations that I typed into the computer by copying from information available here on the Hive.

Now, unfortunately what I created does not have any multiplayer and frequently crashes, because it is not Blizzard's polished game code, and so I am not advocating for you to use it at this time. But the point is that I have experienced "switching assets" from 1.31 to 1.26 with "the same code" and had my program "still work" and so this gives me background to explain to you the issues that you will run into.

Even when my program is completed, and let's assume its able to switch underlying assets like this, if we assume that in 2022 or 2023 there might be a time when I add multiplayer to my code, at that time still you WILL NOT EVER be able to have one guy with a 1.31 installation, and another guy with a 1.26, and they both run THE SAME CODE of my game engine and join each others' game. Even though it might be "the same code" from me to run either way, this cross compatibility will never exist. Now, I am going to try to explain why.

Imaginary Steps (You Should Never Actually Try) That Might Make 1.31 Run Like 1.26

Step 1: Change MAX_PLAYERS constant

When I am playing a 1.31 map on my replica of the game code, and then I want to change to emulate the 1.26 client with my code, the first thing that I always have to do is go into the game source code and change the MAX_PLAYERS constant. In my replica, this is a magic number that sets the number of players in the game. For the 1.31 emulation it must have the value 28, whereas for the 1.26 emulation it must have the value 16. Typically we refer to this as "12 players" or "24 players" but there are 4 other neutral players in the game. This same constant changed in the 1.31 source code, so to begin hacking your 1.31 to become 1.26, you must do some sort of hack to the 1.31 binary game code (which is probably both illegal, and outside my knowledge of how to do it) where you basically would go to anywhere in the game engine that the number 28 is used for this purpose and change it to 16. When I wrote my own game to play this sort of Warcraft III style of experience, I was using a totally different programming language than Blizzard used to create Warcraft III -- my game is run with an interpretted language -- and this means even when mine is running, it doesn't actually "run" and its more like my code is "being run by" another, smarter program. As a result, changing this ONE SINGLE constant from 28 to 16 is easy for me. However, we assume that the 1.31 C++ code uses some constant that is statically compiled in C++, then it is safe to assume that although the number is probably in one place in the sourcecode inside the Blizzard Entertainment offices in California, after the program has compiled the constant is likely to be inlined and all over the place in the binary. So essentially you will spend your first day(s) of this project searching through Warcraft III.exe with a memory analyzer or something, and I don't have experience using those, and you have to find every place where you see the number 28 used for a player count and change it to 16.

Step 2: Changing Game Assets
To understand the game assets, it probably helps to understand where everything came from during the design of Warcraft III. The cleanest way that I have ever seen this is if you look at very old versions of the Reign of Chaos. You have mentioned hit points as an example of something must absolutely match for network syncing, and you are absolutely right. It turns out, there are tons of other things that changed on Patch 1.31 besides hit points -- and I do mean tons -- but let's start with the hit points.

The hit point values of every unit, organized by the unit's type (footman, peon, peasant, etc) are saved in a file that back in the Reign of Chaos was named "Units\UnitBalance.slk". The SLK extension is probably something most users are not familiar with, but you can actually open it in Microsoft Excel and on the Reign of Chaos Patch 1.00, when I install from the disk, this Microsoft Excel-compatible Spreadsheet still has the comments in there. As I can see by opening the file, there are three HP related columns on the spreadsheet, "HP", "realHP", and "regenHP". We can see some comments. Frank Pearce left this comment on regenHP:



There is also a comment from an unlisted author on "realHP":



I would say that I believe "realHP" is not used in the modern game engine, and was probably only in this excel spreadsheet to help the guys in 2002 figure out how to balance the units.

So, the reason I mention any of this is that in order to do what you are asking, you are going to need to understand the very specific information in these Warcraft III installations in order to do what you ask.

Now, let's take these HP columns as an example and talk about their evolution over time and where they are stored in Warcraft III: The Frozen Throne patch 1.26, versus where they are stored in Warcraft III: Reforged PrePatch 1.31. Yes, I have met people who are deeply offended that I refer to Patch 1.31 as the Reforged PrePatch, because it does not have the Reforged menu and they do not hate it. However, the patch notes for Patch 1.31 say, "This is the last patch to prepare for Reforged" or something similar, and I am calling it Reforged because of its design architecture as a piece of technology, not because of how people feel about it.

In the Frozen Throne patch 1.26, the game was built as an expansion called "The Frozen Throne" layered on top of an installation called "Reign of Chaos" for the base game. So, using HP as an example, this information was in "Units\UnitBalance.slk" originally. But you don't see that file on your computer. It is stored in a container. We can think of this container similar to how you probably have used ZIP files in the past. However, to improve performance and encrypt the game against hacking, the original 2002 game did not use a ZIP as the container for game information. Instead, the 2002 game developers used their own container called "MPQ" which stands for Mike O'Brien PaQ. It really is basically just a file container with some extra performance and encryption stuff going on to improve load times. At this point, there are 20 years worth of technologies built to modify them, so they are basically as easy to work with as a ZIP, or almost so.

When we look in the Reign of Chaos installation, determining the hit points for a unit is very simple. We open the "War3.mpq" archive and we find "Units\UnitBalance.slk" in there. This is the only place on this version where unit hit points are stored.

The first time that this became more complex was when the first Reign of Chaos Patch come out sometime in 2002. Users who connected to Battle.net would download new game data into a file called "War3Patch.mpq". This was a second, new container of game data. This file contained its own copy of "Units\UnitBalance.slk" with NEW and UPDATED versions of the unit hit points for the patch. When the game looks for any file to load, such as "Units\UnitBalance.slk", now the logic is
  1. Look in "War3Patch.mpq" to see if you have the file at this patch
  2. If that fails, look in "War3.mpq" to see if you have the file at this path
So, this meant that the old War3.mpq wouldn't change each time a new patch was installed, and as a result downloading patches was relatively quick. The patches would just replace or modify "War3Patch.mpq" with new updates, and it was a much smaller file that contained only the files that had actually changed in the patch.

So then The Frozen Throne expansion came along and suddenly there are a lot of different versions of the hit points of each unit. Maybe there is a unit who needs 300 hit points in the Reign of Chaos campaign, 200 hit points in the Reign of Chaos balanced online matchmaking mode, 400 hit points in the Frozen Throne, and 375 hit points in the Frozen Throne balanced online matchmaking mode. This seems rather complex. To account for this, the code for where to find unit information has to get more complex. So we introduce new copies of "Units\UnitBalance.slk" in new locations:
  • "Units\UnitBalance.slk" - This file is still here, but it is replaced in Frozen Throne to have the latest melee competitive play ruleset for Frozen Throne. We can think of it as "the official" version of the hit point values. If you go online and join a ranked match, it would use this one. It's the go-to solution.
  • "Melee_V0\Units\UnitBalance.slk" - This file is a copy of the version from the Reign of Chaos, but it is formatted differently so that it can load on the Frozen Throne engine. This also has the melee competitive play balance changes to provide the latest and greatest Reign of Chaos gameplay. That way you can crossplay, so that when you play Frozen Throne, you can go back and play a game with a Reign of Chaos ruleset by launching 'Warcraft III.exe' instead of 'Frozen Throne.exe'.
  • "Custom_V0\Units\UnitBalance.slk" - This file is a copy of the oldest Reign of Chaos version -- the one used to make the Reign of Chaos campaign missions. It can be updated slightly to match the Frozen Throne format for the data, but the contents are the HP values of the oldest Reign of Chaos build. Because of this, when you play the Reign of Chaos Campaign on your Frozen Throne installation, the campaign missions will always be supported with their original game balance in working order, even after new patches are released for the game that change Reign of Chaos competitive play HP values to rebalance the game.
    • This file is also used if you play a custom map with the Reign of Chaos ruleset (i.e., you click on "Warcraft III.exe" then inside the game choose "Single Player" then choose "Custom Game" then play a map THAT IS NOT MARKED AS A MELEE MAP by the World Editor.)
  • "Custom_V1\Units\UnitBalance.slk" - This file is a copy of the oldest Frozen Throne version -- the one used to make the Frozen Throne campaign missions. That way, even after new Frozen Throne balance patches are released, the campaign missions will always be supported with their original game balance in working order.
    • This file is also used if you play a custom map with the Frozen Throne ruleset (i.e., you click on "Frozen Throne.exe" then inside the game choose "Single Player" then choose "Custom Game" then play a map THAT IS NOT MARKED AS A MELEE MAP by the World Editor.)
So, fundamentally, the program code for 1.26 knows about these 4 locations to look for files. But there are actually more copies of the unit hit point information than this, because of all the different layered MPQ archives and how some of them get used, and some of them do not get used anymore after new patches are released. If you look at your 1.26 installation, you will find the unit hit point information in the following locations:
  • War3.mpq
    • "Units\UnitBalance.slk" - This is the old version. No longer used, because it is overridden by files in the same location inside of the patch data.
  • War3x.mpq
    • "Units\UnitBalance.slk" - This is the old version snapshotted for the first release of Frozen Throne. I installed Frozen Throne from my CD and it condenses the patches so that there is no "War3Patch.mpq", instead all the game data is just packaged in War3x.mpq. So in that version, "Frozen Throne Patch 1.14", we use this file as our competitive play information. But assuming that you have a 1.26 installation, then this file is defunct and overridden by the patch data file
    • "Melee_V0\Units\UnitBalance.slk" - Not used for same reasons as the above file
    • "Custom_V0\Units\UnitBalance.slk" - Not used for same reasons as the above file
    • "Custom_V1\Units\UnitBalance.slk" - Not used for same reasons as the above file
  • War3Patch.mpq
    • "Units\UnitBalance.slk" - Latest Frozen Throne competitive balance HP values here. These are the ones actually used in melee games.
    • "Melee_V0\Units\UnitBalance.slk" - Latest Reign of Chaos competitive melee balance HP values here. Used if you play Reign of Chaos ranked online, or melee maps.
    • "Custom_V0\Units\UnitBalance.slk" - Latest Reign of Chaos custom map balance HP here. Actually used, for example if you play Reign of Chaos campaign.
    • "Custom_V1\Units\UnitBalance.slk" - Latest Frozen Throne custom map balance HP here. Actually used, for example if you go online and play dota or some TD or play Frozen Throne campaign, etc, this will be the file that is used.
So, with the above file information, you can see that the files in War3Patch.mpq are always the ones used to determine hit points, since they have all been changed in a patch. But what about files that were never changed in a patch, but changed in the expansion? We want our game to support two different modes of play -- the Reign of Chaos, and the Frozen Throne expansion. When we talk about using the assets on Patch 1.31, take a look at the Icon of the Human Priest. When you play in the Reign of Chaos mode, you will notice this icon is different between 1.26 and 1.31. Now, if it was only that icon, obviously it would not matter. But the point is that it shows that the fundamental way the assets load was changed between 1.26 and 1.31 in a way that was complicated. I believe the reason is this: patch 1.26 does not load War3x.mpq when you use the Reign of Chaos mode. It is not necessary, and without this file we do a better job exactly emulating the assets and data used by someone who does not have Reign of Chaos at all so that we crossplay with them perfectly (no desyncs). Imagine the following scenario: maybe Friend A and Friend B want to play together in Reign of Chaos online, but Friend A never bought the Frozen Throne. To support this, when Friend B clicks on his "Warcraft III.exe" (NOT expansion) application on his computer, it must decide not to load any Frozen Throne data and so the "War3x.mpq" is not loaded. The Reforged devs didn't understand this on 1.31 so when we get there I will explain how on that version, the assets are no longer structured in a way that would even make this conceptually possible.


Now that I gave you a good description of how and why the files are located as they are on Patch 1.26, let's talk about the (in my opinion stupid) idea of making your Warcraft III: Reforged PrePatch 1.31 installation load the information from the files listed above and the hurdles that you will have to overcome to do so.
First off, when the Reforged team was tasked with updating these systems, they became frustrated. Apparently, in their opinion, everything that I described to you until now annoyed them because it was complex, and they always had their bosses standing over their shoulders asking for progress obviously. It seems better to reinvent it to be less complex, right!?
So on 1.31, there is no longer the idea that you could have the Reign of Chaos without the Frozen Throne. We scrap that idea as being too complicated. We scrap the idea of War3.mpq and War3x.mpq as being separate. "If you want to emulate Reign of Chaos," the Reforged dev thinks to himself, "you might as well just run the game with the same assets but a different set of rules." Shouldn't you be able to just use "Melee_V0\Units\UnitBalance.slk" as the source of your HP information, even while loading War3x.mpq? It is a sound principle if we assume all users have the expansion, and it would theoretically simplify the game data.

So, now the year is 2017. Mike O'Brien who invented MPQ or whatever jumped ship from this company years ago and is now the boss of Guild Wars. The MPQ archive is considered a frustrating legacy technology and frowned on by everyone at the office in 2017 Blizzard. In order to build Reforged, it's better if we store all the game assets in the same format as the other modern Blizzard games. These games are no longer stored with a simple container like a ZIP. They are something we can stream! Maybe you are playing WoW and you only visited the Outland, and you are in a hurry and just installed the game so you want to stream the game while you play and only download the Outland without downloading 50 GB of other continents.

Enter the CASC technology. This is a new way of storing information centered around streaming it from Blizzard servers. What the player has on their computer is meant to be irrelevant. It's just a mirror of the current Blizzard server contents that's cached on their computer so it loads fast. It was invented circa 2014 for these other games like WoW and eventually Starcraft 2 and all the other Blizzard games and such. In this format, things are more complicated so that it's easier to always stream down any missing file from a Blizzard server that you might need, since any game is going to be always online anyway. Maybe some of the files don't install immediately on the user's computer and just stream down when they need them.

So, to prepare for Reforged to stream down in this way, everything in Patch 1.31 is reformatted to the CASC storage system. If you have a copy of 1.31, that's because you somehow held it off from updating to the latest build which is Reforged, anyway. So you're sitting on this local mirror of the out of date version of Reforged that is 1.31. Now you are deciding you have a new goal: PUT 1.26 IN IT.

So, the first logical thing that you want to do is get a CASC local datastore editor. To be honest, I have never done this. I do not know how to do this. This is where my ability to help you ends. I modded the old MPQ game for 15 years and became quite familiar with it, but when I tried to mod CASC data for WoW model swapping in 2014, what I found was that as soon as I would replace a game file, then launch the game, the game would re-stream down the official version of the file thinking that it was corrupted by accident. This is the point of CASC. I deleted my Reforged installation except for the tiny EXE and played the Reforged game and as I played it, it regenerated its 26 GB of data. This same technology, I believe, is present in 1.31 even though the server to download from might be gone now.

So you have two choices that come to mind for me for modding the CASC contents of 1.31 to contain the 1.26 data:
  1. You can try to find a program to edit this local mirror of the CASC information as though it were a zip... some special editor someone might have created to let you think of this in the manner in which you want to think of the simple container in the old Patch 1.26 game format. That might exist, but if it does I do not know about it. I do not have a program like that.
  2. You can try to go to shady private WoW server forums. (Yes WoW, not Warcraft III, this is not a typo). Learn from the shady people there how to replicate a Blizzard server and trick your Patch 1.31 client into thinking that its local CASC cache is out of date and it should update itself to your new version from your hacked server in the same way that WoW illegal private servers probably trick the WoW game client to do that, probably. I am not aware of any local in-place CASC editing solution so if I was dedicated to doing this, maybe this way is the first way I would try.
There are probably some hardcore Patch 1.31 modders out there who are thinking to themselves right now, "I know this Retera guy is being crazy here! You don't have to do any of that!" that they are, kind of, correct. Given that a technology is not known to me to modify the contents of the CASC/Reforged installation (using on and after Patch 1.30+), we can fall back to a different solution. Duplicating data as a last-ditch solution to change what the game will load when it runs. In other words, we agree that modding died after Patch 1.30. We agree that unlike Patch 1.29 and below, there is no longer a reasonable way that fans can change the contents of their game installation. However, you can still trick the game into loading more data on top of what it normally would contain. You can do this by modifying your registry to activate a debug setting built into Warcraft III that will cause it to load files from your computer as though they were included in the game. Essentially, there is a registry key named HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\Warcraft III where you can add a REG_DWORD named Allow Local Files, and set it to the value 0x1, and then if you put your own "Units\UnitBalance.slk" as just a flat file inside your Warcraft III 1.31 installation, then it would load this file. Then when you play with other users you will desync because your game client will use whatever hit points you place inside this custom UnitBalance.slk file.

So, let's assume you are now stuck doing this and you've given up the ship with regards to actually changing what is inside your Warcraft III: Reforged PrePatch 1.31 installation (as you should) and you now are doing a local files mod instead, this interesting "third option". For the sake of example, I just tried building and configuring something like this on my computer. So, since it now contains 1.31 as well as the flattened Frozen Throne-only view of the Patch 1.26 files unzipped out of the MPQs, it will load the 1.31 client with the 1.26 data and assets.
View attachment 379508

In order to launch this, of course, I have to choose the x86 or x86_64 folder to launch the game, and at that point we encounter this error message:
View attachment 379509

This is because 1.31 has a special new UI component built into the menu for switching between Reign of Chaos and Frozen Throne. So, being the Warcraft III modder that I am, I went ahead and added back the Edition Button to the game, and tried to relaunch. At this point, I have diverged the contents of my installation from 1.26 or whatever, but let's ignore that for the time being. Now I am able to launch this (Frozen Throne only) broken hilarious client that is "using Patch 1.26 data" to the fullest extent that I know how. Of course, the first thing that happens is a get a nonsensical error message with no text, since what we are doing is stupid and we are breaking the game.

View attachment 379510

This is probably Patch 1.31 asking me to upgrade to Reforged, even though we are using the 1.26 assets and stuff so it has no text to display since there was not a stupid popup like that in Patch 1.26. I will choose "No" to humor this bad idea a little further and let's try to play a game.

Here's a video of what happens. By the time I reach the Single Player-> Custom Game menu it stops working:

This is probably because the script API systems and game data formats are just really fundamentally changed in a lot of ways on Patch 1.31, and you could spend a lot of time trying to find which compatibilities stopped us here, but a the end of the day, even if you figured them out, Patch 1.31 used a different networking protocol to play games online so that players would not need to port forward games that they hosted and the games would be hosted on Blizzard servers, and even in LAN probably Patch 1.31 was using the Bonjour service for the Reforged way of doing LAN, although actually I'm not sure and I have not tested that necessarily.

It's just a bad idea that will never work and you should not try to do it. All those files I listed before with regards to just hit points, and that's just hit points and there are hundreds of other files in this game that got moved all around during all the work and development for Reforged (and thus are moved in 1.31). The other game balance data on 1.31 is supposed to be located in a folder named "war3.w3mod/_balance/custom_v0.w3mod/units/unitbalance.slk" and "war3.w3mod/_balance/custom_v1.w3mod/units/unitbalance.slk" and "war3.w3mod/_balance/melee_v0.w3mod/units/unitbalance.slk" and this is similar to 1.26 but it's all in a different place, and the local files hack doesn't honor it properly if you put it in that place, I don't think. So, based on whether the game you joined was melee or custom, you would need two game clients to join the correct one.

At this point, actually because of the natural of my real life away from this video game, I cannot go on down the rabbit hole of ridiculousness, because crossplay between Reforged engine and Frozen Throne engine is just actually stupid and impossible even though they are derivative works of the same original thing.

So, in summary, this idea can die in a fire, and have a nice idea.
A Huge thanks for a very brief explanation
This is the most complete answer i ever got in my life

So in general, it is not worth it to do this thing, but beside that, I am very interested to test your Game Engine, Is it open source ? or your just developing for yourself ?
 
Level 4
Joined
Apr 11, 2021
Messages
31
@erfanmola: Have you followed my previous advice so far?


In case you are referring to DirectX11, then maybe give dgVoodoo2 a try?


For the record, extra fixes / improvements for Legacy versions of the game can very certainly be achieved by editing the fdf files, but in that case one must run the game with an executable that allows to load more modified files than allowlocalfiles does. This is (for example) how the subtitles of the FMVs can be fixed.


Because 'we' implies 'you', then you are encouraged to submit patches/feedback here for example:


Please contact GameRanger, and ask them to support v1.31.x?
Thanks for respone,
Im only aiming for these in 1.26a :
[x] Fix GameView Stretch (Done with renderedge widescreen)
[ ] Having UI Stretch fixed as it has been in 1.29+
[ ] Disabling VSync and getting more FPS to solve mouse lag

And thats all, but I have no knowledge of editing game files,
Im a programmer, but not a reverse engineer, I can write CPP code, but I cannot write a magical dll file which manipulates the Game process

And the problem in GR is not the GR itself, GR is sth like Hamachi, it just simulates a LAN (it has a chat system based on socket i think, and thats all)
The problem is that people on GR, 99% use 1.26a patch
 
Level 4
Joined
Apr 11, 2021
Messages
31
By fixed you mean additional borders? As far as I am aware, no such fix exists thus far.

Maybe this?
By fixed, I mean the wall borders that are in the corners to maintain the main Controlling parts in the center with its main aspect ratio, not like 1.26a that stretches the main Controlling parts to whole screen
Or maybe like reforged, the minimal UI in the center and no borders at all (clickable area as gameview, not black hole)

And about VSync, -nativefullscr does not work on 1.26a, i think it was added in 1.28
RenderEdge has ability to disable VSync, but the problem is i am not launching game using RenderEdge, GameRanger launches the itself, so what i need is a dll or .mix file which loads automatically and disables the VSync by default, or in the other words, I only need the code of disabling VSync of RenderEdge in a dll or .mix file
 
RenderEdge has ability to disable VSync, but the problem is i am not launching game using RenderEdge, GameRanger launches the itself, so what i need is a dll or .mix file which loads automatically and disables the VSync by default, or in the other words, I only need the code of disabling VSync of RenderEdge in a dll or .mix file
Can you change the targeted application instead to refer to RenderEdge?

Anyway, it might lies somewhere in their github. I'm sure the code is somewhere there.
 

pyf

pyf

Level 32
Joined
Mar 21, 2016
Messages
2,985
Thanks for respone,
Im only aiming for these in 1.26a :
[x] Fix GameView Stretch (Done with renderedge widescreen)
[ ] Having UI Stretch fixed as it has been in 1.29+
[ ] Disabling VSync and getting more FPS to solve mouse lag

And thats all, but I have no knowledge of editing game files,
Im a programmer, but not a reverse engineer, I can write CPP code, but I cannot write a magical dll file which manipulates the Game process

And the problem in GR is not the GR itself, GR is sth like Hamachi, it just simulates a LAN (it has a chat system based on socket i think, and thats all)
The problem is that people on GR, 99% use 1.26a patch
I remember you have been aiming for much more

You hardly have to edit any game files, to get the result you want. No reverse engineering skills are required to use what already exists so far.

WC3 v1.26a is not a problem.

By fixed you mean additional borders? As far as I am aware, no such fix exists thus far.
Master Yoda: There is another.

By fixed, I mean the wall borders that are in the corners to maintain the main Controlling parts in the center with its main aspect ratio, not like 1.26a that stretches the main Controlling parts to whole screen
Or maybe like reforged, the minimal UI in the center and no borders at all (clickable area as gameview, not black hole)
And about VSync, -nativefullscr does not work on 1.26a, i think it was added in 1.28
RenderEdge has ability to disable VSync, but the problem is i am not launching game using RenderEdge, GameRanger launches the itself, so what i need is a dll or .mix file which loads automatically and disables the VSync by default, or in the other words, I only need the code of disabling VSync of RenderEdge in a dll or .mix file
Please follow my advice

As a side note, I personally believe there is no point in trying to increase the framerate or the FPS limit of WC3 on a 60Hz monitor, and that VSync should be enabled always but hey, to each his own.



WC3ScrnShot_051921_083147_01.pngWC3ScrnShot_051921_083222_02.pngWC3ScrnShot_051921_083250_03.pngWC3ScrnShot_051921_083322_05.pngWC3ScrnShot_051921_083357_06.pngWC3ScrnShot_051921_083451_07.pngWC3ScrnShot_051921_083542_08.pngWC3ScrnShot_051921_083825_09.pngWC3ScrnShot_051921_084013_10.pngWC3ScrnShot_051921_084058_11.pngWC3ScrnShot_051921_084444_01.pngWC3ScrnShot_051921_084506_02.png

(partial; and I have not even seriously tried to)
:ogre_hurrhurr:
 

pyf

pyf

Level 32
Joined
Mar 21, 2016
Messages
2,985
Because 'we' implies 'you', then you are encouraged to submit patches/feedback here for example:
[...] I am very interested to test your Game Engine, Is it open source ? or your just developing for yourself ?
@erfanmola: the answers are in the link I have already provided you above

You may also visit:
 
Status
Not open for further replies.
Top