If you use the message commands, the smallest amount of data that you can add to your package is 4 bytes, so player_ID + X + Y + Z is 16 bytes (with integers anyway). If you use socket commands, the smallest amount you can add is a byte. Depending on how big your playfield is, you can do some tricks that minimize the amount of data needed to be sent. I have a playfield that is 1280x720, I divide that playfield into quadrants. Starting from top left, the first quadrant is X 1 to 256 and Y 1 to 256, the next quadrant is X 257 to 512 and Y 1 to 256, I continue like this to the bottom right corner of the playfield. You can the have 256 quadrants (or more, but then you need to send more data). My playfield is 2D, your seems to be 3D, so you need a second quadrant byte to be sent, the Y position of the quadrant, 256 X quadrants, and 256 Y heights of X quadrants. You X planes can be 16 x 16 quadrants (or any other dimensions that is less than or adds up to 256), then there can be up to 256 of these planes (the Y quadrants, the "height" of the X quadrant that the players are in). Now, you have sent which quadrant the player is in, then you can specify what X, Y and Z position the player has in one of these quadrants. (X = 1 to 256, Y = 1 to 256 and Z = 1 to 256). Do notice that when you add a byte to a socket, the range is -128 to 127, so you need to modify your data to fit this range when you send, and then convert it back at receivers end.
A socket message could look like this:
AddSocketByte(socket_ID,player_ID)
AddSocketByte(socket_ID,X_quadrant)
AddSocketByte(socket_ID,Y_quadrant)
AddSocketByte(socket_ID,X_in_quadrant)
AddSocketByte(socket_ID,Y_in_quadrant)
AddSocketByte(socket_ID,Z_in_quadrant)
This requires only 6 bytes of data to be added to the network data.
If this rambling doesn't make sense, I can draw some models that explain this better. I have reduced network lag with this method.
13/0