SRB2 Message Board  

Go Back   SRB2 Message Board > Sonic Robo Blast 2 > SRB2 Discussion

Reply
 
Thread Tools Search this Thread
Old 01-03-2017   #21
choalover
Default

Quote:
Originally Posted by SSNTails View Post
Fantastic news. I was very sad when it turned out 2.1 had broken netcode. It is a big part of SRB2.

Clag isn't going away. SRB2 is a twitch game, like Smash Bros., and I'm sure a lot of you are familiar with the Smash Bros. latency issues. Unlike other games, you can't accurately 'predict' a player's movement, and if the computer guesses wrong, you then have to rollback any interactions and results from those interactions that occurred. Not a simple task.
Me too. I mostly played online in SRB2 back in the 2.0.X days. The sync fails always used to annoy me a lot in 2.1.X.
choalover is offline   Reply With Quote
Old 01-03-2017   #22
Firework917
Wizard 1.0 is SRB3!
 
Firework917's Avatar
Default

This is beautiful, it really is. Wish I was there for it. ;v;
Next time a server like this pops up, I'm pouncing on it.
Firework917 is offline   Reply With Quote
Old 01-03-2017   #23
CobaltBW
I do things sometimes
 
CobaltBW's Avatar
Default

Quote:
Originally Posted by SSNTails View Post
Clag isn't going away. SRB2 is a twitch game, like Smash Bros., and I'm sure a lot of you are familiar with the Smash Bros. latency issues.
And just like Smash Bros. latency, it's terrible. If anything I'd say SRB2's issues are way worse due both to small server selection as well as the game's inherent platforming and movement mechanics. Even without bursts of freeze lag, it's hardly what I would consider "playable".

Quote:
Unlike other games, you can't accurately 'predict' a player's movement, and if the computer guesses wrong, you then have to rollback any interactions and results from those interactions that occurred. Not a simple task.
I guess, but I mean... hasn't it kind of been done before? And it's not that client-to-client is without its own issues, but those issues are dwarfed in comparison to not being able to platform and move correctly.
__________________
~CobaltBW

Check out my soundcloud profile for music stuff
CobaltBW is offline   Reply With Quote
Old 01-03-2017   #24
Mystic
チェン!
Administrator
 
Mystic's Avatar
Default

Quote:
Originally Posted by CobaltBW View Post
I guess, but I mean... hasn't it kind of been done before? And it's not that client-to-client is without its own issues, but those issues are dwarfed in comparison to not being able to platform and move correctly.
The thing that always irritated me the most about that is that it's match that it implements, not coop/comp/race, which don't have much direct player interaction to begin with and therefore would work great with predictive netcode. If you don't have to shoot at another player there's no problem at all if they aren't exactly where they appear to be on your end. Those modes would basically feel exactly the same as single player with that kind of netcode.
Mystic is offline   Reply With Quote
Old 01-03-2017   #25
SSNTails
What part of 'RETIRED' don't you understand?
 
SSNTails's Avatar
Default

Quote:
Originally Posted by Mystic View Post
The thing that always irritated me the most about that is that it's match that it implements, not coop/comp/race, which don't have much direct player interaction to begin with and therefore would work great with predictive netcode. If you don't have to shoot at another player there's no problem at all if they aren't exactly where they appear to be on your end. Those modes would basically feel exactly the same as single player with that kind of netcode.
It also probably hilariously breaks in levels that have interaction (i.e., stepping on a switch, pushing an object, etc.). If you have a flat-out static level, sure, it's a whole lot easier to do since the only thing you could possibly interact with are other players.

Best way to think of it is like in time travel movies, where they say 'don't do X or you'll change the way the future turns out!'. The game would have to be 4D to remedy that issue (rewind to any point in time).
__________________
Roly Poly Putt & TraceRace - for Android, iOS, & PC - http://www.spaddlewit.com
Follow me on twitter: http://www.twitter.com/SSNTails
SSNTails is offline   Reply With Quote
Old 01-03-2017   #26
Monster Iestyn
Friendly Neighbour-Hood
Moderator
 
