Niotso - Protocol

From Niotso Wiki
Jump to: navigation, search

Source code[edit]

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet type="text/xsl" href="http://ftp.cerias.purdue.edu/pub/doc/rfc/authors/rfc2629.xslt"?>
 
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    <!ENTITY rfc2119 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
    <!ENTITY rfc6347 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6347.xml'>
    <!ENTITY rfc4732 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4732.xml'>
    <!ENTITY rfc5694 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5694.xml'>
    <!ENTITY rfc5765 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5765.xml'>
    <!ENTITY rfc3629 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3629.xml'>
]>
 
<?rfc symrefs="yes"?>
<?rfc sortrefs="no"?>
<?rfc strict="yes" ?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<?rfc inline="no"?>
<?rfc compact="yes"?>
<?rfc editing="no"?>
<?rfc private="Niotso Project"?>
<?rfc header="Niotso Project"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc tocappendix="yes"?>
<?rfc tocindent="yes"?>
 
<rfc ipr="trust200902" docName="draft-fatbag-niotso-protocol-00" category="std">
	<front>
		<title>Niotso Protocol</title>
		<author surname="Fatbag" fullname="Fatbag">
			<organization>Niotso Project</organization>
			<address>
				<email>X-Fi6@phppoll.org</email>
				<uri>http://wiki.niotso.org/User:Fatbag</uri>
			</address>
		</author>
		<date year="2012"/>
		<area>Applications</area>
		<keyword>Niotso</keyword>
		<keyword>The Sims Online</keyword>
		<abstract><t>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.
		</t></abstract>
		<note title="Status of This Memo">
			<t>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.</t>
			<t>Currently, the bitstream is not frozen.</t>
		</note>
		<note title="Copyright Notice">
			<t>Copyright (c) 2012 Niotso Project and the persons identified as the
			document authors.  All rights reserved.</t>
 
			<t>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.</t>
 
			<t>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.</t>
		</note>
	</front>
	<middle>
		<section title="Introduction">
			<t>Lorem ipsum</t>
			<section title="Notations">
				<t>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 <xref target="RFC2119"/>.</t>
			</section>
		</section>
 
		<section title="Packet Configuration">
			<t>The Niotso Protocol functions over the User Datagram Protocol (UDP)
			using encryption provided by Datagram Transport Layer Security (DTLS)
			as described in <xref target="RFC6347"/>.</t>
 
			<t>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.</t>
			<section title="Control Modes">
			</section>
			<section title="Arithmetic Coding">
			</section>
		</section>
 
		<section title="Sessions">
			<section title="Connection Establishment">
				<t>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.</t>
 
				<t>If the server fails to identify, the client MUST close the channel.</t>
			</section>
			<section title="User Authentication">
			</section>
			<section title="Closing a Session">
			</section>
		</section>
 
		<section title="User Controls">
			<section title="Global User Controls">
				<section title="Profile Controls">
				</section>
			</section>
			<section title="Log-in Controls">
			</section>
			<section title="Select-A-Sim Controls">
			</section>
			<section title="Create-A-Sim Controls">
			</section>
			<section title="Map Controls">
			</section>
			<section title="Lot Controls">
				<section title="User Action">
				</section>
			</section>
		</section>
 
		<section title="World Simulation">
			<section title="World Events">
			</section>
			<section title="Synchronization">
			</section>
		</section>
 
		<section title="Communication">
			<section title="Text Messaging">
				<section title="Server Notices">
				</section>
				<section title="Private Text Messaging">
				</section>
			</section>
			<section title="Voice Chat">
				<section title="Private Voice Chat">
				</section>
			</section>
		</section>
 
		<section title="Security Considerations">
			<t>None.</t>
		</section>
	</middle>
	<back>
		<references title="Normative References">
			&rfc2119;
			&rfc6347;
			&rfc3629;
		</references>
		<references title="Informative References">
			&rfc5694;
			&rfc5765;
			&rfc4732;
		</references>
	</back>
</rfc>

Output[edit]



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[edit]

  • 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.