Traitormode won't choose the first client as the target, admin can be traitor/target, banlist & removing IPs, environment dust particles, clients are responsible for the KillCharacter message of their own character, moar backgroundfish, syncing item FixRequirement states, longer gameserver tickrate

This commit is contained in:
Regalis
2015-10-24 17:00:58 +03:00
parent 6736f1dd82
commit 3335f87f64
30 changed files with 268 additions and 102 deletions
+14 -14
View File
@@ -43,10 +43,10 @@ namespace Barotrauma.Networking.ReliableMessages
sender.HandleResendRequest(inc);
}
public void HandleAckMessage(NetIncomingMessage inc)
public void HandleLatestMessageID(NetIncomingMessage inc)
{
//make sure we've received what's been sent to us, if not, rerequest
receiver.HandleAckMessage(inc);
receiver.HandleLatestMessageID(inc);
}
public bool CheckMessage(NetIncomingMessage inc)
@@ -73,9 +73,9 @@ namespace Barotrauma.Networking.ReliableMessages
private NetConnection recipient;
private float ackTimer;
private float idSendTimer;
private float ackInterval;
private float idSendInterval;
public ReliableSender(NetPeer sender)
{
@@ -134,8 +134,8 @@ namespace Barotrauma.Networking.ReliableMessages
public void SendMessage(ReliableMessage message, NetConnection connection)
{
ackInterval = 0.0f;
ackTimer = connection.AverageRoundtripTime;
idSendInterval = 0.0f;
idSendTimer = connection.AverageRoundtripTime;
messageBuffer.Add(message.ID, message);
@@ -168,7 +168,7 @@ namespace Barotrauma.Networking.ReliableMessages
NetOutgoingMessage resendMessage = sender.CreateMessage();
message.RestoreInnerMessage(resendMessage);
ackTimer = connection.AverageRoundtripTime;
idSendTimer = connection.AverageRoundtripTime;
sender.SendMessage(resendMessage, connection, NetDeliveryMethod.Unreliable);
}
@@ -177,20 +177,20 @@ namespace Barotrauma.Networking.ReliableMessages
{
if (recipient == null) return;
ackTimer -= deltaTime;
idSendTimer -= deltaTime;
if (ackTimer > 0.0f) return;
if (idSendTimer > 0.0f) return;
//Debug.WriteLine("Sending ack message: "+messageCount);
NetOutgoingMessage message = sender.CreateMessage();
message.Write((byte)PacketTypes.Ack);
message.Write((byte)PacketTypes.LatestMessageID);
message.Write(messageCount);
sender.SendMessage(message, recipient, NetDeliveryMethod.Unreliable);
ackTimer = Math.Max(recipient.AverageRoundtripTime, NetConfig.AckInterval+ackInterval);
ackInterval += 0.1f;
idSendTimer = Math.Max(recipient.AverageRoundtripTime, NetConfig.IdSendInterval+idSendInterval);
idSendInterval += 0.1f;
}
}
@@ -337,7 +337,7 @@ namespace Barotrauma.Networking.ReliableMessages
missingMessages.Remove(id);
}
public void HandleAckMessage(NetIncomingMessage inc)
public void HandleLatestMessageID(NetIncomingMessage inc)
{
ushort messageId = inc.ReadUInt16();
@@ -357,7 +357,7 @@ namespace Barotrauma.Networking.ReliableMessages
return;
}
Debug.WriteLine("Received ack message: " + messageId + ", need to rerequest messages (last id: "+lastMessageID+")");
Debug.WriteLine("Received id update message: " + messageId + ", need to rerequest messages (last id: "+lastMessageID+")");
if (lastMessageID > ushort.MaxValue / 2 && messageId < short.MaxValue / 2)
{