How hard is it to add a reconnect feature?

How hard is it to add a reconnect feature like every other normal multiplayer game out there in the world?

Extremely frustrating being kicked out of a game, especially when it’s YOUR servers that are so unstable and cause the disconnect… with no way to get back into the game unlike every other normal online game.

Quitting WC3 until you fix this… super easy to do, no idea what yall are doing

2 Likes

Very hard, actually, because the game was never designed to have one. It would have to be built from the ground up and the rules for it would have to be established. When you disconnect, you are considered to have left the game and control is given to other players. The game doesn’t currently have any system to let a player enter a game after it has started and take control of a force.

It would require engineers whom understand how the game’s original code works. While third parties have hacked together solutions in the past, it needs to be done properly and professionally to be implemented at a scale appropriate for the game. Note how ranked versus match reporting breaks so much. Do you trust that this can be implemented when they can’t get this system to work reliably over an extended period of time?

It will never happen, so… bye, I guess? Or you could just try to solve what you can from your end, because not everyone disconnects with regularity.

2 Likes

Hi,

It’s me, the unofficial King of Warcraft 3 who is rewriting it from scratch as a hobby since 2019 to escape Activision’s clutches. On many other threads there have been times that I disagree with CaptainJack or felt that he was giving Reforged too much credit, but on this issue generally I am inclined to agree with what CaptainJack said.

Your evaluation of this code change as being “super easy to do” lacks regard for the variability of the Warcraft III use cases, and the Custom Games section in general. As an author of a publicly open source rewrite of Warcraft III, I will not be implementing the feature you are requesting even in my personal rewrite of the entire game. If you would like to understand the issue in more depth, I would invite you to download the entire source code of my rewrite of the game and implement a reconnection feature: GitHub - Retera/WarsmashModEngine: An emulation engine to improve Warcraft III modding

I believe that if you try, you will find that you cannot implement this feature, without first breaking other substantial portions of the game. In my unfinished rewrite this may be less apparent, but I would happily discuss the topic with you if you create a pull request containing code written by you to add a reconnect feature, because I probably won’t merge your pull request until it accounts for custom games which will be almost impossible for you.

The custom games are written with the intention of having user-defined behaviors respond to when a player leaves the game, which may include giving away the units of that player to other players in the game. In order to work around this issue, there would need to be some cutoff where the reconnect feature only worked on custom games created after the new World Editor API became available, or whatever.

Now, you may say that you don’t care about Custom Games and you think those people should have their systems broken in favor of you because you are the paying customer who only plays the Versus mode. That will probably get a lot of other forum users angry, but let’s imagine you look at the situation that way for a moment. Even then, there are other major game-breaking issues like “wins counting as losses” and “campaign is unplayable due to crash” and other things that are a higher priority than rewriting fundamental game systems. Even if you ditch support for Custom Games (which is a bad idea, in my opinion), the complexity level of adding reconnect is still quite similar. The melee games use the same APIs and change game state in response to a player leaving in a one-directional way that would have to be fixed. In a cost/benefit analysis for time input vs player experience, a lot of other stuff is just going to be higher priority.

1 Like

That should be a clue right there that this isn’t a simple task. :stuck_out_tongue: It always frustrates me when people who know nothing of programming/engineering try to insist that XYZ thing is “simple” to do, presumably just because ABC other game/thing has the feature.

Your manner of writing is quite odd, however it’s good to see someone who actually has experience to weigh in on this.

That being said, you know you’re not going to be able to actually release something like this if you’re actually doing it, because you’re almost certainly going to have lawyers breathing down your neck if you do, right?

2 Likes

That’s not related. The project that has been in progress since 2019 does not include the feature herein requested, so the time taken to develop it is irrelevant to the time it would take to develop a reconnect feature. For all we know, a reconnect feature might take much more time to develop. Or perhaps less. They are not related because my project does not include reconnect.

Why would they? I am of no consequence to them.

I’m just making the point that you’ve been working on something for a long time. If it was really easy to do, you probably would have done it.

Nintendo goes out of their way to shut down fan projects and from what I’ve seen Activision isn’t particularly friendly towards them either.

To be clear I applaud your efforts, but it might be for nothing ( other than your own growth in development at least) if you publicly release it and Activision takes notice.

It’s actually not that hard to get the reconnect feature working. All they gotta do, is allow .MIX files back into the game, and community will take care of the rest, as .MIX was removed/replaced with FMOD in 1.30 for the sake of mindless standardisation that was grossly inconsiderate of the existing functionality, which as a result, was sacrificed for the sake of management convenience and checking the boxes with their management, so that they could check the boxes with their management and so on, all the way up to enfant, who have probably never even launched this game once, let alone played it like it really was meant to be played, with a full house and epic battles that still put even modern multiplayer alternatives to shame. But people wanted shiny icons and clans and stats and other epin hallmarks, and a faint noise around reconnect requests was like a whisper in a roaring sea of all the issues during game launch just like this thread is now, and so it never got a high enough priority as it should have.

Personally though, I have used all available fan-made disconnect protection back in the day extensively,

