|
I wrote a program that allows games to be resumed (eg. after a disconnect) by using the replay to recreate the game up to a certain point and then resuming play as normal.
This is just a hack and meant merely as a demonstration of how easy it is to implement technically, though through my limited testing it has worked fine to resume multiplayer games.
Note that this is a 3rd party program, it does modify Starcraft 2 in memory, and I provide no warranty; use at your own risk.
![[image loading]](http://i.imgur.com/Ih0aZ.png)
How to use the thing:
First you need to hit 'Inject' (provided SC2 is running). The program then loads itself into SC2.
The resume time textbox specifies the time (in minutes:seconds) at which the game will be resumed; when the game starts, it will quickly progress up until the specified time, then play will resume as normal. Do not perform any actions in-game while the game is progressing, or things might get screwed up 
The 'Resume replay' button makes it so the next replay that is viewed in SC2 will be resumed with the player playing as the player who saved the replay the host of the original game. There will be no replay UI as there usually is. Not really a very useful feature, but it was easy to implement, so why not.
The 'Resume game' button will resume the next regular game played. This requires a replay to be specified (using the Browse button). It is important that the game settings (map, number of players and races) are the same as in the replay, or things will not go as planned. This can be used, for instance, to resume a disconnected multiplayer game, if all players specify either the exact same replay or their respective replays from the same game, and exactly the same resume time.
A feature to resume disconnected games is needed in Starcraft 2. It's not hard to make. One can only hope that Blizzard realizes this.
edit:
I made it so it pauses the game upon reaching the specified time, and it disables user input until then. I also included the code contained in util.lib, since people have been requesting it. StormLibRAS.lib is, well, StormLib. It does not wait for all players to finish fast-forwarding, however, so it be best to confirm all players are ready before unpausing.
There is of course a few issues, the most notable right now is that it seems to matter who hosted/which order people joined. Most likely, the order joined/slot occupied by player must match with the originals from the replay, this is again most likely due to simple unit numbering internally in SC2, where the host's units are created first and so forth.
Oh, and control groups are not restored. At least not with regards to the user interface. There should be no issues with spawn positions as this is indirectly determined by the random seed, which is overridden.
If anyone actually wants to use this, or if Blizzard would approve of use of this program, then I would need to make a better version.
edit: I fixed control groups, yey.
edit: Okay, I fixed the whole join in the right order thing. You should now play as the player who was in your spot, regardless of which order you joined in. It also sets your race. I hope I didn't break anything :D
edit: I fixed unicode support in the UI. It turns out koreans play this game, too.
Download: http://www.mediafire.com/?2lj5cjbzc9wgbxr Source code: http://www.mediafire.com/?iy2i6la3ommq1o4
|
I think that putting a link to download hacks is against the tl.net code I think that leaving your findings is fine, but you should probably delete the download links.
|
I find this very interesting, but I'm not risking neither my game nor my computer on something somebody with 1 post says.
I really, really hope this works, though. Maybe Blizzard can buy it from you and you can make a pretty penny. =) GL!
|
On a side note, this is a cool concept and if it sounds so easy to implement, it makes me wonder, why hasn't Blizzard done something like this?
|
On April 13 2012 14:10 Soft`Soap wrote: On a side note, this is a cool concept and if it sounds so easy to implement, it makes me wonder, why hasn't Blizzard done something like this? What's simple for somebody may not be so simple for others. Maybe Blizz simply never thought of this method.
|
Interesting but i can't see how this would actually be of use. Maybe, just maybe for tournaments but then again i can't see organizers allowing a third party program like this. Who knows though. Maybe you should add a poll to the OP to get the communities opinion on the matter.
|
Oh, this looks really interesting, I will definitely test it!
One quick question. Say that a game have two players and one observer - is it enough if only the observer have this hack implemented, or is it required for all of the players/observers to have this installed?
|
Pfft. In the time it took you to write that program, Blizzard could have easily made chat windows resizable in both the x and y dimensions.
|
On April 13 2012 14:11 VashTS wrote:Show nested quote +On April 13 2012 14:10 Soft`Soap wrote: On a side note, this is a cool concept and if it sounds so easy to implement, it makes me wonder, why hasn't Blizzard done something like this? What's simple for somebody may not be so simple for others. Maybe Blizz simply never thought of this method.
Maybe Blizz might hire him to implement this function officially
|
this would have been neat for something like the Flash vs Jaedong disconnect incident (wrong game, but you get the idea).
|
sounds like some of you havent ever used the internet before... i thought everyone learned their lesson about downloading random programs from unverified sources a long time ago
|
Wow man... never thought I'd see this day lol
Great to keep as a reference! I hope blizzard can see this and try adding some kind of stuff to it.
I would love to see this integrated with replay "group" session. Imagine opening a replay with a friend, setting it up for a big engagement he screwed up, and replaying it once and again, until you can figure out how to best deal with a certain situation. OH MAN THAT WOULD BE AWESOME
|
This can be used, for instance, to resume a disconnected multiplayer game, if all players specify either the exact same replay or their respective replays from the same game, and exactly the same resume time.
I haven't tested this at all, but how do you network them back together. I highly doubt this works..I wouldn't test a guy with one post guys...
|
|
On April 13 2012 14:09 Soft`Soap wrote: I think that putting a link to download hacks is against the tl.net code I think that leaving your findings is fine, but you should probably delete the download links. there are multiple meanings of "hack" you know.
|
Someone have a look at the source code!
Great job if it all works!
|
This looks really interesting, wow so it IS that simple?
Though caution like others have said, only 1 post.
Wait so how does the second person also play?
|
On April 13 2012 14:22 zhurai wrote:Show nested quote +On April 13 2012 14:09 Soft`Soap wrote: I think that putting a link to download hacks is against the tl.net code I think that leaving your findings is fine, but you should probably delete the download links. there are multiple meanings of "hack" you know.
It's still a 3rd party program that Blizzard doesn't approve of
|
Well hasn't SALT been out for a while? Blizzard hasn't done anything regarding using this function.
|
Took a quick look through the source code and don't see anything too suspicious. However, it does inject itself into SC2 so Warden may flag it as a hack. Use at your own risk, I wouldn't recommend using it though as of right now. Hopefully R1CH or someone else with more knowledge can come and confirm.
|
|
|
|