From 00c64f0b208bd208b11cfc3beba5e4fbd68e44ab Mon Sep 17 00:00:00 2001 From: Regalis Date: Tue, 18 Aug 2015 18:13:40 +0300 Subject: [PATCH] Networking bugfixes & optimization --- .../Farseer Physics Engine.v12.suo | Bin 0 -> 162816 bytes Launcher/PackageManager.cs | 33 ++++---- Subsurface/Properties/AssemblyInfo.cs | 4 +- .../Source/Characters/AI/EnemyAIController.cs | 37 ++++++--- Subsurface/Source/Characters/Character.cs | 57 +++++++++----- Subsurface/Source/Characters/CharacterInfo.cs | 2 +- .../GameSession/GameModes/TraitorMode.cs | 12 +-- Subsurface/Source/GameSettings.cs | 30 ++++--- Subsurface/Source/Items/CharacterInventory.cs | 15 ++-- .../Items/Components/Machines/Controller.cs | 4 +- .../Items/Components/Machines/Reactor.cs | 19 ++--- .../Source/Items/Components/Projectile.cs | 11 ++- Subsurface/Source/Items/Item.cs | 5 ++ Subsurface/Source/Map/Submarine.cs | 9 +-- Subsurface/Source/Networking/GameClient.cs | 28 ++++++- Subsurface/Source/Networking/GameServer.cs | 74 +++++++++++++++--- Subsurface/Source/Networking/NetworkEvent.cs | 2 + Subsurface/Source/Screens/LobbyScreen.cs | 2 +- Subsurface/Source/Screens/NetLobbyScreen.cs | 56 ++----------- Subsurface/Source/Screens/ServerListScreen.cs | 11 ++- Subsurface/Source/Utils/MathUtils.cs | 4 +- Subsurface/Source/Utils/SaveUtil.cs | 13 ++- Subsurface/changelog.txt | 24 ++++++ Subsurface_Solution.v12.suo | Bin 606208 -> 654336 bytes .../Subsurface_content.csproj.PSM.cachefile | 2 + ...ubsurface_content.csproj.Windows.cachefile | 6 ++ .../bin/Windows/Content/SpriteFont1.xnb | Bin 20142 -> 79451 bytes .../bin/Windows/IgnoreMe.dll | Bin 3072 -> 3072 bytes ...0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt | 2 + ...{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}.xml | 32 ++++++-- ...gnTimeResolveAssemblyReferencesInput.cache | Bin 5881 -> 5865 bytes .../obj/Windows/IgnoreMe.dll | Bin 3072 -> 3072 bytes ...0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt | 5 ++ .../Subsurface_contentContent.contentproj | 9 +++ ...gnTimeResolveAssemblyReferencesInput.cache | Bin 6701 -> 6660 bytes 35 files changed, 320 insertions(+), 188 deletions(-) create mode 100644 Farseer Physics Engine 3.5/Farseer Physics Engine.v12.suo create mode 100644 Subsurface_content/Subsurface_content/Subsurface_content.csproj.Windows.cachefile diff --git a/Farseer Physics Engine 3.5/Farseer Physics Engine.v12.suo b/Farseer Physics Engine 3.5/Farseer Physics Engine.v12.suo new file mode 100644 index 0000000000000000000000000000000000000000..7d0e3e068eefe7bd44a2d765957d6601efc33887 GIT binary patch literal 162816 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 XC>%jq@*Pk=7Ikp^9|YC=#-hIj*OS)i literal 0 HcmV?d00001 diff --git a/Launcher/PackageManager.cs b/Launcher/PackageManager.cs index 61e9b7e2e..b1270721f 100644 --- a/Launcher/PackageManager.cs +++ b/Launcher/PackageManager.cs @@ -96,28 +96,25 @@ namespace Launcher fileButton.Enabled = (selectedPackage != null); } - if (selectedPackage == null) + + foreach (ListBox fileBox in fileBoxes) { - foreach (ListBox fileBox in fileBoxes) + fileBox.Items.Clear(); + } + + + foreach (ListBox fileBox in fileBoxes) + { + ContentType type = (fileBox.Tag is ContentType) ? (ContentType)fileBox.Tag : ContentType.None; + + foreach (ContentFile file in selectedPackage.files) { - fileBox.Items.Clear(); - } - } - else - { - - foreach (ListBox fileBox in fileBoxes) - { - ContentType type = (fileBox.Tag is ContentType) ? (ContentType)fileBox.Tag : ContentType.None; - - foreach (ContentFile file in selectedPackage.files) - { - if (file.type != type) continue; - - fileBox.Items.Add(file); - } + if (file.type != type) continue; + + fileBox.Items.Add(file); } } + } private void newPackage_Click(object sender, EventArgs e) diff --git a/Subsurface/Properties/AssemblyInfo.cs b/Subsurface/Properties/AssemblyInfo.cs index eaf2f38aa..511733048 100644 --- a/Subsurface/Properties/AssemblyInfo.cs +++ b/Subsurface/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.1.2.0")] -[assembly: AssemblyFileVersion("0.1.2.0")] +[assembly: AssemblyVersion("0.1.3.1")] +[assembly: AssemblyFileVersion("0.1.3.1")] diff --git a/Subsurface/Source/Characters/AI/EnemyAIController.cs b/Subsurface/Source/Characters/AI/EnemyAIController.cs index 80131efd7..ffdba403f 100644 --- a/Subsurface/Source/Characters/AI/EnemyAIController.cs +++ b/Subsurface/Source/Characters/AI/EnemyAIController.cs @@ -470,14 +470,21 @@ namespace Subsurface public override void FillNetworkData(NetOutgoingMessage message) { message.Write((byte)state); + + bool wallAttack = (wallAttackPos!=Vector2.Zero && state == AiState.Attack); - message.Write(wallAttackPos.X); - message.Write(wallAttackPos.Y); + message.Write(wallAttack); - message.Write(steeringManager.WanderAngle); - message.Write(updateTargetsTimer); - message.Write(raycastTimer); - message.Write(coolDownTimer); + if (wallAttack) + { + message.Write(wallAttackPos.X); + message.Write(wallAttackPos.Y); + } + + message.Write(MathUtils.AngleToByte(steeringManager.WanderAngle)); + message.WriteRangedSingle(Math.Max(updateTargetsTimer,0.0f), 0.0f, UpdateTargetsInterval, 8); + message.WriteRangedSingle(Math.Max(raycastTimer,0.0f), 0.0f, RaycastInterval, 8); + message.WriteRangedSingle(Math.Max(coolDownTimer, 0.0f), 0.0f, attackCoolDown*2.0f, 8); message.Write(targetEntity==null ? -1 : (targetEntity as Entity).ID); } @@ -485,7 +492,7 @@ namespace Subsurface public override void ReadNetworkData(NetIncomingMessage message) { AiState newState = AiState.None; - Vector2 newWallAttackPos; + Vector2 newWallAttackPos = Vector2.Zero; float wanderAngle; float updateTargetsTimer, raycastTimer, coolDownTimer; @@ -495,12 +502,18 @@ namespace Subsurface { newState = (AiState)(message.ReadByte()); - newWallAttackPos = new Vector2(message.ReadFloat(), message.ReadFloat()); - wanderAngle = MathUtils.WrapAngleTwoPi(message.ReadFloat()); - updateTargetsTimer = MathHelper.Clamp(message.ReadFloat(), 0.0f, UpdateTargetsInterval); - raycastTimer = MathHelper.Clamp(message.ReadFloat(), 0.0f, RaycastInterval); - coolDownTimer = MathHelper.Clamp(message.ReadFloat(), 0.0f, attackCoolDown); + bool wallAttack = message.ReadBoolean(); + + if (wallAttack) + { + newWallAttackPos = new Vector2(message.ReadFloat(), message.ReadFloat()); + } + + wanderAngle = MathUtils.ByteToAngle(message.ReadByte()); + updateTargetsTimer = message.ReadRangedSingle(0.0f, UpdateTargetsInterval, 8); + raycastTimer = message.ReadRangedSingle(0.0f, RaycastInterval, 8); + coolDownTimer = message.ReadRangedSingle(0.0f, attackCoolDown*2.0f, 8); targetID = message.ReadInt32(); } diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 3d9009f48..85b126a30 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -426,6 +426,11 @@ namespace Subsurface } } + public override string ToString() + { + return (info != null && !string.IsNullOrWhiteSpace(info.Name)) ? info.Name : SpeciesName; + } + public void GiveJobItems(WayPoint spawnPoint) { if (info == null || info.Job == null) return; @@ -1032,14 +1037,17 @@ namespace Subsurface message.Write(NetTime.Now); // Write byte = move direction - message.Write(AnimController.TargetMovement.X); - message.Write(AnimController.TargetMovement.Y); + message.WriteRangedSingle(AnimController.TargetMovement.X, -10.0f, 10.0f, 8); + message.WriteRangedSingle(AnimController.TargetMovement.Y, -10.0f, 10.0f, 8); message.Write(AnimController.TargetDir==Direction.Right); - message.Write(cursorPosition.X); - message.Write(cursorPosition.Y); - + if (aiController!=null) + { + message.WriteRangedSingle(cursorPosition.X, -1000.0f, 1000.0f, 16); + message.WriteRangedSingle(cursorPosition.Y, -1000.0f, 1000.0f, 16); + } + message.Write(LargeUpdateTimer <= 0); if (LargeUpdateTimer<=0) @@ -1053,29 +1061,28 @@ namespace Subsurface message.Write(limb.body.LinearVelocity.X); message.Write(limb.body.LinearVelocity.Y); - message.Write(limb.body.Rotation); + message.Write(MathUtils.AngleToByte(limb.body.Rotation)); message.Write(limb.body.AngularVelocity); i++; } - message.Write(AnimController.StunTimer); + message.WriteRangedSingle(AnimController.StunTimer, 0.0f, 60.0f, 8); message.Write((byte)health); - LargeUpdateTimer = 5; + if (aiController != null) aiController.FillNetworkData(message); + + LargeUpdateTimer = 10; } else { Limb torso = AnimController.GetLimb(LimbType.Torso); + if (torso == null) torso = AnimController.GetLimb(LimbType.Head); + message.Write(torso.body.Position.X); message.Write(torso.body.Position.Y); LargeUpdateTimer = Math.Max(0, LargeUpdateTimer-1); - } - - - - if (aiController != null) aiController.FillNetworkData(message); - + } } public override void ReadNetworkData(NetworkEventType type, NetIncomingMessage message) @@ -1127,10 +1134,19 @@ namespace Subsurface sendingTime = message.ReadDouble(); - targetMovement = new Vector2 (message.ReadFloat(), message.ReadFloat()); + targetMovement = new Vector2(message.ReadRangedSingle(-10.0f, 10.0f, 8), message.ReadRangedSingle(-10.0f, 10.0f, 8)); + targetMovement.X = MathUtils.Round(targetMovement.X, 0.1f); + targetMovement.Y = MathUtils.Round(targetMovement.Y, 0.1f); + targetDir = message.ReadBoolean(); - cursorPos = new Vector2(message.ReadFloat(), message.ReadFloat()); + if (aiController!=null) + { + cursorPos = new Vector2( + message.ReadRangedSingle(-1000.0f, 1000.0f, 16), + message.ReadRangedSingle(-1000.0f, 1000.0f, 16)); + } + } catch @@ -1165,7 +1181,7 @@ namespace Subsurface vel.X = message.ReadFloat(); vel.Y = message.ReadFloat(); - rotation = message.ReadFloat(); + rotation = MathUtils.ByteToAngle(message.ReadByte()); angularVel = message.ReadFloat(); } catch @@ -1187,7 +1203,7 @@ namespace Subsurface try { - newStunTimer = message.ReadFloat(); + newStunTimer = message.ReadRangedSingle(0.0f, 60.0f, 8); newHealth = message.ReadByte(); } catch { return; } @@ -1196,6 +1212,8 @@ namespace Subsurface Health = newHealth; LargeUpdateTimer = 1; + + if (aiController != null) aiController.ReadNetworkData(message); } else { @@ -1210,13 +1228,12 @@ namespace Subsurface Limb torso = AnimController.GetLimb(LimbType.Torso); + if (torso == null) torso = AnimController.GetLimb(LimbType.Head); torso.body.TargetPosition = pos; LargeUpdateTimer = 0; } - if (aiController != null) aiController.ReadNetworkData(message); - LastNetworkUpdate = sendingTime; } diff --git a/Subsurface/Source/Characters/CharacterInfo.cs b/Subsurface/Source/Characters/CharacterInfo.cs index be1b2bf5a..b2d473d47 100644 --- a/Subsurface/Source/Characters/CharacterInfo.cs +++ b/Subsurface/Source/Characters/CharacterInfo.cs @@ -269,7 +269,7 @@ namespace Subsurface { UpdateCharacterItems(); } - + if (pickedItems.Count > 0) { charElement.Add(new XAttribute("items", string.Join(",", pickedItems))); diff --git a/Subsurface/Source/GameSession/GameModes/TraitorMode.cs b/Subsurface/Source/GameSession/GameModes/TraitorMode.cs index cd8d1c537..76d3bffb6 100644 --- a/Subsurface/Source/GameSession/GameModes/TraitorMode.cs +++ b/Subsurface/Source/GameSession/GameModes/TraitorMode.cs @@ -63,8 +63,10 @@ namespace Subsurface { string endMessage = traitor.character.Info.Name + " was a traitor! "; endMessage += (traitor.character.Info.Gender == Gender.Male) ? "His" : "Her"; - endMessage += " task was to assassinate " + target.character.Info.Name + ". "; - endMessage += "The task was unsuccessful - the has submarine reached its destination."; + endMessage += " task was to assassinate " + target.character.Info.Name + ", but "; + endMessage += (traitor.character.Info.Gender == Gender.Male) ? "he" : "she"; + endMessage += " got " + ((traitor.character.Info.Gender == Gender.Male) ? "himself" : "herself"); + endMessage += " killed before completing it."; End(endMessage); return; } @@ -72,10 +74,8 @@ namespace Subsurface { string endMessage = traitor.character.Info.Name + " was a traitor! "; endMessage += (traitor.character.Info.Gender == Gender.Male) ? "His" : "Her"; - endMessage += " task was to assassinate " + target.character.Info.Name + ", but "; - endMessage += (traitor.character.Info.Gender == Gender.Male) ? "he" : "she"; - endMessage += " got " + ((traitor.character.Info.Gender == Gender.Male) ? "himself" : "herself"); - endMessage += " killed before completing it."; + endMessage += " task was to assassinate " + target.character.Info.Name + ". "; + endMessage += "The task was unsuccessful - the has submarine reached its destination."; End(endMessage); return; } diff --git a/Subsurface/Source/GameSettings.cs b/Subsurface/Source/GameSettings.cs index 088b0489f..a1831609a 100644 --- a/Subsurface/Source/GameSettings.cs +++ b/Subsurface/Source/GameSettings.cs @@ -52,6 +52,21 @@ namespace Subsurface GraphicsHeight = int.Parse(graphicsMode.Attribute("height").Value); FullScreenEnabled = graphicsMode.Attribute("fullscreen").Value == "true"; + + MasterServerUrl = ToolBox.GetAttributeString(doc.Root, "masterserverurl", ""); + + foreach (XElement subElement in doc.Root.Elements()) + { + switch (subElement.Name.ToString().ToLower()) + { + case "contentpackage": + string path = ToolBox.GetAttributeString(subElement, "path", ""); + SelectedContentPackage = ContentPackage.list.Find(cp => cp.Path == path); + + if (SelectedContentPackage == null) SelectedContentPackage = new ContentPackage(path); + break; + } + } } catch { @@ -60,20 +75,7 @@ namespace Subsurface } - MasterServerUrl = ToolBox.GetAttributeString(doc.Root, "masterserverurl", ""); - foreach (XElement subElement in doc.Root.Elements()) - { - switch (subElement.Name.ToString().ToLower()) - { - case "contentpackage": - string path = ToolBox.GetAttributeString(subElement, "path", ""); - SelectedContentPackage = ContentPackage.list.Find(cp => cp.Path == path); - - if (SelectedContentPackage == null) SelectedContentPackage = new ContentPackage(path); - break; - } - } } @@ -86,6 +88,8 @@ namespace Subsurface doc.Add(new XElement("config")); } + doc.Root.Add(new XAttribute("masterserverurl", MasterServerUrl)); + XElement gMode = doc.Root.Element("graphicsmode"); if (gMode == null) { diff --git a/Subsurface/Source/Items/CharacterInventory.cs b/Subsurface/Source/Items/CharacterInventory.cs index 25db5d641..d705153bb 100644 --- a/Subsurface/Source/Items/CharacterInventory.cs +++ b/Subsurface/Source/Items/CharacterInventory.cs @@ -139,16 +139,17 @@ namespace Subsurface if (items[i] != null) { bool combined = false; - if (item.Combine(items[i])) - { - //PutItem(item, i, false, false); - combined = true; - } - //else if (items[i].Combine(item)) + //if (item.Combine(items[i])) //{ - // //PutItem(items[i], i, false, false); + // //PutItem(item, i, false, false); // combined = true; //} + //else + if (items[i].Combine(item)) + { + //PutItem(items[i], i, false, false); + combined = true; + } if (!combined) return false; diff --git a/Subsurface/Source/Items/Components/Machines/Controller.cs b/Subsurface/Source/Items/Components/Machines/Controller.cs index a968e8ed9..9bd231f5a 100644 --- a/Subsurface/Source/Items/Components/Machines/Controller.cs +++ b/Subsurface/Source/Items/Components/Machines/Controller.cs @@ -66,7 +66,9 @@ namespace Subsurface.Items.Components { this.cam = cam; - if (character == null || character.SelectedConstruction != item) + if (character == null + || character.SelectedConstruction != item + || Vector2.Distance(character.SimPosition, item.SimPosition) > item.PickDistance * 1.5f) { if (character != null) { diff --git a/Subsurface/Source/Items/Components/Machines/Reactor.cs b/Subsurface/Source/Items/Components/Machines/Reactor.cs index afe8c36d5..a2351be9d 100644 --- a/Subsurface/Source/Items/Components/Machines/Reactor.cs +++ b/Subsurface/Source/Items/Components/Machines/Reactor.cs @@ -239,24 +239,15 @@ namespace Subsurface.Items.Components new RepairTask(item, 60.0f, "Reactor meltdown!"); item.Condition = 0.0f; - //fissionRate = 0.0f; - //coolingRate = 0.0f; - //PlaySound(ActionType.OnFailure, item.Position); - //item.ApplyStatusEffects(ActionType.OnFailure, 1.0f, null); - - //new Explosion(item.SimPosition, 6.0f, 500.0f, 600.0f, 10.0f, 2.0f).Explode(); + var containedItems = item.ContainedItems; + if (containedItems == null) return; - if (item.ContainedItems!=null) + foreach (Item containedItem in item.ContainedItems) { - foreach (Item containedItem in item.ContainedItems) - { - if (containedItem == null) continue; - containedItem.Condition = 0.0f; - } + if (containedItem == null) continue; + containedItem.Condition = 0.0f; } - - } public override bool Pick(Character picker) diff --git a/Subsurface/Source/Items/Components/Projectile.cs b/Subsurface/Source/Items/Components/Projectile.cs index 122574f22..8deae4633 100644 --- a/Subsurface/Source/Items/Components/Projectile.cs +++ b/Subsurface/Source/Items/Components/Projectile.cs @@ -173,16 +173,19 @@ namespace Subsurface.Items.Components (float)Math.Cos(item.body.Rotation), (float)Math.Sin(item.body.Rotation)); - if (Vector2.Dot(f1.Body.LinearVelocity, normal)<0 ) return StickToTarget(f2.Body, dir); + if (Vector2.Dot(f1.Body.LinearVelocity, normal) < 0.0f) return StickToTarget(f2.Body, dir); } - foreach (Item contained in item.ContainedItems) + + var containedItems = item.ContainedItems; + if (containedItems == null) return true; + foreach (Item contained in containedItems) { - contained.Condition = 0.0f; if (contained.body != null) { - contained.body.SetTransform(item.SimPosition, contained.body.Rotation); + contained.SetTransform(item.SimPosition, contained.body.Rotation); } + contained.Condition = 0.0f; } return true; diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index a6b4e95be..cf030ec47 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -61,6 +61,11 @@ namespace Subsurface get { return prefab.sprite; } } + public float PickDistance + { + get { return prefab.PickDistance; } + } + public float Condition { get { return condition; } diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs index 260ee1d2f..4d09ddcb1 100644 --- a/Subsurface/Source/Map/Submarine.cs +++ b/Subsurface/Source/Map/Submarine.cs @@ -505,7 +505,7 @@ namespace Subsurface private void Translate(Vector2 amount) { - if (amount == Vector2.Zero) return; + if (amount == Vector2.Zero || ! amount.IsValid()) return; Level.Loaded.Move(-amount); } @@ -516,11 +516,6 @@ namespace Subsurface speed += force/mass; } - //public void Move(Vector2 amount) - //{ - // speed = Vector2.Lerp(speed, amount, 0.05f); - //} - VoronoiCell collidingCell; public bool OnCollision(Fixture f1, Fixture f2, Contact contact) { @@ -597,6 +592,8 @@ namespace Subsurface return; } + if (!speed.IsValid() || targetPosition.IsValid()) return; + //newTargetPosition = newTargetPosition + newSpeed * (float)(NetTime.Now - sendingTime); targetPosition = newTargetPosition; diff --git a/Subsurface/Source/Networking/GameClient.cs b/Subsurface/Source/Networking/GameClient.cs index 57a8dbd23..47fcbd36a 100644 --- a/Subsurface/Source/Networking/GameClient.cs +++ b/Subsurface/Source/Networking/GameClient.cs @@ -74,8 +74,8 @@ namespace Subsurface.Networking // Create new instance of configs. Parameter is "application Id". It has to be same on client and server. NetPeerConfiguration Config = new NetPeerConfiguration("subsurface"); - //Config.SimulatedLoss = 0.2f; - //Config.SimulatedMinimumLatency = 0.25f; + Config.SimulatedLoss = 0.2f; + Config.SimulatedMinimumLatency = 0.5f; // Create new client, with previously created configs client = new NetClient(Config); @@ -141,7 +141,7 @@ namespace Subsurface.Networking // When this is set to true, we are approved and ready to go bool CanStart = false; - DateTime timeOut = DateTime.Now + new TimeSpan(0,0,5); + DateTime timeOut = DateTime.Now + new TimeSpan(0,0,15); // Loop untill we are approved while (!CanStart) @@ -421,6 +421,26 @@ namespace Subsurface.Networking gameStarted = false; } + public override void Draw(Microsoft.Xna.Framework.Graphics.SpriteBatch spriteBatch) + { + base.Draw(spriteBatch); + + if (!Game1.DebugDraw) return; + + int width = 200, height = 300; + int x = Game1.GraphicsWidth - width, y = (int)(Game1.GraphicsHeight * 0.3f); + + GUI.DrawRectangle(spriteBatch, new Rectangle(x, y, width, height), Color.Black * 0.7f, true); + spriteBatch.DrawString(GUI.Font, "Network statistics:", new Vector2(x + 10, y + 10), Color.White); + + spriteBatch.DrawString(GUI.SmallFont, "Received bytes: " + client.Statistics.ReceivedBytes, new Vector2(x + 10, y + 45), Color.White); + spriteBatch.DrawString(GUI.SmallFont, "Received packets: " + client.Statistics.ReceivedPackets, new Vector2(x + 10, y + 60), Color.White); + + spriteBatch.DrawString(GUI.SmallFont, "Sent bytes: " + client.Statistics.SentBytes, new Vector2(x + 10, y + 75), Color.White); + spriteBatch.DrawString(GUI.SmallFont, "Sent packets: " + client.Statistics.SentPackets, new Vector2(x + 10, y + 90), Color.White); + + } + public override void Disconnect() { NetOutgoingMessage msg = client.CreateMessage(); @@ -514,7 +534,7 @@ namespace Subsurface.Networking msg.Write((byte)type); msg.Write(message); - client.SendMessage(msg, NetDeliveryMethod.Unreliable); + client.SendMessage(msg, NetDeliveryMethod.ReliableUnordered); } /// diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index a1d961eb4..95ba6e8ad 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -38,12 +38,12 @@ namespace Subsurface.Networking this.name = name; this.password = password; - + config = new NetPeerConfiguration("subsurface"); - //config.SimulatedLoss = 0.2f; - //config.SimulatedMinimumLatency = 0.25f; - + config.SimulatedLoss = 0.2f; + config.SimulatedMinimumLatency = 0.5f; + config.Port = port; Port = port; @@ -222,7 +222,7 @@ namespace Subsurface.Networking if (!isClient) { - c.LargeUpdateTimer = 0; + //c.LargeUpdateTimer = 0; new NetworkEvent(c.ID, false); } } @@ -259,32 +259,38 @@ namespace Subsurface.Networking catch { inc.SenderConnection.Deny("Connection error - server failed to read your ConnectionApproval message"); + DebugConsole.NewMessage("Connection error - server failed to read the ConnectionApproval message", Color.Red); break; } if (userPassword != password) { inc.SenderConnection.Deny("Wrong password!"); + break; } else if (version != Game1.Version.ToString()) { inc.SenderConnection.Deny("Subsurface version " + Game1.Version + " required to connect to the server (Your version: " + version + ")"); + DebugConsole.NewMessage("Connection error - wrong game version", Color.Red); break; } else if (packageName != Game1.SelectedPackage.Name) { inc.SenderConnection.Deny("Your content package ("+packageName+") doesn't match the server's version (" + Game1.SelectedPackage.Name + ")"); + DebugConsole.NewMessage("Connection error - wrong content package name", Color.Red); break; } else if (packageHash != Game1.SelectedPackage.MD5hash.Hash) { inc.SenderConnection.Deny("Your content package (MD5: " + packageHash + ") doesn't match the server's version (MD5: " + Game1.SelectedPackage.MD5hash.Hash + ")"); + DebugConsole.NewMessage("Connection error - wrong content package hash", Color.Red); break; } else if (connectedClients.Find(c => c.name.ToLower() == name.ToLower())!=null) { inc.SenderConnection.Deny("The name ''" + name + "'' is already in use. Please choose another name."); + DebugConsole.NewMessage("Connection error - name already in use", Color.Red); break; } @@ -397,7 +403,9 @@ namespace Subsurface.Networking } if (recipients.Count == 0) break; - server.SendMessage(outmsg, recipients, inc.DeliveryMethod, 0); + server.SendMessage(outmsg, recipients, inc.DeliveryMethod, 0); + + System.Diagnostics.Debug.WriteLine("Sending networkevent (" + outmsg.LengthBytes+" bytes)"); break; case (byte)PacketTypes.Chatmessage: @@ -451,6 +459,8 @@ namespace Subsurface.Networking networkEvent.FillData(message); + System.Diagnostics.Debug.WriteLine("Sending networkevent " + Entity.FindEntityByID(networkEvent.ID).ToString() + " (" + message.LengthBytes + " bytes)"); + if (server.ConnectionsCount>0) { server.SendMessage(message, server.Connections, @@ -464,13 +474,19 @@ namespace Subsurface.Networking public bool StartGame(GUIButton button, object obj) { + Submarine selectedMap = Game1.NetLobbyScreen.SelectedMap as Submarine; + + if (selectedMap == null) + { + Game1.NetLobbyScreen.SubList.Flash(); + return false; + } + int seed = DateTime.Now.Millisecond; Rand.SetSyncedSeed(seed); - AssignJobs(); - - Submarine selectedMap = Game1.NetLobbyScreen.SelectedMap as Submarine; - + AssignJobs(); + //selectedMap.Load(); Game1.GameSession = new GameSession(selectedMap, "", Game1.NetLobbyScreen.SelectedMode); @@ -654,7 +670,7 @@ namespace Subsurface.Networking public void NewTraitor(Client traitor, Client target) { - new GUIMessageBox("New traitor", traitor.name + " is the traitor and the target is " + target+"."); + new GUIMessageBox("New traitor", traitor.name + " is the traitor and the target is " + target.name+"."); NetOutgoingMessage msg = server.CreateMessage(); msg.Write((byte)PacketTypes.Traitor); @@ -665,6 +681,38 @@ namespace Subsurface.Networking } } + public override void Draw(Microsoft.Xna.Framework.Graphics.SpriteBatch spriteBatch) + { + base.Draw(spriteBatch); + + if (!Game1.DebugDraw) return; + + int width = 200, height = 300; + int x = Game1.GraphicsWidth - width, y = (int)(Game1.GraphicsHeight*0.3f); + + GUI.DrawRectangle(spriteBatch, new Rectangle(x,y,width,height), Color.Black*0.7f, true); + spriteBatch.DrawString(GUI.Font, "Network statistics:", new Vector2(x+10, y+10), Color.White); + + spriteBatch.DrawString(GUI.SmallFont, "Connections: "+server.ConnectionsCount, new Vector2(x + 10, y + 30), Color.White); + spriteBatch.DrawString(GUI.SmallFont, "Received bytes: " + server.Statistics.ReceivedBytes, new Vector2(x + 10, y + 45), Color.White); + spriteBatch.DrawString(GUI.SmallFont, "Received packets: " + server.Statistics.ReceivedPackets, new Vector2(x + 10, y + 60), Color.White); + + spriteBatch.DrawString(GUI.SmallFont, "Sent bytes: " + server.Statistics.SentBytes, new Vector2(x + 10, y + 75), Color.White); + spriteBatch.DrawString(GUI.SmallFont, "Sent packets: " + server.Statistics.SentPackets, new Vector2(x + 10, y + 90), Color.White); + + + y += 110; + foreach (Client c in connectedClients) + { + spriteBatch.DrawString(GUI.SmallFont, c.name + ":", new Vector2(x + 10, y), Color.White); + spriteBatch.DrawString(GUI.SmallFont, "- avg roundtrip " + c.Connection.AverageRoundtripTime+" s", new Vector2(x + 20, y + 15), Color.White); + spriteBatch.DrawString(GUI.SmallFont, "- current MTU " + c.Connection.CurrentMTU, new Vector2(x + 20, y + 30), Color.White); + y += 50; + + } + + } + public bool UpdateNetLobby(object obj) { NetOutgoingMessage msg = server.CreateMessage(); @@ -699,12 +747,12 @@ namespace Subsurface.Networking } if (recipients.Count>0) { - server.SendMessage(msg, recipients, NetDeliveryMethod.Unreliable, 0); + server.SendMessage(msg, recipients, NetDeliveryMethod.ReliableUnordered, 0); } } else { - server.SendMessage(msg, server.Connections, NetDeliveryMethod.Unreliable, 0); + server.SendMessage(msg, server.Connections, NetDeliveryMethod.ReliableUnordered, 0); } } diff --git a/Subsurface/Source/Networking/NetworkEvent.cs b/Subsurface/Source/Networking/NetworkEvent.cs index e2d699ffc..47daaed52 100644 --- a/Subsurface/Source/Networking/NetworkEvent.cs +++ b/Subsurface/Source/Networking/NetworkEvent.cs @@ -113,6 +113,8 @@ namespace Subsurface.Networking return false; } + System.Diagnostics.Debug.WriteLine("Networkevent entity: "+e.ToString()); + //System.Diagnostics.Debug.WriteLine("new message: " + eventType +" - "+e); e.ReadNetworkData(eventType, message); diff --git a/Subsurface/Source/Screens/LobbyScreen.cs b/Subsurface/Source/Screens/LobbyScreen.cs index 04160fa25..266740951 100644 --- a/Subsurface/Source/Screens/LobbyScreen.cs +++ b/Subsurface/Source/Screens/LobbyScreen.cs @@ -428,7 +428,7 @@ namespace Subsurface private bool StartShift(GUIButton button, object selection) { - Game1.GameSession.StartShift(TimeSpan.Zero, selectedLevel); + Game1.GameSession.StartShift(TimeSpan.Zero, selectedLevel, false); Game1.GameScreen.Select(); return true; diff --git a/Subsurface/Source/Screens/NetLobbyScreen.cs b/Subsurface/Source/Screens/NetLobbyScreen.cs index 993e285c7..9cbcae64f 100644 --- a/Subsurface/Source/Screens/NetLobbyScreen.cs +++ b/Subsurface/Source/Screens/NetLobbyScreen.cs @@ -23,8 +23,6 @@ namespace Subsurface private GUITextBox textBox, seedBox; - //GUIFrame previewPlayer; - private GUIScrollBar durationBar; private GUIFrame playerFrame; @@ -36,6 +34,11 @@ namespace Subsurface private GUITextBox serverMessage; + public GUIListBox SubList + { + get { return subList; } + } + public Submarine SelectedMap { get { return subList.SelectedData as Submarine; } @@ -275,7 +278,7 @@ namespace Subsurface modeList.OnSelected += Game1.Server.UpdateNetLobby; durationBar.OnMoved = Game1.Server.UpdateNetLobby; - if (subList.CountChildren > 0) subList.Select(0); + if (subList.CountChildren > 0) subList.Select(-1); if (GameModePreset.list.Count > 0) modeList.Select(0); } else if (playerFrame.children.Count==0) @@ -443,6 +446,7 @@ namespace Subsurface ((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black*0.1f, color, Alignment.Left, GUI.style, null, true); msg.Font = GUI.SmallFont; + msg.CanBeFocused = false; msg.Padding = new Vector4(20, 0, 0, 0); chatBox.AddChild(msg); @@ -658,57 +662,13 @@ namespace Subsurface return; } - TrySelectMap(mapName, md5Hash); + if (!string.IsNullOrWhiteSpace(mapName)) TrySelectMap(mapName, md5Hash); modeList.Select(modeIndex); durationBar.BarScroll = durationScroll; LevelSeed = levelSeed; - - //try - //{ - // int playerCount = msg.ReadInt32(); - - // for (int i = 0; i < playerCount; i++) - // { - // int clientID = msg.ReadInt32(); - // string jobName = msg.ReadString(); - - // Client client = null; - // GUITextBlock textBlock = null; - // foreach (GUIComponent child in playerList.children) - // { - // Client tempClient = child.UserData as Client; - // if (tempClient == null || tempClient.ID != clientID) continue; - - // client = tempClient; - // textBlock = child as GUITextBlock; - // break; - // } - // if (client == null) continue; - - // client.assignedJob = JobPrefab.List.Find(jp => jp.Name == jobName); - - // textBlock.Text = client.name + ((client.assignedJob==null) ? "" : " (" + client.assignedJob.Name + ")"); - - // if (client.assignedJob==null || jobName != client.assignedJob.Name) - // { - // if (clientID == Game1.Client.ID) - // { - // Game1.Client.CharacterInfo.Job = new Job(client.assignedJob); - // Game1.Client.CharacterInfo.Name = client.name; - // UpdatePreviewPlayer(Game1.Client.CharacterInfo); - // } - // } - // } - //} - - //catch - //{ - // return; - //} - } } diff --git a/Subsurface/Source/Screens/ServerListScreen.cs b/Subsurface/Source/Screens/ServerListScreen.cs index 6534975bd..00dd70f84 100644 --- a/Subsurface/Source/Screens/ServerListScreen.cs +++ b/Subsurface/Source/Screens/ServerListScreen.cs @@ -51,11 +51,6 @@ namespace Subsurface new GUITextBlock(new Rectangle(0, 100, 0, 30), "Server IP:", GUI.style, menu); ipBox = new GUITextBox(new Rectangle(0, 130, 200, 30), GUI.style, menu); - - - - - int middleX = (int)(width * 0.4f); serverList = new GUIListBox(new Rectangle(middleX,60,0,(int)(height*0.7f)), GUI.style, menu); @@ -80,6 +75,10 @@ namespace Subsurface joinButton = new GUIButton(new Rectangle(0,0,150,30), "Join", Alignment.BottomRight, GUI.style, menu); joinButton.OnClicked = JoinServer; + + GUIButton button = new GUIButton(new Rectangle(-20, -20, 100, 30), "Back", Alignment.TopLeft, GUI.style, menu); + button.UserData = 0; + button.OnClicked = Game1.MainMenuScreen.SelectTab; refreshDisableTimer = DateTime.Now; @@ -286,7 +285,7 @@ namespace Subsurface { string selectedPassword = ""; - if ((serverList.Selected.GetChild("password") as GUITickBox).Selected) + if (serverList.Selected!=null && (serverList.Selected.GetChild("password") as GUITickBox).Selected) { var msgBox = new GUIMessageBox("Password required", ""); var passwordBox = new GUITextBox(new Rectangle(0,0,150,20), Alignment.BottomCenter, GUI.style, msgBox); diff --git a/Subsurface/Source/Utils/MathUtils.cs b/Subsurface/Source/Utils/MathUtils.cs index 02ae459b5..1a0d088e5 100644 --- a/Subsurface/Source/Utils/MathUtils.cs +++ b/Subsurface/Source/Utils/MathUtils.cs @@ -17,7 +17,9 @@ namespace Subsurface public static float Round(float value, float div) { - return (float)Math.Floor(value / div) * div; + return (value < 0.0f) ? + (float)Math.Ceiling(value / div) * div : + (float)Math.Floor(value / div) * div; } public static float VectorToAngle(Vector2 vector) diff --git a/Subsurface/Source/Utils/SaveUtil.cs b/Subsurface/Source/Utils/SaveUtil.cs index b9111f1ad..5836779c1 100644 --- a/Subsurface/Source/Utils/SaveUtil.cs +++ b/Subsurface/Source/Utils/SaveUtil.cs @@ -55,11 +55,16 @@ namespace Subsurface { DebugConsole.ThrowError("Error saving gamesession", e); } - //Game1.GameSession.crewManager.Save(directory+"\\crew.xml"); + + try + { + CompressDirectory(tempPath, fileName+".save", null); + } - CompressDirectory(tempPath, fileName+".save", null); - - //Directory.Delete(tempPath, true); + catch (Exception e) + { + DebugConsole.ThrowError("Error compressing save file", e); + } } public static void LoadGame(string fileName) diff --git a/Subsurface/changelog.txt b/Subsurface/changelog.txt index 49db66232..e4c559a3a 100644 --- a/Subsurface/changelog.txt +++ b/Subsurface/changelog.txt @@ -1,3 +1,27 @@ + +--------------------------------------------------------------------------------------------------------- +v0.1.3.1 +--------------------------------------------------------------------------------------------------------- + +Multiplayer: + - chat messages are sent reliably + +--------------------------------------------------------------------------------------------------------- +v0.1.3 +--------------------------------------------------------------------------------------------------------- + +Multiplayer: + - fixed master server connection errors in server list screen + - fixed a bug that caused other characters to get "stuck" to the railgun controller, causing them + to fly back to it as they try to move away + +Items: + - putting items inside other items works properly now (i.e. by pulling a spear to the same slot as + a harpoon, not the other way around) + - C4 blocks loaded inside a railgun shell won't explode inside the submarine when firing the railgun + - fixed another game-crashing railgun bug + - fixed a bug that caused characters to spawn with an incorrect number of items + --------------------------------------------------------------------------------------------------------- v0.1.2 --------------------------------------------------------------------------------------------------------- diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index fd62b540260747e2b7a0afff5df013408bf0e63a..081fd5b1c411bc1100c2264b927c91f9af91859b 100644 GIT binary patch delta 16201 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 diff --git a/Subsurface_content/Subsurface_content/Subsurface_content.csproj.PSM.cachefile b/Subsurface_content/Subsurface_content/Subsurface_content.csproj.PSM.cachefile index 1c77f5a53..2a3436749 100644 --- a/Subsurface_content/Subsurface_content/Subsurface_content.csproj.PSM.cachefile +++ b/Subsurface_content/Subsurface_content/Subsurface_content.csproj.PSM.cachefile @@ -1,4 +1,6 @@ Content\SpriteFont1.xnb Content\SmallFont.xnb +Content\LargeFont.xnb Content\SpriteFont1.spritefont Content\SmallFont.spritefont +Content\LargeFont.spritefont diff --git a/Subsurface_content/Subsurface_content/Subsurface_content.csproj.Windows.cachefile b/Subsurface_content/Subsurface_content/Subsurface_content.csproj.Windows.cachefile new file mode 100644 index 000000000..2a3436749 --- /dev/null +++ b/Subsurface_content/Subsurface_content/Subsurface_content.csproj.Windows.cachefile @@ -0,0 +1,6 @@ +Content\SpriteFont1.xnb +Content\SmallFont.xnb +Content\LargeFont.xnb +Content\SpriteFont1.spritefont +Content\SmallFont.spritefont +Content\LargeFont.spritefont diff --git a/Subsurface_content/Subsurface_content/bin/Windows/Content/SpriteFont1.xnb b/Subsurface_content/Subsurface_content/bin/Windows/Content/SpriteFont1.xnb index 51c4abd741c4fb2fbfa74a827fdbf96670c6a7bf..37d6342fc649ad21a244656aa7c57e5e8d3965bd 100644 GIT binary patch literal 79451 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 delta 37 vcmV+=0NVe67=Rd%hy+&5ZB((0umcbh)cfGdYT-k)xu8!;DMZP$Oa!zCJUkHM diff --git a/Subsurface_content/Subsurface_content/obj/PSM/cachefile-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt b/Subsurface_content/Subsurface_content/obj/PSM/cachefile-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt index 1c77f5a53..2a3436749 100644 --- a/Subsurface_content/Subsurface_content/obj/PSM/cachefile-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt +++ b/Subsurface_content/Subsurface_content/obj/PSM/cachefile-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt @@ -1,4 +1,6 @@ Content\SpriteFont1.xnb Content\SmallFont.xnb +Content\LargeFont.xnb Content\SpriteFont1.spritefont Content\SmallFont.spritefont +Content\LargeFont.spritefont diff --git a/Subsurface_content/Subsurface_content/obj/Windows/ContentPipeline-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}.xml b/Subsurface_content/Subsurface_content/obj/Windows/ContentPipeline-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}.xml index f51a9df04..d4c649161 100644 --- a/Subsurface_content/Subsurface_content/obj/Windows/ContentPipeline-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}.xml +++ b/Subsurface_content/Subsurface_content/obj/Windows/ContentPipeline-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}.xml @@ -7,8 +7,26 @@ FontDescriptionImporter FontDescriptionProcessor None - C:\Users\Joonas\Desktop\SBMR_3011\Sbmr_content\Sbmr_content\bin\Windows\Content\SpriteFont1.xnb - + E:\Subsurface\Subsurface_content\Subsurface_content\bin\Windows\Content\SpriteFont1.xnb + + + + SmallFont.spritefont + SmallFont + FontDescriptionImporter + FontDescriptionProcessor + None + E:\Subsurface\Subsurface_content\Subsurface_content\bin\Windows\Content\SmallFont.xnb + + + + LargeFont.spritefont + LargeFont + FontDescriptionImporter + FontDescriptionProcessor + None + E:\Subsurface\Subsurface_content\Subsurface_content\bin\Windows\Content\LargeFont.xnb + true @@ -17,15 +35,15 @@ HiDef Windows false - C:\Users\Joonas\Desktop\SBMR_3011\Sbmr_content\Sbmr_contentContent\ - C:\Users\Joonas\Desktop\SBMR_3011\Sbmr_content\Sbmr_content\ - C:\Users\Joonas\Desktop\SBMR_3011\Sbmr_content\Sbmr_content\obj\Windows\ - C:\Users\Joonas\Desktop\SBMR_3011\Sbmr_content\Sbmr_content\bin\Windows\Content\ + E:\Subsurface\Subsurface_content\Subsurface_contentContent\ + E:\Subsurface\Subsurface_content\Subsurface_content\ + E:\Subsurface\Subsurface_content\Subsurface_content\obj\Windows\ + E:\Subsurface\Subsurface_content\Subsurface_content\bin\Windows\Content\ C:\Program Files (x86)\MSBuild\MonoGame\v3.0\MonoGameContentProcessors.dll - 2014-04-06T00:56:18+03:00 + 2015-02-12T06:10:24+02:00 C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Content.Pipeline.XImporter.dll diff --git a/Subsurface_content/Subsurface_content/obj/Windows/DesignTimeResolveAssemblyReferencesInput.cache b/Subsurface_content/Subsurface_content/obj/Windows/DesignTimeResolveAssemblyReferencesInput.cache index 8237fb52325b7a8f568f56d48c6f95fdeddd13af..c28b17377cf0cceaefbbe0b9a1884e7fa3868e5a 100644 GIT binary patch delta 107 zcmeyV`%-s9Ew@glt5r;JX;N`%QCebhDiSk3IX|x?HLnCoX!AyHcMcr~QgrBuoMi$4 D1W_tN delta 123 zcmaE<`%`yAEw@RbvsFxJacWUT@%vG_BumcbPaPOIGa|%m{>zTbtxXh@tOa!zCLv|5V delta 37 vcmV+=0NVe67=Rd%hy+&5ZB((0umcbh)cfGdYT-k)xu8!;DMZP$Oa!zCJUkHM diff --git a/Subsurface_content/Subsurface_content/obj/Windows/cachefile-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt b/Subsurface_content/Subsurface_content/obj/Windows/cachefile-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt index b1ac40206..2a3436749 100644 --- a/Subsurface_content/Subsurface_content/obj/Windows/cachefile-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt +++ b/Subsurface_content/Subsurface_content/obj/Windows/cachefile-{8C1D2051-F0F3-457B-AAAE-4E155FC7C75C}-targetpath.txt @@ -1 +1,6 @@ Content\SpriteFont1.xnb +Content\SmallFont.xnb +Content\LargeFont.xnb +Content\SpriteFont1.spritefont +Content\SmallFont.spritefont +Content\LargeFont.spritefont diff --git a/Subsurface_content/Subsurface_contentContent/Subsurface_contentContent.contentproj b/Subsurface_content/Subsurface_contentContent/Subsurface_contentContent.contentproj index 91d4cea64..14690175f 100644 --- a/Subsurface_content/Subsurface_contentContent/Subsurface_contentContent.contentproj +++ b/Subsurface_content/Subsurface_contentContent/Subsurface_contentContent.contentproj @@ -65,6 +65,15 @@ FontDescriptionProcessor + + + Designer + Always + LargeFont + FontDescriptionImporter + FontDescriptionProcessor + +