Server based game augmentations. The transition to cloud. Really possible?

Ignoring for a moment all the who pay for it, and what it actually is discussion.

Since this is an interesting mental exercise If I were tasked to write a game or for that matter a demo that utilized the clouds compute performance regardless of vendor this is what I would try. Bear in mind I'd never try and do this in a title I'd expect to ship anytime soon.

Let's put latency in perspective for a moment, out of interest I just pinged my ISP, that's a roundtrip of an ICMP packet taking roughly 19ms, assuming MS's servers are "local" (i.e. located in the same region you'd have similar latency). Now my internet connection is far from great (11Mbit ADSL) but it is probably very slightly above the baseline you could target to hit the bulk of the US, but we'll go with it for now.

Now if I take the 3x the CPU performance in the cloud at face value, and we recognize the extremely limited per frame bandwidth. the first thing I'd try given that 20ms number is running the entire game in the cloud and keep all master game state there including the player, if I can get the time from controller packet to player state update response down to 50ms or less I'd probably persue it.
I've shipped action games with latencies >70ms controller to screen, so it doesn't seem impractical to me.
The next issue becomes prioritizing data from the server and how I deal with frames without data, or the quality of my prediction algorithm. The tendency for more recent multiplayer solutions is to run the same simulation on both ends, but your trying to reduce host side computation, so you'd probably try and do something simpler. You can run the simpler prediction algorithm on the server as well and determine the error the client is seeing, using that to prioritize what updates are sent per frame.
You can afford to run a somewhat simpler prediction algorithm because you have more bandwidth than in a typical P2P multiplayer game where the bandwidth is limited by the upstream bandwidth of the server.
The advantage with keeping everything on the server is everything can interact with the player, the danger is that the quality of the prediction is too low and the experience suffers. I suspect this would be the most difficult balancing act to get right.

What about events that create meshes or change textures?
My first thought is I'd run them at both ends, all I need is to ensure they are deterministic and a way to assign the same object ID's on both ends if they continue to be interactive after creation.

what about Animation that continually deforms meshes like cloth etc?
I'd probably run them locally, but I'd do the math first I suspect that data is highly compressible, either way there would be some limit based on the available bandwidth.

What do you get out of it?
I think the only way to get good utilization out of the cloud is to avoid the bandwidth issue altogether and just run the game there.
Short version is I don't know and I'm not sure you end up with significantly better experience. Your offloading all of the gameplay work to the cloud, including at least rigid body physics, but you'd probably still end up having to animate skeletons locally, and that's a significant cost.
Latency is increased, so it's possibly not a great fit for games that need very low latency like shooters, though since everyone has the same disadvantage it might not actually be as bad as you might expect.
You could probably run 1 or N players in the same environment with minimal additional effort.
I think it would come down to how CPU dependent the game is, but I also suspect that starting with a premise like this would encourage using more CPU.
Of course there would be no offline play and even degradation of the link would likely cause degradation of the experience.

Perhaps a variation on this is that you could run the game on both ends and split ownership so the cloud runs the game say 50M from the player, so if something blows up in the distance, it's coming from the cloud, if it blows up in front of you it runs locally. This resolves the latency issue to some extent. It adds complexity because you have out of date state for parts of the world on both sides of the link and you have to negotiate the ownership handover. Though the more I think about it the more I think it's feasible.

The alternative is to take the low hanging fruit, I think there is probably a fair amount of this to be had like incrementally updating light probes but I think even with a number of tasks like this you'd be grossly underutilizing the 3x resources claimed to be available in the cloud.

I think all of these ideas are interesting technical challenges.
Now all I need is someone to pay me a lot of money to prototype all this,
 
...for a "fast response low latency cloud gaming service" it would have to be a very special cloud with very dedicated servers/cpu's to a single game.

I think that's what MS is offering though. Thanks for the other info too btw.

Course maker where the cloud runs all the baked stuff would be a good idea. Build your course, pick a time of the day.. submit to cloud, play it the next day, and your friends can download the track as well.
Kinda like Halo 4's Forge Mode except the light baking in the cloud and is much more realistic? Hadn't considered that kinda thing. Maybe calculate weather fx on the various surfaces too or something. Better anims for crowds maybe. Updated AI based on how aggressively you took that last lap.

Is a viable but very limited example, unless we make a pure PLANT THE C4 game. But yes, you could build games build around the limitations of cloud response time. How about the toughest Chess game ever!? :)
...or grenades...or mines...or air strikes...or red barrels with delays...or non-interactive earthquakes, etc. If you think about time delayed destruction it's not nearly as limited as you might assume initially. These are rather prevalent things in modern games and aren't the slightest bit subtle either for gameplay nor visual impact.

