NetworkDesign: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>Hendrik Brummermann
imported>Hendrik Brummermann
Line 47: Line 47:


[[Image:messages-game.png|thumb|Messages sent while the game is active.]]
[[Image:messages-game.png|thumb|Messages sent while the game is active.]]

==== Regular Messages ====

The [http://stendhal.game-host.org/hudson/job/marauroa_HEAD/javadoc/marauroa/common/net/message/MessageS2CPerception.html S2CPerception] message is a message sent from the server to the client to notify the client about changes to the objects that exist near it. The message is based on the idea explained in the [RolePlayingDesign#Perceptions|Delta Perception] document.

The message is composed of:
* A type that can be DELTA or TOTAL
* A string indicating the name of the zone the perception is related to.
* A time stamp value that will be just one unit bigger than the previous perception
* A List of RPObject that contains added object
* A List of RPObject that contains modified added object attributes
* A List of RPObject that contains modified deleted object attributes
* A List of RPObject that contains deleted object
* A RPObject that describes the things the rest of players don't see about OUR own object.

Read the Delta perception algorithm to understand what it is for.


The client sends [http://stendhal.game-host.org/hudson/job/marauroa_HEAD/javadoc/marauroa/common/net/message/MessageC2SKeepAlive.html C2SKeepAlive] messages regularly. If there has been no keep alive message for some time, the server will timeout the client.


==== Static Content Transfer ====

Perceptions are about dynamic content. But most games have some static data, too. Like maps, tilesets, sounds. The RPManager keeps track of situation in which the client might need some of this static data. A common case is the movement of the client from one zone to another.

If the RPManager detects such a situation, it will offer the new content to the client using a [http://stendhal.game-host.org/hudson/job/marauroa_HEAD/javadoc/marauroa/common/net/message/MessageS2CTransferREQ.html S2CTransferREQ] message. The message is composed of an array of [http://stendhal.game-host.org/hudson/job/marauroa_HEAD/javadoc/marauroa/common/net/message/TransferContent.html TransferContent] objects containing the name of each resource, its timestamp (or checksum) and if the resource is cacheable or not.

The clients replies with a [http://stendhal.game-host.org/hudson/job/marauroa_HEAD/javadoc/marauroa/common/net/message/MessageC2STransferACK.html C2STransferACK] acknowledging the offer. The message is composed of an array of TransferContent objects containing all the name of each resource and a flag indicating ack or not. Note: The C2STransferACK message is always sent, even if all flags indicate that no transfer should take place.

If the clients has acknowledged the need for content to be transfer, the server sends a [http://stendhal.game-host.org/hudson/job/marauroa_HEAD/javadoc/marauroa/common/net/message/MessageS2CTransfer.html S2CTransfer]. The message contains a again an an array of TransferContent objects. This time, however, the actual data is included as well.

==== Actions ====

Actions are commands sent from the client to the server using a [http://stendhal.game-host.org/hudson/job/marauroa_HEAD/javadoc/marauroa/common/net/message/MessageC2SAction.html C2SAction] message. Example for commands are "move to the right", "look at that object", "attack that rat". It is up to the server to decide whether to execute the action or reject it.
{{br}}
{{br}}