Monster Iestyn's Avatar
Default

Ah, SRB2CS takes one back in time. I still remember one time in an SRB2CS CTF server, in Nimbus Ruins in particularly, where the game didn't remove the enemy flag I was holding even after respawning from falling in a death pit, allowing me to easily score a point for my team. That happened at least several times in the same session so I recall.
__________________
My page stuffed full of MIDI goodness!
The Hitchhiker's Guide to the Robo-Hoodiverse
Timeline of Sonic Robo Blast History!

That's an uppercase i, not a lowercase L, for the record. Also, it's pronounced "Yes-tin".
Monster Iestyn is offline   Reply With Quote
Old 01-03-2017   #27
Prime 2.0
Grape flavored
Administrator
 
Prime 2.0's Avatar
Default

Not to mention the way something as simple as oscillating FOFs broke everything. Players standing on thin air in meadow match, anyone?

Mind you, it was still cool as hell, as a custom EXE. Getting to play with people from the other side of the Atlantic was fucking great, and I genuinely hope that it or something like it gets done again so I can have that experience again. It just... didn't come even remotely close to fulfilling the needs of the vanilla game.
__________________
Science tells us that nothing can be proven, only rendered more likely to be true. If we do not question what we already know, how can we know, much less admit, when we're wrong? Such things are vital to progress.

Last edited by Prime 2.0; 01-03-2017 at 07:14 PM.
Prime 2.0 is offline   Reply With Quote
Old 01-03-2017   #28
Monster Iestyn
Friendly Neighbour-Hood
Moderator
 
Monster Iestyn's Avatar
Default

In related news, we at the dev team are making progress with fixing netgame issues with particular stages. For instance I've now eliminated all issues with the lava falls in ERCZ for joiners, as well as the electric barrier for Brak Eggman himself disappearing for joiners. toaster has also made a fix for Eggscalibur's spikeballs in CEZ3 ending up underground for joiners. Our netcode is slowly getting more stable, can you believe it? \o/

No idea about issues with any other stages yet, if we knew of any particular points in maps where things consistently start going wrong then we can do something about them.
__________________
My page stuffed full of MIDI goodness!
The Hitchhiker's Guide to the Robo-Hoodiverse
Timeline of Sonic Robo Blast History!

That's an uppercase i, not a lowercase L, for the record. Also, it's pronounced "Yes-tin".
Monster Iestyn is offline   Reply With Quote
Old 01-03-2017   #29
Steelie
feeling rather Iffy lately
 
Steelie's Avatar
Default

What are the chances it'll break again after 2.2 rolls in?
__________________
<Majro> or maybe they simply walk at sucking
Steelie is offline   Reply With Quote
Old 01-03-2017   #30
RomioTheBadass
PK3 Fetishist
 
RomioTheBadass's Avatar
Default

Depends on the netcode i suppose, The less new engine (specifically mapping and modding) features the better lol.
__________________
Sonic 3D Ass : Horrible camera island.

Last edited by RomioTheBadass; 01-03-2017 at 08:45 PM.
RomioTheBadass is offline   Reply With Quote
Old 01-04-2017   #31
fickleheart
ms reflec beat stan
 
fickleheart's Avatar
Default

Quote:
Originally Posted by SSNTails View Post
Clag isn't going away. SRB2 is a twitch game, like Smash Bros., and I'm sure a lot of you are familiar with the Smash Bros. latency issues. Unlike other games, you can't accurately 'predict' a player's movement, and if the computer guesses wrong, you then have to rollback any interactions and results from those interactions that occurred. Not a simple task.
The difference is Smash Bros is a fighting game, where direct player-to-player interaction is the entire game. Fighting games are built on precise frame-level timings, where one player's movement is entirely dependent on what the other players are doing, and attempting to predict movement will throw off every last one of the mechanics the game is built around.