There is also a lot more delay than you may be presuming even for "interactive" destruction on a large scale. If you watch building collapses you'll discover the actual collapse itself is typically a delayed, gradual process as is until its reaches a critical point. A single rocket/nade/etc doesn't level a building immediately in the real world. It damages the support structure and undergoes necking and stress deformation internally before you get fissures from the actual shear stress to break apart your columns and then finally the collapse starts.

I still don't agree that firing a rocket/nade/etc at a building can't work simply because it may be intercepted. No reason the calculation can't be abandoned if that were to happen mid-flight.

Check this out:
http://www.youtube.com/watch?v=oiftDBtCFt8
http://www.youtube.com/watch?v=_anYswmGMeM
http://www.youtube.com/watch?v=qk06ax1SRIM
 
I was wondering, the Xbox One supposedly has 3 display panes (2 for game, 1 for os). Is it a possible use that one of the panes is for the console hardware and one is for cloud output?

No, I think it's much more simple than that. The PS4 has two of them, one for the game and one for the UI layer. The Xbox One has an HDMI Input, which imho would be the most logical candidate for being handled by the third display pane.
 
Currently both consoles also throttle or if necessary stop background downloads when you're playing a multiplayer game online, so this is not necessarily rocket science ...
Not possible when you're downloading the game you're actually playing. ;)
 
No, I think it's much more simple than that. The PS4 has two of them, one for the game and one for the UI layer. The Xbox One has an HDMI Input, which imho would be the most logical candidate for being handled by the third display pane.

They implied one was the app layer, one was the game layer, and one was the UI in the technical roundtable after the reveal (leveraged for the instant switching between the two). I wonder if the UI layer can also include a game HUD as since it seemed they would be using display planes to keep hud elements sharp while the game ran at dynamic resolutions. Cloud wasn't mentioned at all.
 
No, I think it's much more simple than that. The PS4 has two of them, one for the game and one for the UI layer. The Xbox One has an HDMI Input, which imho would be the most logical candidate for being handled by the third display pane.

It's OT, but MS has laid out their motivations for it and it's nothing to do with the HDMI in. The 2 planes for the game/apps can be used for HUD's in one plane and the game world in the other. I've conjectured that there is nothing that'd keep devs from using one as a foreground plane (with HUD) and the other as a background plane to further micromanage pixels and whatnot. That's best left to another topic though I think.

Don't know about the concept of trying to use them for cloud stuff though.
 
The idea of rendering parts in the cloud Gaikai style is interesting. One could take GT5, say, and render the scenery on the cloud and stream that, overlaying the cars and interior and UI for crispness. Or reflections which don't need to be high quality but which should be realtime. The problem then is latency potentially degrading game experience, but the potential visual enhancement could be significant (as long as you are spending stupid amounts of money on highly occupied servers!). Things like FIFA crowds could be streamed in, but then they could also be saved to disk now every game has 50 GBs to depend on. Replays could also be baked online and streamed in incredible quality, but that's not really a game-changer. Shifting rendering online solves a lot of issues with the data problems.
 
I think the only way to get good utilization out of the cloud is to avoid the bandwidth issue altogether and just run the game there.
Short version is I don't know and I'm not sure you end up with significantly better experience. Your offloading all of the gameplay work to the cloud, including at least rigid body physics, but you'd probably still end up having to animate skeletons locally, and that's a significant cost.

You're basically making a one-player dedicated server.
The standard tricks apply:
1. Client controls player position, the added input latency from the client-server round trip is unacceptable.
2. Predict actions locally; ie. start firing animation and sound effects when the user pulls the trigger, not when the server acknowledges the action.
3. Extrapolate movement of major objects, correct as data comes in from server.

Cheers
 
You're basically making a one-player dedicated server.
The standard tricks apply:
1. Client controls player position, the added input latency from the client-server round trip is unacceptable.
2. Predict actions locally; ie. start firing animation and sound effects when the user pulls the trigger, not when the server acknowledges the action.
3. Extrapolate movement of major objects, correct as data comes in from server.

Cheers

Yes more or less, but to make it worth while you have to dumb down your prediction.
And you have more bandwidth than on games without dedicated servers, to offset that to some extent.

But I'm also saying that with broadband the latency is low enough you could even eat the round trip for the pulling the trigger thing, though I wouldn't necessarily.

And you can extend the idea to a distributed peer model, but in this case one peer is considerably faster than the other (the cloud) so it does the bulk of state management.
 
If people can guarantee that kind of consistent server and network performance and throw out the business case, they might as well run the entire game on the server Gaikai style. No need for R&D.

Push PS*3* profitably @ $299 complete with PS3 BC and a 70 million user/shipping base. Serving to PC and Mac, possibly even Vita for slow paced games and collect a fee.

