Index: /branches/network/src/lib/network/network_game_manager.cc
===================================================================
--- /branches/network/src/lib/network/network_game_manager.cc	(revision 6492)
+++ /branches/network/src/lib/network/network_game_manager.cc	(revision 6493)
@@ -28,4 +28,6 @@
 #include "game_world.h"
 #include "world_entity.h"
+#include "playable.h"
+#include "player.h"
 #include "network_manager.h"
 
@@ -166,4 +168,5 @@
     return SYNCHELP_WRITE_N;
   }
+
   for ( int i = 0; i<outBuffer.size(); i++ )
   {
@@ -216,6 +219,7 @@
  * @param classID: The ID of the class of which an entity should be created
  */
-void NetworkGameManager::createEntity( ClassID classID, int owner )
-{
+int NetworkGameManager::createEntity( ClassID classID, int owner )
+{
+
   if ( this->isServer() )
   {
@@ -223,12 +227,13 @@
     {
       PRINTF(1)("Cannot create entity! There are no more uniqueIDs left!\n");
-      return;
-    }
-
-    this->executeCreateEntity( classID, newUniqueID++, owner );
+      return -1;
+    }
+
+    return this->executeCreateEntity( classID, newUniqueID++, owner );
   }
   else
   {
     this->requestCreateEntity( classID );
+    return -1;
   }
 }
@@ -331,16 +336,18 @@
  * @param classID: The ID of the class of which an entity should be created
  */
-void NetworkGameManager::executeCreateEntity(ClassID classID, int uniqueID, int owner)
+int NetworkGameManager::executeCreateEntity(ClassID classID, int uniqueID, int owner)
 {
   if ( !writeToClientBuffer( allOutBuffer, (byte)CREATE_ENTITY ) )
-    return;
+    return -1;
   if ( !writeToClientBuffer( allOutBuffer, (int)classID ) )
-    return;
+    return -1;
   if ( !writeToClientBuffer( allOutBuffer, uniqueID ) )
-    return;
+    return -1;
   if ( !writeToClientBuffer( allOutBuffer, owner ) )
-    return;
+    return -1;
 
   doCreateEntity( classID, uniqueID, owner );
+
+  return uniqueID;
 }
 
@@ -412,6 +419,20 @@
   }
 
-
-}
+  signalNewPlayer( userID );
+}
+
+
+
+bool NetworkGameManager::signalNewPlayer(int userId)
+{
+
+  /* create new playable for Player*/
+  PRINTF(0)("Request for creation: %i\n", userId);
+  int uniqueId = this->createEntity(CL_SPACE_SHIP, userId);
+  PRINTF(0)("Request for creation: userid: %i, uniqueid: %i\n", userId, uniqueId);
+  this->sendYouAre(uniqueId, userId);
+
+}
+
 
 /**
@@ -571,5 +592,31 @@
 void NetworkGameManager::doYouAre( int uniqueID )
 {
-  //TODO: what has to be done
+
+  SynchronizeableList::const_iterator it = this->networkStream->getSyncBegin();
+
+  Playable *p = NULL;
+
+  for ( ; it !=networkStream->getSyncEnd(); it++ )
+  {
+    if ( (*it)->getUniqueID()==uniqueID )
+    {
+      if ( (*it)->isA( CL_PLAYABLE ) )
+      {
+        p = dynamic_cast<Playable*>(*it);
+        break;
+      } else
+      {
+        PRINTF(1)("UniqueID is not a Playable\n");
+      }
+    }
+  }
+
+  Player* player = State::getPlayer();
+  assert(p != NULL);
+  assert(player != NULL);
+
+  player->setControllable(p);
+
+
 }
 
Index: /branches/network/src/lib/network/network_game_manager.h
===================================================================
--- /branches/network/src/lib/network/network_game_manager.h	(revision 6492)
+++ /branches/network/src/lib/network/network_game_manager.h	(revision 6493)
@@ -74,5 +74,5 @@
     virtual void readDebug() const;
 
-    void createEntity( ClassID classID, int owner = 0 );
+    int createEntity( ClassID classID, int owner = 0 );
     BaseObject* createEntity(const TiXmlElement* element);
     void removeEntity( int uniqueID );
@@ -87,5 +87,5 @@
 
     void requestCreateEntity(ClassID classID);
-    void executeCreateEntity(ClassID classID, int uniqueID = 0, int owner = 0);
+    int executeCreateEntity(ClassID classID, int uniqueID = 0, int owner = 0);
 
     void requestRemoveEntity(int uniqueID);
@@ -100,4 +100,6 @@
 
     bool canCreateEntity(ClassID classID);
+
+    bool signalNewPlayer(int userId);
 
     void resizeBufferVector(int n);
Index: /branches/network/src/lib/network/network_stream.cc
===================================================================
--- /branches/network/src/lib/network/network_stream.cc	(revision 6492)
+++ /branches/network/src/lib/network/network_stream.cc	(revision 6493)
@@ -192,5 +192,5 @@
           else
           {
-            //this->networkGameManager->sendEntityList( i );
+
           }
           PRINT(0)("handshake finished id=%d\n", handshakes[i]->getNetworkGameManagerId());
Index: /branches/network/src/story_entities/multi_player_world_data.cc
===================================================================
--- /branches/network/src/story_entities/multi_player_world_data.cc	(revision 6492)
+++ /branches/network/src/story_entities/multi_player_world_data.cc	(revision 6493)
@@ -160,13 +160,6 @@
         }
       }
-      else if( !strcmp( element->Value(), "SpaceShip"))       /// FIXME it is not said to be a SpaceShip
-      {
-        BaseObject* created = NetworkGameManager::getInstance()->createEntity(element);
-        if( created != NULL )
-          PRINTF(1)("Created a %s: %s (%8.u)\n", created->getClassName(), created->getName(), created->getLeafClassID());
-        else
-          PRINTF(1)("MultiPlayerWorld: could not create this entity\n");
-      }
       element = element->NextSiblingElement();
+
 
       glmis->step();
@@ -174,16 +167,26 @@
     }
 
-
-    /* create a Player */
-    this->localPlayer = new Player();
-//     Playable* playable;
-//     const std::list<BaseObject*>* playableList = ClassList::getList(CL_PLAYABLE);
-//     assert( playableList != NULL);
-//
-//     if (playableList != NULL)
-//     {
-//       playable = dynamic_cast<Playable*>(playableList->front());
-//       this->localPlayer->setControllable(playable);
-//     }
+    if( NetworkManager::getInstance()->isGameServer())
+    {
+      this->localPlayer = new Player();
+      State::setPlayer(this->localPlayer);
+
+      Playable* playable;
+      const std::list<BaseObject*>* playableList = ClassList::getList(CL_PLAYABLE);
+      assert( playableList != NULL);
+
+      if (playableList != NULL)
+      {
+        playable = dynamic_cast<Playable*>(playableList->front());
+        this->localPlayer->setControllable(playable);
+      }
+    }
+    else
+    {
+      /* create a Player */
+      this->localPlayer = new Player();
+      State::setPlayer(this->localPlayer);
+    }
+
 
     /* init the pnode tree */
