public virtual bool ProcessTick(NetMessageTick msg) { NetChannel.SetRemoteFramerate(msg.HostFrameTime, msg.HostFrameTimeStdDeviation); // TODO: Set client tick count // TODO: Set server tick count // TODO: return GetServerTickCount() > 0 return(true); }
public override bool ProcessTick(NetMessageTick msg) { var tick = msg.Tick; // TODO: Set clock server tick // TODO: Store remembered server tick time -> tick * IntervalPerTick NetChannel.SetRemoteFramerate(msg.HostFrameTime, msg.HostFrameTimeStdDeviation); return(true); }
public virtual void SpawnPlayer() { var tick = new NetMessageTick(Server.GetTick(), Program.HostFrametimeUnbounded, Program.HostFrametimeStdDeviation); _netChannel.SendNetMsg(tick, true); SignonState = ESignonState.Spawn; var signonState = new NetMessageSignonState(SignonState); _netChannel.SendNetMsg(signonState); }
public virtual void SendSnapshot(ClientFrame frame) { // do not send same snapshot twice if (_lastSnapshot == frame.GetSnapshot()) { NetChannel.Transmit(); return; } // if we send a full snapshot (no delta-compression) before, wait until client // received and acknowledge that update. don't spam client with full updates if (_forceWaitForTick > 0) { NetChannel.Transmit(); return; } var msg = new BufferWrite(); var deltaFrame = GetDeltaFrame(_deltaTick); if (deltaFrame == null) { // We need to send a full update and reset the instanced baselines OnRequestFullUpdate(); } var tickmsg = new NetMessageTick(frame.TickCount, Program.HostFrametimeUnbounded, Program.HostFrametimeStdDeviation); tickmsg.WriteToBuffer(msg); // send entity update, delta compressed if deltaFrame != NULL Server.WriteDeltaEntities(this, frame, deltaFrame, msg); var maxTempEnts = 255; Server.WriteTempEntities(this, frame.GetSnapshot(), _lastSnapshot, msg, maxTempEnts); _lastSnapshot = frame.GetSnapshot(); if (NetChannel == null) { _deltaTick = frame.TickCount; return; } bool sendOk; if (deltaFrame == null) { sendOk = NetChannel.SendData(msg); sendOk = sendOk && NetChannel.Transmit(); // remember this tickcount we send the reliable snapshot // so we can continue sending other updates if this has been acknowledged _forceWaitForTick = frame.TickCount; } else { sendOk = NetChannel.SendDatagram(msg) > 0; } if (!sendOk) { Disconnect("Error! Couldn't send snapshot"); } }
public bool ProcessTick(NetMessageTick msg) { _netChannel.SetRemoteFramerate(msg.HostFrameTime, msg.HostFrameTimeStdDeviation); return(UpdateAcknowledgedFramecount(msg.Tick)); }