For one of my Wifi projects, we're not surprised to see intermittent issues when playing for hours. It doesn't show up on streaming video and audio because they have long enough buffers. Real-time game data, especially latency sensitive ones, is more difficult.
 
If people can guarantee that kind of consistent server and network performance and throw out the business case, they might as well run the entire game on the server Gaikai style. No need for R&D.

Push PS*3* profitably @ $299 complete with PS3 BC. Serving to PC and Mac, possibly even Vita for slow paced games and collect a fee.

For one of my Wifi projects, we're not surprised to see intermittent issues when playing for hours. It doesn't show up on streaming video and audio because they have long enough buffers. Real-time game data, especially latency sensitive ones, is more difficult.


The Gaikai solution introduces other issues, most notably the difficulties involved in putting big hot GPU's in data centers and the limitations of virtualizing them, plus if you go that way you may as well just ship a $40 ARM box.

And I'm not suggesting any of this is easy, degrading gracefully is hard, but it's not, like most of this stuff isn't a solved problem at some level.
I just don't see how you efficiently use the cloud resources as an extension to local computation, there are just a limited number of cases where you have a lot of computation resulting in a small result.
There are some obvious cases like AI, some limited physics, some very limited lighting calculations. So you have to find a way to minimize the traffic, pick and choose the state you transmit to the local box and don't require it to initiate things, since that removes 1/2 your latency.

Just saying that's how I'd approach it, I wouldn't try and offload bits and pieces, I'd reverse the paradigm.
 
You just deploy them like supercomputer clusters today. Many are already GPU-based. The servers can be specialized and balanced for the service (Choose the right games, settings and config). Even Parallels VM for Mac creates virtual GPU.

It will be expensive and hard to test if you split the game across the network boundary. You were concerned with testing right ? Now you have to test more hairy configs (What if network "failed" right here in this latency sensitive section, or there, or everywhere ?)
 
You just deploy them like supercomputer clusters today. Many are already GPU-based. The servers can be specialized and balanced for the service (Choose the right games, settings and config). Even Parallels VM for Mac creates virtual GPU.

It will be expensive and hard to test if you split the game across the network boundary. You were concerned with testing right ? Now you have to test more hairy configs (What if network "failed" right here in this latency sensitive section, or there, or everywhere ?)

I just know from my experience with datacenters when I was in Bing a huge portion of the cost is associated with power requirements, and not just on going but how much physical copper you have to run to and through the building.

I've never been a big fan of the OnLive/Gaikai model it seems to me to ignore the fact that you can have a lot of resources sitting infront of the TV for not very much money.

On the test front, I don't think it's much worse than testing multiplayer, emulating network errors is relatively easy.
Depending on how MS' cloud service for Xbox is structured you have the issue of supporting code running on multiple OS' which (being something I do most days) can be a pain in the ass, but tends to identify otherwise subtle bugs.
It would probably take someone shipping an engine with great cloud support before you see significant usage either way. I think this generation we'll see even greater increase in the adoption of game engines over home grown technology.
 
I just know from my experience with datacenters when I was in Bing a huge portion of the cost is associated with power requirements, and not just on going but how much physical copper you have to run to and through the building.
The likely overhead related to the power cost of datacenter operation and internet transmission is one of the reasons I'm (perversely) cool to using cloud functionality in place of local computation, although I am coming from a starting point where I eye the power cost for the data sent over PCB traces to DRAM.

I find it somewhat unsavory that we're in a phase of physical integration where client-side silicon is a year or so away from integrating an incredible amount of bandwidth, storage, and functionality into a few square centimeters, and now Microsoft is blaring how we can now advance the state of the art by sending the same signals hundreds of miles.

That's not a likely metric most gamers would care about, but it's something I've noted.


That being said, Microsoft's claimed minimum reservation is 3x the CPU capability is to be cloud hosted.
If this doesn't include GPU on the cloud side, we still have a CPU component that is estimated to be in the neighborhood of 30W for the console. The perf/W for Jaguar should be decent enough, so it sounds like Microsoft is promising a similar server-side TDP allocation to the Durango SOC.
 
I just don't see how you efficiently use the cloud resources as an extension to local computation, there are just a limited number of cases where you have a lot of computation resulting in a small result.

What do you mean here by 'a small result' exactly? If the cloud was able to give me a GTA-like title with hair/cloth physics on npc's with realistic AI routines I'd call that a pretty massive result in terms of conveying a believable game world to the player.

So you have to find a way to minimize the traffic, pick and choose the state you transmit to the local box and don't require it to initiate things, since that removes 1/2 your latency.

So are you talking about triggered events here?

Just saying that's how I'd approach it, I wouldn't try and offload bits and pieces, I'd reverse the paradigm.

So are you conceptualizing this as follows?