and I can confirm they were not “hacks”, but user friendly and very easy to learn full fledged working solutions, preventing the loss of game progress going to waste due to a random server hiccup. Back in the day, I could restart my router and still remain in that big huge WC3 game with massive armies and high level heroes like I never left. What freaking icons? I live for the action of now, that can’t be abruptly halted in its peak moment! And all self respecting games have reconnect feature ready and working in 2023 to cater exactly to that. CSGO, that moba game 2, even WoW battlegrounds will keep you in game if you disconnect for a brief minute. WC3 however doesn’t even bother to pretend you’re somebody that it used to know. All it lets you know, is that “you were disconnected”. This was, is, and will be the single biggest reason I have never bought reforged. I could forgive everything that was wrong with it during launch, which is already a feat in itself, as long as there was a reliably uninterrupted multiplayer to interact with fellow dwellers using in-game ant farm units. But given there is still no reconnect feature on the roadmap, I can’t bother investing seriously into game stats, progress icons and what not, knowing that at any time during the game I can be disconnected and have to start from scratch. Multiplayer therefore is pretty much dead to me, and there are far better single player alternatives out there. WC3 is just being kept alive as a gateway to WoW, which offers seamless and immersive game experience, while WC3 comes from a pioneer generation of games none of which had disconnection protection, and the only way I see that WC3 can get one, is if it becomes monthly subscription, which will highly likely eliminate 95% of its current playerbase permanently.

so

I am a bit confused about what you are trying to say. Are you saying that implementing a reconnect feature is a substantially difficult technological undertaking that would require the price of Warcraft III to increase so much that we would lose 95% of the playerbase, or are you saying that implementing a reconnect feature is “easy?”

1 Like

Easy for the community dev effort if necessary files are re-added back into game. It was working before 1.30 with .MIX before FMOD broke it in 1.30.
https://github.com/DNS/GProxy-Warcraft3-disconnect-protection-tool

Hard for an official dev effort with the existing in-game under the hood technical limitations FMOD or whatnot, that will probably take a lot of time and money to do, and won’t happen without some solid plan to recover the cost via one way or another.

What does this have to do with anything? There’s way more to this than some .MIX files. And the community isn’t supposed to “take care of the rest.” Blizzard/Activision is supposed to take care of everything. Yes, they’re not and haven’t been and that’s a problem, but the community doesn’t own the game, Activision does, and it’s up to them when it comes to official functionality.

And as it stands, tehre is no system or pathway for a player who has disconnected from the game to rejoin it. We’re not talking about the “Waiting for Players” feature here, we’re talking about being completely out of the game and coming back to it. War3 does not have any systems or mechanisms implemented that can allow this.

1 Like

I think “waiting for players” feature is what we really need here afterall. 9 times out of 10 its just a millisecond hiccup in the server that disconnects you, and you can’t come back. If there was a way for a game to solidly hold you in game and give you a certain amount of time to re-join before it drops you, it would solve 95% of reconnect feature requests. WoW battlegrounds are doing just that, if you disconnected while in battleground, it doesn’t boot you out immediately, instead it just greys out your characters icon and freezes them. And after a certain amount of time, it kicks them out. I think it is around 1 minute or so wait time. In WC3 I can confirm that similar was the case as well: while running GProxy++, there was a popup displayed that said “Waiting for players”, and a countdown timer started before you could drop them. The only thing was, that without GProxy++, if a player really disconnected due to a econnreset via plug pull, or a phone rang and they didn’t have a splitter, or it didn’t work properly, there was no way for them to come back into the game, and a drop countdown served no purpose, because the player was already gone with no way to come back, while if they ran GProxy++, they could restart their router and re-join the game, and I can personally attest to that. Unfortunately this has ended in 1.30, but it definitely was possible before then by using GProxy++, and I really hope official dev effort takes care of it and brings the “waiting for players” feature plus really holding the players in game back, because sudden drops out of game was a long standing and fairly common issue even before the reforged, but for some bizarre reason it has never generated enough noise in the community before the reforged was released, partially because there was a GProxy++ workaround which again ended in 1.30, and even though reforged exacerbated the sudden disconnect with no way to return into game problem, by then it was too late to do anything about it, because a million of far more pressing issues jumped the queue ahead of it.

It takes more than a millisecond lol. Packet loss is what gets you disconnected, not simple lag. And normally, everyone should have zero packet loss. Non-zero packet loss indicates a networking problem that needs solving.

If it was as sensitive as you say, literally everyone would be getting disconnected, as no one’s connection is that perfect.

And I’ll be honest: the waiting for players thing is still in the game, it’s just not used because of how Reforged now uses servers (via a proxy system) for games rather than peer-to-peer connections. W3C did re-activate this feature but frankly, I don’t like it. You just get dropped the moment it lets players click the button, so even though it’s supposed to allow players to stay connected through minor connection problems, I’ve never seen much point as most people aren’t willing to wait and would rather drop you for the free win.

1 Like

Every armchair software engineer’s famous last words.

2 Likes

I, too, remember using GProxy++ back in the day, so I don’t really understand why it’s so hard to add it, natively, to the game?

.MIX files were removed/replaced with FMOD in 1.30, and GProxy++ was reliant on these files to function properly. Now there is no known way to make the system keep you in game if you had an econnreset

2 Likes

I don’t know what GProxy++ is, but if it’s anything like what it sounds, the game already uses proxy servers, that replaces the regular peer to peer connection. But it’s like the poster above you said: it’s easy for anyone who doesn’t actually know how to do these things to say “it can’t be that hard.” The reality is netcode is a nasty business and it really isn’t easy. And even if someone devleoped an external solution on their own, that doesn’t mean it would be easy to do an official capacity. Often such hacked together solutions will not scale up well to being used by the entire playerbase, and building such things into the game is extremely likely to cause all kinds of bugs and would need to be thoroughly QA tested.

Thanks for the clarification on this.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.