Niotso - Protocol

Output


Niotso Project                                                   Fatbag Niotso Project November 17, 2012

Niotso Protocol

Abstract

This document defines the Niotso Protocol. Niotso is an open source re-implementation of the game engine used in The Sims Online, a  massively multiplayer online game (MMOG). The protocol provides communication for synchronized world simulation without realtime collision detection.

Status of This Memo

This document is a working draft which may be edited by anybody visiting the Niotso website until finalization. It may be amended many times with or without community approval.

Currently, the bitstream is not frozen.

Copyright Notice

Copyright (c) 2012 Niotso Project and the persons identified as the document authors. All rights reserved.

Permission to use, copy, modify, publish, display, and/or distribute this document, including any text and Code Components extracted from this document, in any medium and for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE DOCUMENT IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS DOCUMENT INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR  PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR  ACCURACY OF THIS DOCUMENT.

Fatbag                                                         [Page 1] � Niotso Project              Niotso Protocol               November 2012

Table of Contents

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 3    1.1.  Notations. . . . . . . . . . . . . . . . . . . . . . . . . 3  2.  Packet Configuration. . . . . . . . . . . . . . . . . . . . . 3    2.1.  Control Modes. . . . . . . . . . . . . . . . . . . . . . . 3    2.2.  Arithmetic Coding. . . . . . . . . . . . . . . . . . . . . 3  3.  Sessions. . . . . . . . . . . . . . . . . . . . . . . . . . . 3    3.1.  Connection Establishment. . . . . . . . . . . . . . . . . 3    3.2.  User Authentication. . . . . . . . . . . . . . . . . . . . 3    3.3.  Closing a Session. . . . . . . . . . . . . . . . . . . . . 3  4.  User Controls. . . . . . . . . . . . . . . . . . . . . . . . . 3    4.1.  Global User Controls. . . . . . . . . . . . . . . . . . . 4      4.1.1.  Profile Controls. . . . . . . . . . . . . . . . . . . 4    4.2.  Log-in Controls. . . . . . . . . . . . . . . . . . . . . . 4    4.3.  Select-A-Sim Controls. . . . . . . . . . . . . . . . . . . 4    4.4.  Create-A-Sim Controls. . . . . . . . . . . . . . . . . . . 4    4.5.  Map Controls. . . . . . . . . . . . . . . . . . . . . . . 4    4.6.  Lot Controls. . . . . . . . . . . . . . . . . . . . . . . 4      4.6.1.  User Action. . . . . . . . . . . . . . . . . . . . . . 4  5.  World Simulation. . . . . . . . . . . . . . . . . . . . . . . 4    5.1.  World Events. . . . . . . . . . . . . . . . . . . . . . . 4    5.2.  Synchronization. . . . . . . . . . . . . . . . . . . . . . 4  6.  Communication. . . . . . . . . . . . . . . . . . . . . . . . . 4    6.1.  Text Messaging. . . . . . . . . . . . . . . . . . . . . . 4      6.1.1.  Server Notices. . . . . . . . . . . . . . . . . . . . 4      6.1.2.  Private Text Messaging. . . . . . . . . . . . . . . . 4    6.2.  Voice Chat. . . . . . . . . . . . . . . . . . . . . . . . 4      6.2.1.  Private Voice Chat. . . . . . . . . . . . . . . . . . 4  7.  Security Considerations. . . . . . . . . . . . . . . . . . . . 4  8.  References. . . . . . . . . . . . . . . . . . . . . . . . . . 4    8.1.  Normative References. . . . . . . . . . . . . . . . . . . 4    8.2.  Informative References. . . . . . . . . . . . . . . . . . 5  Author's Address. . . . . . . . . . . . . . . . . . . . . . . . . 5

Fatbag                                                         [Page 2] � Niotso Project              Niotso Protocol               November 2012

1. Introduction

Lorem ipsum

1.1. Notations

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

2. Packet Configuration

The Niotso Protocol functions over the User Datagram Protocol (UDP) using encryption provided by Datagram Transport Layer Security (DTLS) as described in [RFC6347].

The public key of the server used to perform the handshake SHOULD be  distributed alongside the clients through a secure means involving a   trusted third party such as HTTPS. The key MAY be occasionally changed and should be done so in combination with a mandatory update of the client software.

2.1. Control Modes

2.2. Arithmetic Coding

3. Sessions

3.1. Connection Establishment

Secure communication between the client and server is established using DTLS version 1.0. The channel is opened when the client logs into a user account and is closed when the client logs out.

If the server fails to identify, the client MUST close the channel.

3.2. User Authentication

3.3. Closing a Session

4. User Controls

Fatbag                                                         [Page 3] � Niotso Project              Niotso Protocol               November 2012

4.1. Global User Controls

4.1.1. Profile Controls

4.2. Log-in Controls

4.3. Select-A-Sim Controls

4.4. Create-A-Sim Controls

4.5. Map Controls

4.6. Lot Controls

4.6.1. User Action

5. World Simulation

5.1. World Events

5.2. Synchronization

6. Communication

6.1. Text Messaging

6.1.1. Server Notices

6.1.2. Private Text Messaging

6.2. Voice Chat

6.2.1. Private Voice Chat

7. Security Considerations

None.

8. References

8.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate              Requirement Levels", BCP 14, RFC 2119, March 1997.

Fatbag                                                         [Page 4] � Niotso Project              Niotso Protocol               November 2012

[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer              Security Version 1.2", RFC 6347, January 2012.

[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO              10646", STD 63, RFC 3629, November 2003.

8.2. Informative References

[RFC5694] Camarillo, G. and IAB, "Peer-to-Peer (P2P) Architecture:              Definition, Taxonomies, Examples, and Applicability", RFC 5694, November 2009.

[RFC5765] Schulzrinne, H., Marocco, E., and E. Ivov, "Security              Issues and Solutions in Peer-to-Peer Systems for Realtime              Communications", RFC 5765, February 2010.

[RFC4732] Handley, M., Rescorla, E., and IAB, "Internet Denial-of-              Service Considerations", RFC 4732, December 2006.

Author's Address

Fatbag Niotso Project

Email: X-Fi6@phppoll.org URI:  http://wiki.niotso.org/User:Fatbag

Fatbag                                                         [Page 5] �

Discussion

 * Should we include support for TCP to allow people to connect over Tor? Should the whole protocol be TCP-only?
 * We can train the arithmetic coding codebooks all the way up until the release candidates.