Why GGPO/Rollback code is important to you. NEW: Current (very strange) XBL network results

*QUOTED FROM MIKE ZAIMONT *

(READ BOTTOM OF POST IF YOU JUST WANT THE JIST)

Yo – let’s talk about GGPO.

GGPO, short for “Good Game, Peace Out” is a networking library written by Tony Cannon (of shoryuken.com and Evo fame), and it’s what Skullgirls uses for online play.** I personally believe it is the future of playing fighting games online, but some players have been complaining about the online experience in the recently released Street Fighter 3: Third Strike Online Edition, which also uses GGPO.** A few people have even been disappointed enough to ask me if we would change Skullgirlsto use something else. It seems to me that people are blaming GGPO for these problems, when in fact they have not been properly taught how to get the most out of it.
What is this “lag?” Lag is any extra delay in character response beyond what is normal for the game.

“Input lag” in game design terms refers to any amount of time that elapses between a player’s input and the corresponding character response. All games have some, and in fact the smallest achievable amount of lag is 3 frames at 60 FPS (an explanation of which is beyond the scope of this post). However, playing a game online adds extra delay because information must be exchanged across the internet, and this is what players commonly refer to as “lag.”Internet delay is never zero, even if you play someone in the next room. Let’s say Alex plays Bob in the latest version of* Fightman Game: INJURY MAXIMUM*, and information takes 80 milliseconds (a reasonably average amount of time) to get from Alex’s console to Bob’s. This means the game must deal with 5 frames of internet delay – if Bob presses a button on frame 10, Alex’s console won’t know about that button press until frame 15.Traditional networking code handles this situation by also delaying Alex’s input by 5 frames on his own console. So if Alex presses a button on frame 10, the game will save it and use it on frame 15, simultaneously with Bob’s arriving input from frame 10. Unfortunately for Alex, that means his own character responds sluggishly to his commands, and thus the game feels “laggy.”Any extra input lag means bad news for playing fighting games – it may mean you can’t react to visual cues, can’t tech throws properly, or can’t perform difficult combos… and in the worst case it can change gameplay properties like making some supers unblockable after the super-flash. If you practice online, you can certainly get used to playing with lag, but this isn’t ideal, either – this practice won’t apply as well to in-person matches or tournaments because the extra lag isn’t there offline. All of your combo timing will be off, reacting to things will seem harder, and certain tricks or tactics you have learned simply won’t work anymore because the other player isn’t able to properly react in time.

But if lag is always there online, how can GGPO “get rid of lag?”

It can’t actually “get rid of lag,” but it can allow the game to proceed as if there wasn’t any. With GGPO, in our example above Alex can choose how many frames the game delays his input on his own console, meaning he can choose to have the game react instantly. Thus, for his own character he experiences zero input lag. This means all his combos, links, throw techs and other timing-sensitive things will feel exactly the same as if Alex were playing offline, making his experience infinitely more useful.

But remember, the internet delay is still there. So if Alex chooses zero input lag and presses a button on frame 10, the game will react instantly… but it has to guess what Bob was doing. Alex may see his attack hit on frame 12, but the game doesn’t yet know if Bob was blocking. So when Bob’s frame 12 input arrives on frame 17, the game may possibly have to travel back in time to revise itself and instead show that Bob had blocked the attack on frame 12, thus on frame 17 he’s now in block stun rather than hitstun. This “rollback” shows up as visual choppiness, which gets worse with weaker connections since the game has to revise itself more frequently.

So it all depends on what you want out of the game – GGPO allows users to choose to experience anything between zero and eight frames of input lag**. Those who want the true tournament experience can choose zero lag and get training that will apply equally well offline, but they will have to get used to dealing with rollbacks. **

Alternatively, players who want smoother visuals but can tolerate a bit of input lag can choose 2 to 4 frames of lag, which is generally acceptable for most people and will have fewer visual oddities on average connections. And casual players can choose 5 to 8 frames of lag, which means the game will look super smooth but gameplay will lag quite a bit.

Almost all of these complaints are likely due to a lack of proper in-game information explaining what this choice means to the player – without adequate explanation, a lot of people will choose zero just because it sounds better when it might not actually be a good fit for their priorities or connection. We’re now looking at taking steps to address this in Skullgirls by communicating how this setting actually works, as well as possibly offering additional options to help them better customize the online experience to their tastes.

To summarize - GGPO allows players to choose between lag-free gameplay with occasionally choppy visuals depending on the connection, or smoother visuals with more gameplay lag. Traditional networking code doesn’t offer any choice except smooth visuals with laggier gameplay depending on the connection, and while this looks nice, the option to have lag-free gameplay is a much more instructive online experience if players choose to use it.

What will you choose with Skullgirls?

On top of being able to see the ping of individual players (instead of just green/yellow/red) the game will also recommend you a GGPO delay to switch to before the match starts. Which means if you’re playing against someone with a high ping it will ask you to change your GGPO delay to say 3 or 4 so you will get less teleports that everyone hates at the cost of more input delay like traditional netcode.