Player sends input to the cloud
Cloud computes everything a la Gaikai...except no rendering
Results of computation comes back to the console
Console renders the results

...do I have that right? Or no?


Btw, I've asked but got no replies to my query about cutscenes yet. Do you happen to have any guesstimates on how much data a fully scripted (physics + anims only) in engine cutscene typically is? Not including any typical assets, just physics scripting and animation scripting.
 
The Gaikai model serves thin (or outdated) clients and is a universal attempt to solve distributed cloud gaming. It also addresses the device installbase issue. You solve this one problem, you help most or all the games. They can also adjust the server side rendering based on available bandwidth (in addition to the adaptive video bitrate).

If they try to distribute the workload like client-server enterprise computing, they have to do differently for every game, and the WAN is not an enterprise network. It is costly and error prone per game. Network errors are known to come in spurts of a few seconds to minutes. If they end up ping ponging between the server data and client data (because they split the problem too fine-grained), the user may see the game world phase in and out right in front of their eyes. I doubt it would be a good experience. If they want to use server power for rendering, they will also need a GPU on the servers. There will be double work and testing would be a nightmare. From what we hear, the developers are having difficulty even with the local implementation in the mean time.

I have no doubt they can do a demo on client-server cloud rendering, but it may be a different picture in the wild. I would expect class action lawsuits if they are not careful.

One of the MS guys mentioned that the cloud is used for latency insensitive tasks, which sounds more feasible.
 
Maybe this has been discussed already, but Blizzard with massively smaller budgetst, worse infrastructure and just handful of data centers can manage to pull out WoW with a LOT of game mechanics done server side without latency being noticeable as long as your latency stays, say, under 200ms - which is a lot more latency most people have even though the servers are on the other side of Europe.
Same goes for pretty much all MMOs, if not all, and some other games (like Diablo 3 (sure the launch was a mess but that's something MS has resources to avoid by having more servers on more locations and thus behind more bandwidth))

If MMO's can get away with it, why couldn't other games?
 
What do you mean here by 'a small result' exactly? If the cloud was able to give me a GTA-like title with hair/cloth physics on npc's with realistic AI routines I'd call that a pretty massive result in terms of conveying a believable game world to the player.

By small result I mean small amount of data required to transmit the result back to the client.
You can easily keep a lot of state on the server, but there is a limited amount of bandwidth available to get it to the client.
Hair and cloth are probably none starters today in the cloud.
If we say take 32768 bytes of data as a reasonable per frame budget, and that's on the high side, lets say your cloak consists of 64x64 polygons (or particles that are used in tessellation)and you require x/y/z positions for each of those points, we'll assume you can quantize those to 8 bits, thats 64x64x3=12288 bytes required for the one cloak or over 1/3 the total bandwidth budget for a frame. Now you can save something with compression here, but IMO It's much better to compute that locally.

Player sends input to the cloud
Cloud computes everything a la Gaikai...except no rendering
Results of computation comes back to the console
Console renders the results

Not exactly or rather probably not at the level you are thinking, what I'm suggesting is closer to a single player in a multiplayer game with a remote server. i.e. the local machine predicts state changes and elapses time locally and over some time larger than a single frame the server corrects errors in that state. If the Server has enough cycles to burn it can run the same approximation as the client and know exactly how much error exists on the client and use that to prioritize what data is sent to the client.

It's a well understood paradigm used in almost every multiplayer game in the last decade. Although it's never referred to this way it's a sort of lossy compression for state.
 
Maybe this has been discussed already, but Blizzard with massively smaller budgetst, worse infrastructure and just handful of data centers can manage to pull out WoW with a LOT of game mechanics done server side without latency being noticeable as long as your latency stays, say, under 200ms - which is a lot more latency most people have even though the servers are on the other side of Europe.
Same goes for pretty much all MMOs, if not all, and some other games (like Diablo 3 (sure the launch was a mess but that's something MS has resources to avoid by having more servers on more locations and thus behind more bandwidth))

If MMO's can get away with it, why couldn't other games?

MMOs get away with it because their servers are there for facilitating relatively simple central game state with input from lots of separate clients. They're not there to provide arbitrary, unique computation power to each client independently.

There's already a lot of good examples of cloud services on mobile, especially things like Maps and Google Earth. Using the cloud for storage of a massive dataset that is chunked down to the client is still a lot easier than trying to use the cloud as any kind of dependable, generic computation resource.

Mobile devices also use the cloud for voice recognition and image / video processing and conversion, which could be useful for home game consoles, but XBox One and PS4 both have far more computational resources at hand locally than do any mobile devices yet devised.

The cloud makes great sense for streaming game play, routing inputs to allow remote play by a friend, and etc., but that's again all about communications, not computation.
 
Back
Top