- Joined
- Sep 26, 2019
"It's just Xms more latency guys! Would you notice that in an online game?"
Not at all comparable. Online games (at least ones with decent netcode) cheat to provide a lag free experience. When you press the jump button you jump on your screen asap. It doesn't wait around to send the message to the server and get a response back like Stadia is forced to. In order to make this work the jump message that's sent also tells the server when the jump button was pressed and the server will allow you to take actions half a second or so in the past. That's why if you get disconnected you can still walk around for a while. This means that every player sees a slightly different version of the game world but the differences are small enough and get corrected by the server fast enough that nobody notices.
The Overwatch devs do a decent talk on the subject without getting too technical: https://www.youtube.com/watch?v=vTH2ZPgYujQ
Google claimed they were going to do something with "negative latency" where it would predict all of actions you could possibly take (or use AI that could help predict likely actions) and calculate the result of all of them and so be ready for anything. Crock of horseshit from like 20 different angles. An AI like that is just sci-fi. Calculating even a few outcomes would mean massive amounts of extra work porting games to do this sort of stuff and massive amounts of extra computing power (way more than x times extra for x different possible actions). It's possible that Google could have made Stadia in such a way that it wasn't massive amounts of porting work but then it would be even more computing power. $10 a month doesn't come close to cutting it and even if they did do all of that extra processing it would only help eliminate processing latency which is dwarfed by the network latency.
From a technical perspective the whole thing was ridiculously. The only way it was ever going to work was if they really had that sci-fi AI. That speaks to the culture at google as well. They're meant to have some of the best engineers money can buy but somehow they managed to take this pile of crap all the way to market. Either the engineers are afraid to tell the managers no or their diversity hiring has been going terribly and their engineers are complete morons.
That's just like how modern emulators reduce input lag. Here's a great, but very technical writeup from byuu, an autistic savant and the #1 authority on everything to do with Super Nintendo emulation. The real cash money of the article is:
What this means is that for a run-ahead setting of 1, you have to emulate the entire Super Nintendo system twice. For a setting of 2, three times. And for a setting of 4, you have to run the Super Nintendo and generate a full five frames worth of video and audio data before outputting just one frame. This means that it has five times the overhead of running the emulator without run-ahead.
There are tricks that can be done to reduce the overhead: specifically, because the frames are not displayed onscreen, you do not have to emulate the video generation. In other words, you treat it similarly to frame-skipping. Since video is often one of the most expensive portions of emulation, this can greatly reduce the performance impact of run-ahead. In the case of bsnes, it means each frame of run-ahead only adds about 40% of additional overhead compared to another 100% of additional overhead.
Recent extensive optimizations to bsnes in particular allow it to easily handle even four frames of run-ahead on an entry-level Ryzen CPU, but of course your mileage may vary, and it depends upon how demanding your emulator is already.
Ryzen CPUs are AMD's newest modern CPUs, so even an entry-level one is pretty badass. Mega Man X, as far as SNES emulation goes, is a pretty low-end game that can run well in even crappy emulators. It's no Super Mario RPG or Winter Gold. But that's just SNES games.
Without reprogramming each game to handle "negative latency", they'd have to run several instances of the game in tandem, constantly generating frames for each possible action the player could do next, and a system to constantly jump to the instance of the game the player went with for each and every frame. That sounds like a fucking nightmare to implement. Shit has to be perfectly synchronized constantly. If that's the case, no wonder every game on Stadia's running at medium settings. And if they're really running like ten parallel instances of Red Dead Redemption 2 for every player, I really think it'd be more profitable to just mine some altcoin instead.