Yo – let’s talk about GGPO.
GGPO, short for “Good Game, Peace Out” is a networking library written by Tony Cannon (of [shoryuken.com](http://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 *Skullgirls*to 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*?