Index: /branches/network/src/util/state.cc
===================================================================
--- /branches/network/src/util/state.cc	(revision 6492)
+++ /branches/network/src/util/state.cc	(revision 6493)
@@ -33,4 +33,6 @@
 StoryEntity* State::storyEntity = NULL;
 
+Player* State::player = NULL;
+
 /**
  *  sets camera and target of the current Camera
Index: /branches/network/src/util/state.h
===================================================================
--- /branches/network/src/util/state.h	(revision 6492)
+++ /branches/network/src/util/state.h	(revision 6493)
@@ -11,4 +11,5 @@
 class PNode;
 class WorldEntity;
+class Player;
 class ObjectManager;
 class StoryEntity;
@@ -49,4 +50,11 @@
   static inline StoryEntity* getCurrentStoryEntity() { return State::storyEntity; };
 
+  //////////////
+  /// PLAYER ///
+  //////////////
+  /** @param storyEntity sets the current StoryEntity that is been played */
+  static inline void setPlayer(Player* player) { State::player = player; };
+  /** @returns the current StoryEntity played */
+  static inline Player* getPlayer() { return State::player; };
 
   /////////////////////////
@@ -62,4 +70,5 @@
   static ObjectManager*         objectManager;      //!< A reference to the current ObjectManager
   static StoryEntity*           storyEntity;        //!< A reference to the current StoryEntity played
+  static Player*                player;             //!< A reference to the Player
 
 };
Index: /branches/network/src/world_entities/power_ups/power_up.cc
===================================================================
--- /branches/network/src/world_entities/power_ups/power_up.cc	(revision 6492)
+++ /branches/network/src/world_entities/power_ups/power_up.cc	(revision 6493)
@@ -96,4 +96,11 @@
 }
 
+
+
+/********************************************************************************************
+ NETWORK STUFF
+ ********************************************************************************************/
+
+
 /**
  * data copied in data will bee sent to another host
@@ -108,4 +115,5 @@
   return SYNCHELP_WRITE_N;
 }
+
 
 /**
Index: /branches/network/src/world_entities/power_ups/turret_power_up.cc
===================================================================
--- /branches/network/src/world_entities/power_ups/turret_power_up.cc	(revision 6492)
+++ /branches/network/src/world_entities/power_ups/turret_power_up.cc	(revision 6493)
@@ -119,4 +119,12 @@
 }
 
+
+
+
+/********************************************************************************************
+ NETWORK STUFF
+ ********************************************************************************************/
+
+
 int TurretPowerUp::writeBytes( const byte * data, int length, int sender )
 {
@@ -130,5 +138,4 @@
   return SYNCHELP_READ_N;
 }
-
 
 
Index: /branches/network/src/world_entities/world_entity.cc
===================================================================
--- /branches/network/src/world_entities/world_entity.cc	(revision 6492)
+++ /branches/network/src/world_entities/world_entity.cc	(revision 6493)
@@ -370,4 +370,11 @@
 
 
+
+
+/********************************************************************************************
+ NETWORK STUFF
+ ********************************************************************************************/
+
+
 /**
  * Writes data from network containing information about the state
@@ -417,4 +424,5 @@
 }
 
+
 /**
  * data copied in data will bee sent to another host
