Traditionally, games are treated as a product. You buy, download, rent, install a game and play it. Some games are networked, connecting to servers and/or other players, but only after you're running a copy of the game.
Cloud games don't need to be downloaded or installed, they're simply played directly on the server or collection of servers the game is hosted on.
PySoy is designed for games to run the same regardless of whether they're being run on a player's local machine, on a machine which a mobile agent connects to, or on a server cloud with thousands of players connected to the cloud with a variety of different agents.
Our cloud gaming infrastructure starts with XMPP Jingle; XMPP itself is used for buddy lists, chat, status, game discovery, and other functions generally provided by game networks. When connecting to a game, Jingle (originally by Google for GTalk) is used to establish a UDP link between agents and servers. We have a XMPP client library called LightMelody which handles manages most of this.
In cloud gaming, an agent is any device, plugin, or other application which allows gamers to play games.
Mobile agents run the WindowLoop thread and other user interface parts of the engine, but most will rely on the cloud for physics processing and other computationally-intense functions. Some may even rely on the cloud for mesh animation and other tasks run as shaders on more powerful GPUs.
Peer to Peer
One of the most exciting aspects of cloud gaming is it's distributed nature. Some functions provided by the cloud can be performed by agents for other agents, such as;
- AI processing
- genetic algorithms
- content distribution
- physics streaming to mobile agents
- complex effects rendering
While any P2P network includes a certain level of trust among peers, a variety of checks and rewards can be used to keep agents honest and willing to participate.