Below is a piece from Street Fighter devotee and the Mozart of online networking, Tony Cannon. It gets a little technical in the details, but the upshot is raw awesomeness: playing ST HD online is going to be sweet!
My main man Seth asked me to write an article for the blog about a recent trip to Backbone where I had the pleasure of doing a little consulting on the network code for Super Street Fighter II Turbo HD Remix. I’ve also added some color commentary on why I started GGPO, how we got where we are now, and how I think STHD’s networking can be improved.
First a little background on me: I’ve been participating in and organizing Street Fighter tournaments since 1991. I’m also a co-owner and Tournament Director for the Evolution Championship Series: the most premier, international, and open fighting game tournament in the world. I think it’s safe to say that my passion for fighting games goes right to the bone.
I started GGPO as an experiment to see if intensity of competitive Street Fighter could be brought online without compromising the quality of the game play. Street Fighter at it’s core is a test of skill between two human opponents. The arcade scene in America was on life support, and going online was clearly the only way the genre was going to survive.
It turns out the timing couldn’t have been more perfect: in August of last year Capcom took notice of GGPO and arranged a meeting where we discussed the technology, how it worked, and particularly why it was ideally suited for arcade games. Other genres have used similar latency hiding techniques, but GGPO is the first to prove that they could be used for the most latency sensitive games, around the world, on the public Internet. Capcom was impressed and convinced Backbone that STHD needed similar technology in order to replicate the arcade experience online.
Last week I had the opportunity to work with Dan Halpern at Backbone to check in on they’ve networking stack and provide some pointers for improvement. We hooked GGPO up to the same latency simulation tools you’ve read about on Gary’s blog and compared it to STHD. I’m happy to report that the Backbone code held up very well. At all test points, GGPO measured only slightly better than STHD on the impact latency had on the duration and intensity of the visual glitches causes by the latency hiding code (i.e. the dreaded “rollback” effect). This is great news for people concerned about the quality of STHD networking. It means that there’s most likely no architectural reason why STHD cannot be as good as or even surpass GGPO when it is released. It also suggests that the reports by some users of GGPO greatly outperforming STHD are most likely a matter of tuning or minor bug fixes. I made two suggestions on how I thought Backbone should spend their time improving their code.
The first recommendation I made was to do more testing on the Internet instead of using latency simulators. Simulators are great for testing basic correctness, but there’s no substitute for the real thing. GGPO was developed and tuned on my wireless home network, bouncing packets from my cable modem off a UDP reflector located on the east coast and back home again. Since all the tuning parameters for things like the reliable UDP layer, windows sizes, etc. were developed on a life, in-home network on a cross-country network between two players, GGPO naturally preforms best in that environment. Adding more internet testing to STHD may reveal some corner cases or mis-tuned parameters in their networking code which could dramatically improve the quality for end users.
The second was to add a configurable, fixed amount of latency to all moves a player does. GGPO calls this the “smoothing” value because it really reduces the magnitude of a rollback. For example, a 2-frame input delay on a 125 ms ping game will reduce the length of a rollback by 20%. That 20% can make a huge difference in reducing the visual glitches caused by rollbacks.
Fixed input latency also helps insure that a player with a persistently bad connection will not impact the quality of a match for users with a superb connection because the delay can be shared. For example, if I’m using 3 frames of input delay and you’re using 0 frames, we can actually share the 3 frames of benefit by running my copy of the game 1.5 frames ahead of yours. That both of our packets sent over the network an extra 25 ms of time to run across the Internet before manifesting themselves as a rollback. Stated another way: it makes a 120 ms game play more like a 70 ms game. That’s a huge win.
Most players cannot tell the difference between 0 and 2 frames of input latency. Those people would absolute prefer a much smoother online experience to having their moves come out a tiny fraction of a second sooner. Tournament players: put down your pitchforks! There are those of us who can detect as much as 1 frame of latency. Those of us who bought that specific Samsung flat-screen LCD rather than the cheaper Sony one because the Sony one added display-lag. Those players shoud be allowed to throttle down the frame-delay all the way to 0 to preserve the exact, offline timing they’ve spent 10-years of accumulated muscle memory perfecting. I’ve been using this system of 0-9 frames of fixed, configurable input delay for a while on GGPO and it’s been working great.
Overall I was very impressed with Backbone’s efforts. They’re already going to have the best networking code seen on a console fighting game at the time they release. Many companies would have stopped working on it by now, and they should be applauded for taking the extra effort to squeeze every last ounce of performance before shipping. I’m also happy that Capcom has been so receptive in allowing the community to come in and help on the project (in all ways, not just the networking code) and am proud to have been able to help out in the ways that I could. Those of your worried about the quality for the networking code in future non-Backbone titles should take heart. Capcom has secured a multi-year, multi-game license for the GGPO. While I obviously cannot discuss any of the details, I’m sure they won’t let another great title ship without lag-free gameplay again given the attention they’ve put on STHD.