This readme just gives some hints for the general network programming: ARCHITECTURE: The NetworkStream is in the center of this structure. UserId: containing the id of a user (==client). This id must be unique within a orxonox network its used especialy in the NetworkStream for node identification and also in the Synchronizeable base class for permissions checking (PERMISSION_OWNER) the connections belonging tu toe userId's are stored in the NetworkStream::peers std::map. As a keyvalue the userId's are used. Therefore the usage of this peers map is very delicate. Don't ever try to add anything you are not sure about the id stuff. There are some reserved id's, don't mess with them: 0 : Master Server 1 : First Proxy Server 2 : Second Proxy Server 3 : Third Proxy Server 4 : Fourth Proxy Server . . . NET_MAX_PROXY The maximal number of proxy servers NET_MAX... + 1 First Client NET_MAX... + 2 Second Client . . . NET_MAX_CONNECTION Last client The proxy server ids are assigned as stated in the data/trunk/config/network_settings.conf, the first proxy server in the list gets the id NET_ID_PROXY_01 and so on. uniqueId: uniqueId is an id (unique :D) for each synchronizeable to be identified in a network. the number space for uniqueIds goes from 0 to maxplayers - 1 NetworkStream PeerInfo list: (peers) The network node with the offset 0 is always the server to which the client must connect to (in case there are connections to other hosts at the same time).