The annoucement of the new and exciting new OnLive service at the GDC garnered much coverage. Message boards aflame all across every inch of the internet. People clamoring in excitement and riled in cynicism. There were people that exploded with loving adoration, and those that treated it with abysmal dismay. There were those that were excited with the "new age" of gaming promised by this new technology, and those that clung to the past presenting criticisms about things like "ownership" this and "hardcopy" that.
These are all fine and dandy, my friends. Argue as you may about the evolution of the gaming industry in terms of how we play. I am not here to argue this, I am already encamped with those who like to actually own their own games. But I digress, my opinions on whether or not this newfangled service is good or not for the future of gamers everywhere is not the concern of this entry. The concern is entirely technological. And I hope to ask some good questions and gain some good feedback at the same time.
Now, many of you have wondered, rightly so, if this service will work to all its specifications. But the extent of your curiosity has fallen upon a single, simple question: "Will there be any lag?" The answer of this, of course, is the most important factor in whether or not one chooses to use the service. Its unfortunate, then, that no users I have seen have desired to expound on the technolgoical ramifications of such as service. It seems as though we are all concerned with the issue of whether or not, given this new, exciting service, will any current-gen game run smoothly without a hinch on one's computer. No one has discussed, however, whether or not lag-free streaming gaming is an actual possibility.
I say, as per the current technological restrictions, it is not.
Now, you must understand something about OnLive. OnLive, as you may or may not have read, is completely streaming, meaning that everything you see on your computer is not actually coming from your computer. It is being sent by wires or waves via the internet and displayed on your screen. All you will actually be seeing is a video of a game that is being "played" on a machine elsewhere. This isn't to say that your not "playing" the game. It is just to say that your native machine has absolutely no involvement in the game albeit the input commands of your controller and the reception of video data from the OnLive servers. Now people may say "this is not a problem". They may claim that their connection is fast enough. They may claim that they can stream HD movies from netflix without any problems, barely any loading, and unnoticable hiccups. That is all well and fine, my friends. But unfortunately, people are not understanding the technical aspects of streaming video games.
The capability of playing games via the OnLive service, as you know, is completely reliant on how strong or weak one's internet connection is. A good connection, they say, and virtually lag free gaming. Sounds good? Not to me.
Streaming games is much different than streaming video. But I just said all its sending you is video data, right? I did, true. But I forgot to mention one little factor that is heavily important in this little video game experiment. And that "little thing" is user input.
I'll try to say this the best I can without insulting your intelligence. Everyone already knows this, I'm just trying to prove a point. You see, when you play a game, you hit buttons. Button input is read by your controller, and sent to your console (or PC). The button input is processed in light of the current "state" of the game (that is, what is going on in the game world at that time) and your user input along with all the game world situations combine to process a certain set of events. These events are processed and finally displayed on your monitor. Its a two-step process. Firstly, though, the game is on, running. Its sitting there doing its own thing waiting for you to hit a button. One you do, that two-step process occurs. It sends the button input to the console. The console figures out what you are trying to do. It processes that action in light of the current in-game circumstances, then generates the results. Then, the second step is, of course, sending data back at the monitor and you seeing it and reacting (hitting buttons) to that new set of data (i.e. whats going on in your TV screen). So there, its input and output. You input what you want to do, the console processes those actions, and then sends you the result via your monitor. When your doing this at home its fine and dandy. There is virtually no delay as the information isn't travelling from one place to another.
Now, what if we applied this simple input-output loop to a game that is "played" at home but "processed" elsewhere. What would occur? Firstly, the servers x number of miles away would send you the video data of the game, and you'd see it on your screen all pretty. Then, you'd hit some button, telling the game what you want to do next. After this happens, your input via the lovely little OnLive box would send your button commands to the server x miles away, process all that data in light of the current conditions, and send the video data back to you.
You're computer is only handling the input and the video data. No game processes are running on your computer. You have absolutely no files related to the game anywhere on your hard disk. The process used to creat the video isn't even saved on your computer. Absolutely nothing involving the game you are playing in any way shape or form is physically on your hard drive. Now, I ask simply, how can one guarentee no lag when you have to send input data x number of miles away twice and also process this data in-between.
People, you must realize this is not like streaming movies on the internet. Nor is it like any combitation of streaming movies and playing games at home. Just because at home it has no lag, and on the internet there is no video lag from streaming with a high enough connection, does not mean if you combined the two it will be lag free.
In your home, you send the data and then receive the data, but your console retrieves it instantaneously, as it is right next to your controller, and your TV receieves it instantaneously, as its right n ext to your console. There are two operations involving sending data. One from your controller to your console. The other, from your console to your monitor.
When you watch a movie online, there is one sending operation. This sends video data from wherever the video is held to your computer. Your computer does not "respond" to the video data nor does it input any commands that alter the video in any way. This means there is one input operation here. This is relatively fast because there is only one source sending another data, and there is not processing involved on the server-end.
When you play streamed games, however, this is most definately not the case. Your computer sends data to the server, which processes the data, then sends it back to your computer. I cannot make it more clear than that. It is streaming the video, but only after you have sent data x number of miles away and the server processes your data into video and send it back x miles to you. Do you really believe there will be no lag?
The best example I can come up with is playing Street Fighter on OnLive, or any game requiring a quick sucession of button presses. Say, you want to pull of your Hadoken with Ryu. You hit down, then down-right, then right and punch. You hit four buttons there, two of which you did simultaneously. OnLive (presumably) takes every button input, sends it over to its server, processes the information, and sends the updated video data back to you. [Technical note: Note that it can't just choose whether or not the video data is "significantly" different from what you already had. This varies game to game, and pressing down on your control pad may have a very different effect on different games, so it must send every button input a response back lest it has to reprogram itself for every game it offers.] Then, of course, you hit down-right. Now, you ask, shouldn't they all go together as a group of inputs so I get my Hadoken off correctly? Should they? How could they? How could OnLive know that they are supposed to group that set of inputs as a "batch" to be sent and processed together? The only way I could think of is seperated input into a "batch" every couple milliseconds, but that would lead to button-error problems. The game would register some sets of input as together and some not, it would be terrible. So then, if they must process every input seperately, then they'll have to send it to the server, process it, and send it back. Also, they'll need to grab that next button press (down-right) immediately after coming back, send it, process it, and send it back. Then the last one, and finally the punch. Now, how does it know if these commands were inputted in the correct timeframe. Street Fighter requires its combos to be inputted within a half-a-second or something like that. I'm sure they'll keep track of which one comes in first and when, and make sure that they have them in the right order.
In order to implement a system that avoids button input mix-ups, they'll need to do some pretty heavy bookkeeping over there on server-end, making sure the right commands are processed first, which are processed in what order, and which are disregarded after some button input meant to cancel it. This on top of the fact they have to process the core gameplay still. Theoretically, if this is all possible, which I'm sure it is because they are trying to sell it now, then we can examine whether or not you'll get lag or input errors from the system.
If that combo needed to happen in half a second, say, do you truly believe that, with all the requirements I just listed this server would need to do to process those inputs, the combo input (now I'm assuming its somehow treating all of the combo input as one set of input out of good faith, it could be worse) would be sent x miles a way, lets say 300, examined at their server to make sure it is all in the proper order, processes, converted to audio and visual, then sent back to you all in half a second? Lets say that you're not worrying about whether it is sent back to you in that half a second. Lets say that you just care if it makes it there and is processes in that time. Well then, my friend, you have just mentioned what us gamers like to call "lag". Any way you slice it, there is no possible way that this system is lag free. Now, some of you may say it will be virtually lag free, as in it will be unnoticable with a great connection. Really, now?
If everything you input do takes place somewhere else how can you not have lag. Even the smallest, most indescernable amount of lag present between your monitor and whats going on over there at those servers, SEVERS any chance of you ever playing any reaction-heavy game on OnLive with sucess, ever.
There, I've said my peace, and I hope you will too. Please comment below with your thoughts. Feel free to discuss, argue, and disagree. I am open-minded and care about the future of the gaming community. I am simply looking out for those people who might be turned into suckers by a fancy new company who thinks they're the next best thing since sliced bread.