SRB2, even though it may be fast-paced, is much less reliant on those sorts of interactions. Players phase through each other, and the only interaction in ringslinger gametypes is through slow, predictable projectiles. Predictions would still be fairly accurate at a low enough ping (and high pings can still be adjusted for), but more importantly a wrong prediction has much less impact on the game, since shot resolution can recognize the chance of inaccuracy and adjust. There's no "rewinding" required: you'll basically take damage when the server says you take damage, unless you're allowed to opt into taking damage and tell the server that. (If that prediction is wrong? Sorry, but you'll just have to live with it.) They'll bounce back later than they would've in the current netcode, but that still doesn't affect the game's state much.

As far as level geometry moving, just add some reasonable interpolation between known states and run the thinker slightly faster to catch up if it's way behind for some reason. Player positions can be latched to moving platforms when you know they're on the ground, and each client's map possibly being in slightly different positions - again - doesn't affect the game's state enough to be worth worrying over.

A good comparison that comes to my mind is Splatoon. Like SRB2's ringslinger modes, it's a momentum-based game where shots have position and velocity and players are constantly ducking and weaving around each other. Splatoon does, admittedly, have hiccups where shots don't always register how you'd like them to, but you still have fairly smooth interactions in that game even with the player-controlled moving platforms in Ancho-V.

Now, don't get me wrong; nobody's working on this right now. But it's absolutely technically possible to redo SRB2's netcode and remove control lag. The problem is the lack of motivated manpower.
__________________
OK Google, define "hubris".

Last edited by fickleheart; 01-04-2017 at 04:03 AM.
fickleheart is offline   Reply With Quote
Old 01-04-2017   #32
SSNTails
What part of 'RETIRED' don't you understand?
 
SSNTails's Avatar
Default

Quote:
Originally Posted by RedEnchilada View Post
As far as level geometry moving, just add some reasonable interpolation between known states and run the thinker slightly faster to catch up if it's way behind for some reason. Player positions can be latched to moving platforms when you know they're on the ground, and each client's map possibly being in slightly different positions - again - doesn't affect the game's state enough to be worth worrying over.
No, it absolutely is a very huge problem. What you described is not what I'm talking about. Say a player is desynced/lagged, and jumps on a switch to trigger a script. That runs the script, doing a series of actions that could be any number of things, such as spawning a thinker to move the ceiling of that sector to 'open the door'. When the lag catches up, it's determined that the player really DIDN'T jump on that switch. So now you not only have to remove the script, you also have to REWIND all of the actions that script took, including removing the ceiling mover thinker, putting the ceiling sector height back to where it was, and if it's a complex script, how are you going to track and trace and rewind every action it's taken?

At least in Smash Bros, the levels are fairly static. But player interaction is of utmost importance. In SRB2, player interaction isn't nearly as important, like you said, but a player can trigger any sequence of events at any time that can be very difficult to correct in a sync.

It's not gonna happen. The best we'll probably be able to do is Quake3-like lag control, where you think you dodged a bullet, but then the server says "no, you actually were right in the line of fire", and take damage. I'm not sure if that's better than eliminating the clag.

Really, our best ally is the constantly-improving Internet. Back in 2001 I was able to host up to 10 people, running the server on a T3 (!). Now a lot of people have FiOS or similar services at home, with dramatically less latency. We used to do all of this on a dialup modem with 150ms ping.
__________________
Roly Poly Putt & TraceRace - for Android, iOS, & PC - http://www.spaddlewit.com
Follow me on twitter: http://www.twitter.com/SSNTails

Last edited by SSNTails; 01-04-2017 at 02:48 PM.
SSNTails is offline   Reply With Quote
Old 01-04-2017   #33
RomioTheBadass
PK3 Fetishist
 
RomioTheBadass's Avatar
Default

Quote:
Originally Posted by Mr. Mystery View Post
Rare footage of too many (real) people in this clown car of a game for the scoreboard to display
The Scoreboard needs to be updated anyway, It doesn't show more than 18 Players on list, and doesn't show number of tokens found like it does in SP Mode, Sometimes it even fails to display the correct Scores for players on some modes (commonly Tag).
__________________
Sonic 3D Ass : Horrible camera island.

