Index: common/MessageContainer.h
===================================================================
--- common/MessageContainer.h	(revision 31b347aaa3120cff68d5c203fbdfd342c3bb194d)
+++ common/MessageContainer.h	(revision 453087eda856fa546fc787f879eec1b5866e887c)
@@ -37,4 +37,5 @@
 #define MSG_TYPE_JOIN_GAME_FAILURE 22
 #define MSG_TYPE_JOIN_GAME_ACK     23
+#define MSG_TYPE_PLAYER_JOIN_GAME  24
 
 typedef struct
Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision 31b347aaa3120cff68d5c203fbdfd342c3bb194d)
+++ server/server.cpp	(revision 453087eda856fa546fc787f879eec1b5866e887c)
@@ -1103,21 +1103,4 @@
          p->currentGame = g; // should have been done in JOIN_GAME, so not necessary
 
-         map<unsigned int, Player*>& otherPlayers = g->getPlayers();
-
-         // tell the new player about all the existing players
-         cout << "Sending other players to new player" << endl;
-         serverMsg.type = MSG_TYPE_PLAYER;
-
-         map<unsigned int, Player*>::iterator it;
-         for (it = otherPlayers.begin(); it != otherPlayers.end(); it++)
-         {
-            it->second->serialize(serverMsg.buffer);
-
-            cout << "sending info about " << it->second->name  << endl;
-            cout << "sending id " << it->second->id  << endl;
-            if ( msgProcessor.sendMessage(&serverMsg, sock, &from, &outputLog) < 0 )
-               error("sendMessage");
-         }
-
          // tell the new player about all map objects
          // (currently just the flags)
@@ -1146,8 +1129,9 @@
             error("sendMessage");
 
-         serverMsg.type = MSG_TYPE_PLAYER;
+         serverMsg.type = MSG_TYPE_PLAYER_JOIN_GAME;
          p->serialize(serverMsg.buffer);
          cout << "Should be broadcasting the message" << endl;
 
+         map<unsigned int, Player*>& otherPlayers = g->getPlayers();
          for (it = otherPlayers.begin(); it != otherPlayers.end(); it++)
          {
@@ -1158,4 +1142,22 @@
 
          g->addPlayer(p);
+
+         map<unsigned int, Player*>& allPlayers = g->getPlayers();
+
+         // tell the new player about all the players in the game (including himself)
+         cout << "Sending other players to new player" << endl;
+         serverMsg.type = MSG_TYPE_PLAYER_JOIN_GAME;
+
+         map<unsigned int, Player*>::iterator it;
+         for (it = allPlayers.begin(); it != allPlayers.end(); it++)
+         {
+            it->second->serialize(serverMsg.buffer);
+
+            cout << "sending info about " << it->second->name  << endl;
+            cout << "sending id " << it->second->id  << endl;
+            if ( msgProcessor.sendMessage(&serverMsg, sock, &from, &outputLog) < 0 )
+               error("sendMessage");
+         }
+
          int numPlayers = g->getNumPlayers();
 
