AI : Use players who wait in queue instead?

Not sure if that would be possible or a good idea. When a player in your team leave, or get disconnected or whatever, and you get the AI… Often, the remaining 3 players and you are not too happy. Chances of winning are very low, the AI is not very smart. What if, instead, we could use a guy who is waiting for SL queue for like 1500 seconds? Would be less boring for him, he could play the hero, give the disadvantaged team some help, even ‘‘warming up’’ until his SL game? If he find a game, then someone else in waiting queue replace him?

Would not be perfect, but maybe a bit less frustrating than playing with AI. What do you think about it?

I’d only allow this in any mode other than ranked. Ranked is just GG and don’t mess with the lp of the joiner.

The game runs by syncing all clients through peer to peer connection that anyone who loses connection or leaves is require to sync back to the point of data (this is how replays work btw, they “sync” and once these data’s are streamed and sync, the replay can be moved freely through all of it).

Meaning by the time someone leaves the person who is gonna replace them is forced to wait minutes of syncing time depending on how far the match has gone, personally, this just not gonna work in practice.

The icing on the cake is this:

  • hurr dur “rage quit” OR lose connection → player leaves game → sync a new player → player joins → game already over → leave game → ???
5 Likes

Basically what Sami said. It takes WAY too long to sync into a game for this to be an effective idea.

2 Likes

Also imagine waiting 5 minutes or more to connect just to end up with the hero you despise the most with 3 levels down and an intentional afker or so.

Also gonns be weird in regard to stats; will you gain/lose stats from this?

3 Likes

Doesn’t the disconnected player also have to go through the entire sync when reconnecting? Won’t it be the same for a new player?

Yes, the data that already happened is streamed already so nothing is lost, but any new data sets that they didn’t participate must be streamed, the game would look like something out of replays in which it frequently loads a bunch of chunks of the data it needs to sync just to speed up to the main part.

When a lag spike happens momentarily, that chunk occurs too in a similar pattern, this different than high lag, at least in that case you are still receiving the sync from all clients, the issue is yours is kinda slow hence delay input and packet loss occurs.

A similar pattern in that chunk load is found in video rendering, they burst render chunks of the vid multiple times throughout the whole process.

IIRC in a lot of games the solution is to simply not track backfill games in the slightest, you still gonna see it in the history page, just not directly modify the statistics (WR, KD, games played).

That there is probably an engine limitation, HotS is basically running the sc2 engine afaik.

2 Likes

Yep. If it has been a longer match I have had to wait for several minutes just to reconnect back to the game.

I can hear the client playing back every single action, skillshot and takedown in the background at ~2x speed?

This idea is doomed due to how the SC2 reconnecting system works.

Take CS:GO from Valve for example, dropped players can be replaced by new queuers instantly on a team because there is no syncing.

1 Like

Ye no one are going to join an already lost game. I remember back in Cata when LFR were released. People would leave que everytime they saw it was not a freash raid with no bosses killed. Then they removed the boss kill counter so people would be forced to join the groupe even tho all the bosses he needed was already dead.

2 Likes

Been suggested in the past. Problem is there is no fast way to join such late game matches. HotS uses a lockstep engine requiring that either the entire game state be transferred, which is not possible as there is no trustable server to get it from, or the player has to fast forward the game actions from the match beginning which takes time proportional to current match length.

Other games like LoL, DotA2 and Overwatch use a state streaming engine with a trustable server. This allows players to join in progress matches in a matter of seconds. Such a system for them is trivial to implement, and is why some also have friend observer support. Of course the trustable server probably costs a lot more per match to run…

There is no peer to peer connection, all synchronisation happens using a coordination server hosted by Blizzard. Clients that lose connection have to catch up by executing the command stream that the Blizzard server synchronises at uncapped speed. Replays support fast rewinding likely because the client caches the state at various times.

If they are still inside the match they only have to fast forward the actions from the time they disconnected. As such a small 5 second disconnect is usually caught up in a second or less on a modern system.

If they have to rejoin the match then when they exit the current match a save is created. When they rejoin this save is reloaded and the above applies, only having to fast-forward the actions that happened since the save.

It also seems that clients periodically create saves during gameplay. As even after a crash it usually reloads partway into the game and again only fast forwards the difference.

No it is not the same as they do not have an existing state or save to fast-forward from. Instead they have to fast-forward all actions from the beginning of the match up to the current point of the match, which can be 10, 20 or even more minutes of gameplay. Even for a fast computer this takes a few minutes for really long matches.

What happens during lag is the client pauses waiting for the Blizzard coordination server so that it remains in sync with all other clients. Then when the packets from the server do arrive it has to fast-forward the actions to catch up to the current time of all clients, during which the frame rate drops due to sacrificing draw preparation time for faster simulation speed.

It runs at maximum possible speed (no speed limit) until caught up, even sacrificing draw preparation to go faster. On most recent, gaming targeted, systems this is between 5x and 15x real speed depending on what is happening.

Syncing still occurs, but due to the state streaming nature clients do not care what happened in the past, only what is happening in the present. This can be seen in most games that use a trusted server to run the actual game simulation on such as Diablo II, Diablo III, World of Warcraft, Overwatch, e.t.c. All those games support as good as instant join functionality as the trusted server just has to start streaming them the current state of the game. This obviously has cost implications as coordination servers like, HotS uses, require very little CPU time on a trusted server as they do not run any game logic or track the game state.

People would for nominal gold and exp rewards. Especially when the outcome has no impact on their MMR.

Another use case would be for friends to replace leavers in non-ranked modes. Such friends may already be waiting for the person’s game to end to party with them anyway.

Main downside would be that it opens the community to a new kind of bullying where a person may demand another person leave so that they can be replaced by someone else.

1 Like

I see. So they have to lay to rest this fossil of an engine.

It has nothing to do with the age of the game engine. Many modern games still use this approach, such as Factorio. However Factorio uses the trusted server model to get around this limitation and as a result the server can transfer to joining clients a save of the current game state meaning they only need to catch up the time between the save and now.

If this synchronisation model is appropriate for the sort of game is another question. Using a trusted server and state streaming model might result in a better player experience, but it also might greatly increase server running costs. These costs then need to be passed on to the player meaning less free stuff or less content.

1 Like

I see. So they have to lay to rest this fossil of an engine.