Last edited by RomioTheBadass; 01-04-2017 at 05:18 PM.
RomioTheBadass is offline   Reply With Quote
Old 01-05-2017   #34
Mystic
チェン!
Administrator
 
Mystic's Avatar
Default

Quote:
Originally Posted by SSNTails View Post
No, it absolutely is a very huge problem. What you described is not what I'm talking about. Say a player is desynced/lagged, and jumps on a switch to trigger a script. That runs the script, doing a series of actions that could be any number of things, such as spawning a thinker to move the ceiling of that sector to 'open the door'. When the lag catches up, it's determined that the player really DIDN'T jump on that switch. So now you not only have to remove the script, you also have to REWIND all of the actions that script took, including removing the ceiling mover thinker, putting the ceiling sector height back to where it was, and if it's a complex script, how are you going to track and trace and rewind every action it's taken?
Not saying that doing that type of netcode isn't hard, but couldn't the script wait for authorization from the server that he stepped on it before activating? That's way easier than trying to rewind things that have already happened.
Mystic is offline   Reply With Quote
Old 01-05-2017   #35
Prime 2.0
Grape flavored
Administrator
 
Prime 2.0's Avatar
Default

Quote:
Originally Posted by Mystic View Post
Not saying that doing that type of netcode isn't hard, but couldn't the script wait for authorization from the server that he stepped on it before activating? That's way easier than trying to rewind things that have already happened.
Think about that in the abstract though, especially with stuff like Lua. If complex scripted events have to wait on server confirmation, that means everything has to wait on that, every time - after all, you'd have to rewind back to when the script SHOULD have triggered if you just kept going until confirmation arrived, and that's the same problem all over again. A script can stop a series of complex actors just as easily as it can activate them, after all.

Now picture that "stop everything until script activation confirmed" issue being applied to custom character abilities. After all, a lua-based effect, even one tied to a player double-jumping, can do anything a button in a level can, so it would have to be subject to the same restrictions. Now you have the game stuttering on you constantly, every time you use your special ability... and then having to move forward to catch up with other people who were not frozen at that specific moment, but who none-the-less are also going through that but at different times...

And, well, that's ignoring that you'd need to rewind everything anyways unless all the clients were in synch and all halted at the same time to wait for authorization, because of the aforementioned "button can stop complex actors which otherwise have to be rewinded" issue. So now anything that triggers an authorization cycle, done by any player, causes the netgame to pause for every player.

It would be a clusterfuck.
__________________
Science tells us that nothing can be proven, only rendered more likely to be true. If we do not question what we already know, how can we know, much less admit, when we're wrong? Such things are vital to progress.

Last edited by Prime 2.0; 01-05-2017 at 06:45 AM.
Prime 2.0 is offline   Reply With Quote
Old 01-06-2017   #36
Jellybones
Lawful Neutral
 
Jellybones's Avatar
Default

Hopefully this leads to more improvements. I really miss the larger netgames of 1.09.
Jellybones is offline   Reply With Quote
Old 01-06-2017   #37
fickleheart
ms reflec beat stan
 
fickleheart's Avatar
Default

Quote:
Originally Posted by SSNTails View Post
No, it absolutely is a very huge problem. What you described is not what I'm talking about. Say a player is desynced/lagged, and jumps on a switch to trigger a script. That runs the script, doing a series of actions that could be any number of things, such as spawning a thinker to move the ceiling of that sector to 'open the door'. When the lag catches up, it's determined that the player really DIDN'T jump on that switch. So now you not only have to remove the script, you also have to REWIND all of the actions that script took, including removing the ceiling mover thinker, putting the ceiling sector height back to where it was, and if it's a complex script, how are you going to track and trace and rewind every action it's taken?
Mystic's right on the money. The server would be the one deciding when those kinds of actions take place.

