ReliableMessages for all reliable networkevents, netstats fix, own character is not networkplayer

This commit is contained in:
Regalis
2015-10-20 22:28:27 +03:00
parent 4cf3386aa5
commit daf1e2bfd8
4 changed files with 35 additions and 17 deletions
+23 -9
View File
@@ -353,15 +353,29 @@ namespace Barotrauma.Networking
foreach (NetworkEvent networkEvent in NetworkEvent.events) foreach (NetworkEvent networkEvent in NetworkEvent.events)
{ {
NetOutgoingMessage message = client.CreateMessage(); if (networkEvent.IsImportant)
message.Write((byte)PacketTypes.NetworkEvent);
if (networkEvent.FillData(message))
{ {
client.SendMessage(message, ReliableMessage reliableMessage = reliableChannel.CreateMessage();
(networkEvent.IsImportant) ? NetDeliveryMethod.ReliableUnordered : NetDeliveryMethod.Unreliable); reliableMessage.InnerMessage.Write((byte)PacketTypes.NetworkEvent);
if (networkEvent.FillData(reliableMessage.InnerMessage))
{
reliableChannel.SendMessage(reliableMessage, client.ServerConnection);
}
} }
else
{
NetOutgoingMessage message = client.CreateMessage();
message.Write((byte)PacketTypes.NetworkEvent);
if (networkEvent.FillData(message))
{
client.SendMessage(message, NetDeliveryMethod.Unreliable);
}
}
} }
NetworkEvent.events.Clear(); NetworkEvent.events.Clear();
@@ -665,8 +679,8 @@ namespace Barotrauma.Networking
} }
Character character = (closestWaypoint == null) ? Character character = (closestWaypoint == null) ?
new Character(ch, position, true) : new Character(ch, position, !isMyCharacter) :
new Character(ch, closestWaypoint, true); new Character(ch, closestWaypoint, !isMyCharacter);
character.ID = ID; character.ID = ID;
character.Inventory.ID = inventoryID; character.Inventory.ID = inventoryID;
+1 -2
View File
@@ -661,8 +661,7 @@ namespace Barotrauma.Networking
if (server.ConnectionsCount>0) if (server.ConnectionsCount>0)
{ {
server.SendMessage(message, recipientConnections, server.SendMessage(message, recipientConnections, NetDeliveryMethod.Unreliable, 0);
(networkEvent.IsImportant) ? NetDeliveryMethod.Unreliable : NetDeliveryMethod.ReliableUnordered, 0);
} }
} }
} }
+10 -6
View File
@@ -21,7 +21,7 @@ namespace Barotrauma.Networking
private float[] totalValue; private float[] totalValue;
private float[] lastValue; private float[] lastValue;
const float UpdateInterval = 1.0f; const float UpdateInterval = 0.1f;
float updateTimer; float updateTimer;
public NetStats() public NetStats()
@@ -54,11 +54,11 @@ namespace Barotrauma.Networking
for (int i = 0; i<3; i++) for (int i = 0; i<3; i++)
{ {
graphs[i].Update(totalValue[i] * 10.0f); graphs[i].Update(totalValue[i] / UpdateInterval);
totalValue[i] = 0.0f; totalValue[i] = 0.0f;
} }
updateTimer = UpdateInterval/10.0f; updateTimer = UpdateInterval;
} }
public void Draw(SpriteBatch spriteBatch, Rectangle rect) public void Draw(SpriteBatch spriteBatch, Rectangle rect)
@@ -71,10 +71,14 @@ namespace Barotrauma.Networking
graphs[(int)NetStatType.ResentMessages].Draw(spriteBatch, rect, null, 0.0f, Color.Red); graphs[(int)NetStatType.ResentMessages].Draw(spriteBatch, rect, null, 0.0f, Color.Red);
spriteBatch.DrawString(GUI.SmallFont, "Peak received: "+graphs[(int)NetStatType.ReceivedBytes].LargestValue()+" bytes/s", spriteBatch.DrawString(GUI.SmallFont,
"Peak received: "+graphs[(int)NetStatType.ReceivedBytes].LargestValue()+" bytes/s " +
"Avg received: " + graphs[(int)NetStatType.ReceivedBytes].LargestValue()/Graph.ArraySize + " bytes/s",
new Vector2(rect.X + 10, rect.Y+10), Color.Cyan); new Vector2(rect.X + 10, rect.Y+10), Color.Cyan);
spriteBatch.DrawString(GUI.SmallFont, "Peak sent: " + graphs[(int)NetStatType.SentBytes].LargestValue() + " bytes/s",
spriteBatch.DrawString(GUI.SmallFont, "Peak sent: " + graphs[(int)NetStatType.SentBytes].LargestValue() + " bytes/s " +
"Avg sent: " + graphs[(int)NetStatType.SentBytes].LargestValue()/Graph.ArraySize + " bytes/s",
new Vector2(rect.X + 10, rect.Y + 30), Color.Orange); new Vector2(rect.X + 10, rect.Y + 30), Color.Orange);
spriteBatch.DrawString(GUI.SmallFont, "Peak resent: " + graphs[(int)NetStatType.ResentMessages].LargestValue() + " messages/s", spriteBatch.DrawString(GUI.SmallFont, "Peak resent: " + graphs[(int)NetStatType.ResentMessages].LargestValue() + " messages/s",
@@ -84,7 +88,7 @@ namespace Barotrauma.Networking
class Graph class Graph
{ {
const int ArraySize = 100; public const int ArraySize = 100;
private float[] values; private float[] values;
@@ -267,6 +267,7 @@ namespace Barotrauma
modeList.Enabled = GameMain.Server != null; modeList.Enabled = GameMain.Server != null;
seedBox.Enabled = GameMain.Server != null; seedBox.Enabled = GameMain.Server != null;
serverMessage.Enabled = GameMain.Server != null; serverMessage.Enabled = GameMain.Server != null;
autoRestartBox.Enabled = GameMain.Server != null;
ServerName = (GameMain.Server==null) ? "Server" : GameMain.Server.Name; ServerName = (GameMain.Server==null) ? "Server" : GameMain.Server.Name;
modeList.OnSelected += SelectMode; modeList.OnSelected += SelectMode;