What I’d also like people to do is post their speed/ping tests if possible so we can get a list of players and their connections. Then if there’s still issues we can attribute it to other things like how their network is set up etc.

PLEASE ALSO read the notes below (especially sixfortyfive’s) on how the issues with your connection may have more to attribute with the way your connection is set up than the speed of it.

**My current speed/ping test (locally to the nearest server). **

**

http://www.pingtest.net/result/60148315.png

**

Test to outside servers >>> Why GGPO/Rollback code is important to you. NEW: Current (very strange) XBL network results

**Dev’s notes for calculating the amount of lag you will have **

I think we need to remind people to divide their ping times by 16.7 (16.7ms = 1 frame). This should at least, give folks an idea of how many frames of delay they need to set when playing against those in their area. Also, if you set the test server to somewhere close to where your opponent is, you can get the amount of delay for a match with them too.

sixfortyfive’s notes on how the connection actually has more to do with the way things are transmitted than the speed of your internet

**Why GGPO/Rollback code is important to you. NEW: Current (very strange) XBL network results **

Hmm… Will it suffice I wonder…

http://www.pingtest.net/result/59971743.png

I’m too poor to have better internet.

http://www.pingtest.net/result/59973463.png

http://www.pingtest.net/result/59974616.png
"Some online games may not perform optimally"
Yeah that’s about what I expected. Oh well, it’s going to have to suffice until I’m able to switch to FiOS.

Its slow, because I intentionally switched from 10x as fast cable with 10x as much ping to xDSL with very low ping :slight_smile: I’m looking to get fiber once I move though, that will be quite a bit faster without compromising latency.

http://www.pingtest.net/result/59974079.png

Out of curiosity I tried longer distance (all the way on the other side of Europe):

http://www.pingtest.net/result/59974339.png

That’s pretty much the maximum I could consider playable on any level (You can feel the latency pretty bad above 50ms, but its playable with good netcode till 100ms or so). Above 100ms is too much like playing underwater (or too much rollback teleporting, depending on netcode).

To put that in laymens term, my internet with 11ms is a little under 1 frame of latency. All the way across europe is almost 6 frames of latency already, which is bad, but you can still play to an extent as long as the netcode magicks it away well enough.

Out of curiosity, I tried Washington DC: 129ms (~8 frames). That’s already pretty much unplayable, with good netcode you can do it for the lulz but it doesn’t resemble anything like a real game. eg. you can’t react to overheads, even blocking jumpins will take good reflexes.

Being in the middle of the Pacific Ocean is not a good place to be, in terms of online gaming…

I checked my connection with a California server as well and it was like
http://www.pingtest.net/result/59975056.png

http://www.pingtest.net/result/59975328.png

I never had trouble using 3SOE and I play on GGPO often and have no issues. I don’t know if I would try playing with US players though.

http://www.pingtest.net/result/59980065.png

Not too bad for Brazilian standarts, I guess.

For some reason, they paired my ISP (in Arizona) off with a server in Mexicali for the speed test… but here they are.

http://www.pingtest.net/result/59999375.png

What this tells me is that I needed a new computer LONG ago (my current one’s dead and this one’s borrowed from my wife); there’s no other excuse for my difficulty getting a ping below 80 in almost everything I played online. It’s not until you play online that you realize how precious milliseconds actually are.

Latency is higher than usual and can’t connect to router, gonna reset modem and router later.

http://www.pingtest.net/result/60003531.png

Been lurking in the skullgirls threads for a bit and this caught my eye.
http://www.speedtest.net/result/1866942198.png
http://www.pingtest.net/result/60005361.png

It sucks so bad to live in this god forsaken city

http://www.pingtest.net/result/60007270.png

Good velocity(compared to most of brazil) and no one near to play with

http://www.speedtest.net/result/1867126509.png
http://www.pingtest.net/result/60011056.png

Roadrunner upload seems to suck.

Extra tests to different parts of the US and or World. ** All starting from Washington DC area to destination.**

West Canada (North West Coast) Massachusetts/NY (east mid atlantic) Florida (Southeast)

http://www.pingtest.net/result/60029034.png

http://www.pingtest.net/result/60029350.png

http://www.pingtest.net/result/60028880.png

http://www.pingtest.net/result/60029782.png

http://www.pingtest.net/result/60029920.png

http://www.pingtest.net/result/60030028.png

http://www.pingtest.net/result/60063571.png

http://www.pingtest.net/result/60063571.png

er… yeah, dont know how to embed…

15.27 down 0.86 up

my upload speed is crap but i guess thats what i get for living on a continental island…
this was on wireless as well, dont know if wired would help it out, but i cant get wired anyway or i would.

-dime

http://www.speedtest.net/result/1870430501.png

http://www.pingtest.net/result/60125130.png

MY ISP provider said I was on comcast performance which is usually 20mb. Guess I’m doing something right.

Bleh.
http://www.speedtest.net/result/1871024155.png
http://www.pingtest.net/result/60141126.png

Sad thing is, this is via 3G. My wired connection fares worse. Fuck 3rd World internet.

Why is yours a B when mine is a C+? Lol. Because you are better than most of your area I guess?