Quote:
Originally Posted by Prime 2.0 View Post
Think about that in the abstract though, especially with stuff like Lua. If complex scripted events have to wait on server confirmation, that means everything has to wait on that, every time - after all, you'd have to rewind back to when the script SHOULD have triggered if you just kept going until confirmation arrived, and that's the same problem all over again. A script can stop a series of complex actors just as easily as it can activate them, after all.
You guys are both thinking about this the wrong way. Of course the current logic of all actions being equal wouldn't work for a proper netcode rewrite. The whole reason such a concept works in other games is because actions are split into server actions and client actions.

A server action would be something like "stepping on this button causes that platform moves to a specific location" or "this door opens somewhere in the level while I play unfitting music". Things that don't belong to a specific player would fall under this role. Those would be the things that the server would have to tell each client to do. Now, yes, this means if you step on a button, it will take a certain amount of time based on your ping before the door opens, but that's the tradeoff you have to make with netcode.

Something like a player ability, on the other hand, would be a client action. Since it's important for the player to see their action happen as soon as they do it, they'll perform their butterfly spawning or projectile launching or whatever on their own, and at the same time tell the server what they did and when they did it, so that the server can get the other clients up to speed. If they need to do a server action, like open a door or destroy a level-owned enemy, they'll give the server a request to perform that action and wait for its approval before doing it. This is the exact kind of logic I applied earlier for the specific case of ringslinger shots; the concept of client actions vs server actions vs client requests for server actions is what allows such a thing to happen. That concept is the backbone of this sort of netcode, actually; without it, everything including player movement would be managed by the server and sent back to the clients, which... is exactly what we have now!

Like I already said, no rewinding is required. If a prediction is wrong, the game deals with it and lets it happen. Game state will bring the clients back into sync, and everything will be fine. Thinking about things in terms of "every client must be absolutely sure they're doing things right" is the exact opposite mentality you have to have for good netcode in platformers.
__________________
OK Google, define "hubris".
fickleheart is offline   Reply With Quote
Old 01-07-2017   #38
AozoraJustin
AKA Superjustinbros
 
AozoraJustin's Avatar
Default

Well I'm glad the future of SRB2 multiplayer is looking up- it was always fun playing with others when I first did net games in 2013.
AozoraJustin is offline   Reply With Quote
Old 01-07-2017   #39
Boo
Call me Boonser
 
Boo's Avatar
Default

Quote:
Originally Posted by Monster Iestyn View Post
In related news, we at the dev team are making progress with fixing netgame issues with particular stages. For instance I've now eliminated all issues with the lava falls in ERCZ for joiners, as well as the electric barrier for Brak Eggman himself disappearing for joiners. toaster has also made a fix for Eggscalibur's spikeballs in CEZ3 ending up underground for joiners. Our netcode is slowly getting more stable, can you believe it? \o/

No idea about issues with any other stages yet, if we knew of any particular points in maps where things consistently start going wrong then we can do something about them.
Well, Some stages the lag Gets higher, and some stages the lag gets lower.
The ping lowers or gets higher sometimes depending on the stage. But its good to hear that our future netcode is getting Stable.

Good work DevTeam, Keep it up!
__________________
Remember that the revolution is what is important, and each one of us, alone, is worth nothing - Che Guevara

Last edited by Boo; 01-07-2017 at 12:45 PM.
Boo is offline   Reply With Quote
Old 01-08-2017   #40
TheGuyThatDrawsThings
I'M THE TRASHMAN. #EATTRASH
 
TheGuyThatDrawsThings's Avatar
Default

Quote:
Originally Posted by Boo View Post
Well, Some stages the lag Gets higher, and some stages the lag gets lower.
The ping lowers or gets higher sometimes depending on the stage. But its good to hear that our future netcode is getting Stable.

Good work DevTeam, Keep it up!
Basically, if this is real life, sometimes you'd mildly twitch, and in SOME places, you'd become the goat from Goat Simulator.
__________________
WHOM DARES ENTER MY VILE LAIR?
TheGuyThatDrawsThings is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 07:01 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, vBulletin Solutions, Inc.