Game Development Community

Networking variables question.

by Kevin Mitchell · in Torque 3D Professional · 03/12/2012 (5:13 am) · 5 replies

Is there something I'm missing about networked variables? I have my variables added to these functions:

void RPGPlayer::writePacketData(GameConnection *connection, BitStream *stream)
{
   Parent::writePacketData(connection, stream);

//   ................................
//   ................................
//   ................................

   stream->writeFlag(mLockedOn);
   stream->writeFlag(mStrifeOn);

}

void RPGPlayer::readPacketData(GameConnection *connection, BitStream *stream)
{
   Parent::readPacketData(connection, stream);


//   ................................
//   ................................
//   ................................

   mLockedOn=stream->readFlag();
   mStrifeOn=stream->readFlag();
}

U32 RPGPlayer::packUpdate(NetConnection *con, U32 mask, BitStream *stream)
{
   U32 retMask = Parent::packUpdate(con, mask, stream);

//   ................................
//   ................................
//   ................................

   stream->writeFlag(mLockedOn);
   stream->writeFlag(mStrifeOn);

   return retMask;
}

void RPGPlayer::unpackUpdate(NetConnection *con, BitStream *stream)
{
   Parent::unpackUpdate(con,stream);

//   ................................
//   ................................
//   ................................

   mLockedOn=stream->readFlag();
   mStrifeOn=stream->readFlag();

}

Even though I have this here, my variables are still not updating on the ghost side object. Is there something I could be missing?

>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 0 isGhost: 0 mLockedOn: 1 mStrifeOn: 1 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582 
>>>>isControlObject: 1 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.573185 
>>>>isControlObject: 0 isGhost: 1 mLockedOn: 0 mStrifeOn: 0 DIR_ANGLE: -1.583582

#1
03/12/2012 (5:20 am)
did you set the update mask flag so the client knows it changed?
#2
03/12/2012 (5:24 am)
Where would this be triggered. I am using a modified version of player.cpp if the tick runs wouldn't the update have to be triggered then?
#3
03/12/2012 (5:25 am)
Also I thing the variables are being set on the client ghost=0 but they are not being sent to the ghost server side. If my understanding of ghost is correct...
#4
03/13/2012 (6:25 am)
Put a break point on your pack-unpack routines to be sure that your flags are transmitted (or received).
I believe that you have a getControllingClient() check and all the data below it is dropped.
#5
03/13/2012 (5:46 pm)
so I'm not an idiot Im just stupid.... I hade client and ghost going through the same code and the ghost was resetting said variables....