DeLorean: Using Speculation to Enable Low-Latency Interaction for Cloud Gaming
research.microsoft.com
research.microsoft.com
The user perception results are very impressive - round trip times of 250ms were not significantly noticeably different from the control fat client system.
(* EPR only violates locality if you believe in wave function collapse, but there's no reason to)
I think a lot of software innovation is still possible that will allow a VR headset to mask maybe a 50ms delay (smaller than in OP) with advanced algos, allowing you to get photorealistic, real-time graphics through low-power hardware that fits in the headset.
https://www.ifixit.com/Teardown/Oculus+Rift+Development+Kit+...
I don't see how this matters at all. If a cable doesn't restrict movement, surely a table, chair, wall, mountain, lake, ocean, cliff will restrict your movement. You can't emulate infinite environments when stuck in the physical world.
From my own experience, working with a keyboard at a desk doesn't really work well, for various reasons. For one, it's pretty restricting to the movement, and trying to scale the tracking to compensate so you can view a full 360 degrees in a shorter head-swing is both still limiting because you can't perform multiple rotations, and is still extremely disorienting. For another, having a physical sensation of a fixed object that isn't reflected in the visual display also breaks immersion. Also, if you have you move your hands off of the keyboard at all (like, to adjust the display on your face), it's really hard to find it again.
There is currently no good way to do user input in VR. About the best experience I've had so far was standing up, using a bluetooth gamepad.
Having read the article, I'm still very sceptical of the feel for games that receive a high frequency of user input. It's precisely when a sudden, radical change in input is made that lag is most noticeable from my experience. I'm also curious about the extra resource requirements when it comes to physics of which many modern games are heavily reliant. That being after actually successfully modifying a the physics system on a game engine you'd actually want to use to be able to support such a technique..
All of the methods and applications mentioned are really cool, but I'm still EXTREMELY sceptical of practical "cloud" gaming.
I saw this in miniature a couple of years ago, when I was experimenting with real-time gaming using web technologies (I know, I know, TCP), but one blocker for low-hanging-fruit projects is that to get a good experience you need client-side prediction, but then it's very hard to get anything like that and also use a pre-existing physics engine.
The real problem is: I'm a wuss.
Client-side prediction seems like magic to me, and has hurt my head every time I've programmed it, and it goes right back to seeming like magic when I've written it, and I never feel entirely certain that I'm on solid ground.
I always come away with the impression that networked physics is hardcore, and I don't have enough chest hair to deal with it. :)
http://0fps.net/2014/02/26/replication-in-networked-games-sp...
You can do quite a bit of latency hiding without even having to speculatively predict things by just shifting the rendered state of the world in time.
At downvoter: Why would you downvote a suggestion that is on topic?
> platform compatibility headaches and per-platform performance tuning [35, 30, 24].
That seems a bit biased, doesn't it?
they would try to infer what an object's motion would be a few frames ahead of what's coming in from the network. the clients (iirc) would only correct what's in the scene graph if the server disagreed. unlagged was a super aggressive version of this that let other clients be the deciding factor. it was especially useful (or frustrating) for instagib over bad connections.
DeLorean is still trademarked; I know it's a different industry but I imagine considering the inference about the relevance of time to the software and the brand association with time that no lawyer would have approved that.
Also I'm pretty sure a lot of games such as FPSs already do this with direction of motion etc and have done for many many years. John Carmack definitely implemented a long time ago amongst similar techniques such as latency prediction. The only difference here is the location of the rendering.
http://gafferongames.com/networking-for-game-programmers/wha...
> am now allowing the client to guess at the results of the users movement until the authoritative response from the server comes through. This is a biiiig architectural change. The client now needs to know about solidity of objects, friction, gravity, etc. I am sad to see the elegant client-as-terminal setup go away, but I am practical above idealistic.
edit, instead of downvoting please engage in a discussion. This place is turning into reddit.
Also, I don't see how the improbable trademark issue is relevant to the topic.
The vote buttons on HN are too small and next to each other on mobile devices. And it would be better IMHO if the lowest downvote value would be 1 (and only admins could lower the vote-value below).
Anyway, I'm not sure the word "DeLorean" was ever trademarked. By 2008 most related trademarks had been abandoned http://www.deloreanmotorcar.com/dmc/tmarks.htm and I can't find anything in a quick USPTO search now.
from http://en.wikipedia.org/wiki/QuakeWorld :
QuakeWorld's most important feature is its rewritten networking code (for client-side player prediction and delta compression). Player prediction allowed QuakeWorld clients to compensate for high latency, thus allowing dialup users to move around in the virtual world without being affected by the disorienting effects of latency. This helped Quake network play reach an additional market, as opposed to those who had LAN or broadband connections at the time.
There is no cure for latency. The network is physical. Instead of trying to abstract it away in a library and assume lag doesn't exist, it should be designed for in the application. The last time Microsoft abstracted the network away, we ended up with asp.net WebForms.
It sounds like, for a connection of latency L, at time T-2L, the server sends to the client multiple fully rendered frames, each representing the render state for time T for every possible user input that could occur between T-2L and T. The client receives these frames at time T-L, while sending a user input state at T-L which the server will use for a future packs of images. At time T, the client chooses the frame to display based on the actual input the user performed at time T, discarding the rest, and the server receives the user's input from time T-L, using it to render and send the next pack of images for time T+2L.
So while it is strictly true that latency is impossible to avoid for the first two rendered frames, that's only a small fraction of a second and only at the very beginning. After that it's eliminated. Now obviously, rendering speed and bandwidth change the equation and is probably why there is a limit to the latency it can correct for. But this does appear to be a cure for interframe latency.
It's lazy tree culling of every render state at every point in time for every conceivable user input state at that time. It's certainly a big tree, but it seems they are making the statement that it's small enough to fit in modern bandwidth capacities.
Of course, you wouldn't be able to use this in your fighting game example to counteract the relative slow speed of the LCD, but that is because there would be no way to cull the set of images at the LCD itself.
I believe we have a lot we could do to make latency lower, and effort should be focused there. Branch prediction would not be necessary if branching were cheap. This latency prediction system would not be necessary either if latency was low, but it's not. Our hardware sucks. All of the layers of software suck. OculusVR is a testament to how much room for improvement there is in regards to latency.