Commit Graph

267 Commits

Author SHA1 Message Date
Regalis
15b3dd31a8 Merge branch 'master' into new-netcode 2017-01-25 20:30:26 +02:00
Regalis
e27fa1c7ee Readded team assignment logic 2017-01-15 20:39:06 +02:00
Regalis
bd7766d3e7 Server clears EntityEventManager before starting a new round, not just when ending it (fixes events breaking during the next round if an item created an event when unloading the previous sub) + some additional error checks 2017-01-14 20:26:41 +02:00
Regalis
fdbdf9638f Fixed railgun aiming, fixed EntityEvent not being sent if a character is killed by something else than health dropping to zero 2017-01-14 14:45:19 +02:00
Regalis
fecb7bee9a Syncing attack input 2017-01-13 17:53:40 +02:00
Regalis
037bd09c2c - clients ignore lobby updates if they already received a more up-to-date one
- server tells clients their ID in the first lobby update
- clients take control of a spawned character if their ID matches the ownerID of the character (-> respawning works now)
2017-01-11 21:31:19 +02:00
Regalis
dc3885a2da Server doesn't un-freezes characters that are stunned, unconscious or dead, or controlled by the host 2017-01-11 21:24:03 +02:00
Regalis
df59f0d089 Fixed speech bubbles, server sends the ID of a speaking character instead of the name 2017-01-10 18:40:12 +02:00
Regalis
81c3641d97 Optimized mouse position syncing from server to clients, removed a redundant WritePadBits from Character.ServerWrite 2017-01-10 00:10:11 +02:00
Regalis
72eb2aa769 Tiny optimization 2017-01-09 21:39:39 +02:00
juanjp600
b35b683cd8 Removed Select debug code 2017-01-09 15:09:26 -03:00
juanjp600
34c2ccf932 Merge branch 'new-netcode' of https://gitlab.com/poe.regalis/barotrauma into new-netcode 2017-01-09 15:06:32 -03:00
juanjp600
cfeb720836 Fixed IsKeyHit (ladder climbing being inconsistent) + optimized interaction syncing
Instead of sending over mouse position as two floats (8 bytes total), the game will send the aim angle represented as a short (0 to 65535, so it's fairly precise) and the selected item ID (up to 4 bytes total, 2 bytes if it's only one of the inputs).

The problem with IsKeyHit is that it checked when the player started a key press, when it should've been checking for the key being released.
2017-01-09 15:06:19 -03:00
Regalis
ff96f152ce Resetting EntityEvent & EntitySpawner IDs when starting a new round, LOS effect is enabled when a client takes control of a character 2017-01-09 18:22:37 +02:00
juanjp600
a75ef8ee51 Optimized MaxVal
0x200 represents a bit that isn't used for any flags, 0x1FF represents all usable bits
2017-01-08 12:45:44 -03:00
juanjp600
073def094f Merge branch 'new-netcode' of https://gitlab.com/poe.regalis/barotrauma into new-netcode
# Conflicts:
#	Subsurface/Source/Characters/Character.cs
2017-01-08 12:30:56 -03:00
juanjp600
4b868fc09d Constant error correction + fixed standing catchup
With constant correction, there's little chance for a large difference to build up, so it becomes practically unnoticeable.
Also added a flag which stops the character from updating client-side until the server sends the spawning position.
2017-01-08 12:20:36 -03:00
Regalis
6747faae3d Clients can't make their character immortal by not sending inputs, clients don't implode their characters unless the server says so 2017-01-07 19:25:22 +02:00
Regalis
44cbd0d9bf Fixed AI characters constantly flipping over the X-axis when inside, fixed clients not receiving a msg about characters spawned by RespawnManager 2017-01-07 16:51:51 +02:00
Regalis
6364915353 Fixed incorrect msg lengths in CHARACTER_POSITION messages (+ calculating the length automatically) 2017-01-07 16:11:50 +02:00
Regalis
629df6aab3 HuskInfection unsubscribes from the OnDeath event when the infection is cured (-> cured characters don't turn into husks when they die) 2017-01-07 14:48:09 +02:00
juanjp600
7dc474dab4 Actually round movement.X down to zero
whoops
2017-01-06 16:05:23 -03:00
juanjp600
f453980ace Replaced isStillCountdown with a speed check for server catch-up 2017-01-06 14:09:06 -03:00
Regalis
65d64af041 Server reads CHARACTER_INPUT messages even if the client isn't allowed to move (but ignores the inputs), otherwise it would fail to read the rest of the packet 2017-01-06 18:19:51 +02:00
Regalis
2a7ef5dd84 Merge branch 'new-netcode' of https://gitlab.com/poe.regalis/barotrauma into new-netcode 2017-01-06 17:43:40 +02:00
Regalis
80e743916a Character death syncing, characters don't reselect items when they receive a network msg about an item they have already selected 2017-01-06 17:43:30 +02:00
juanjp600
5b4d6120ff Merge branch 'new-netcode' of https://gitlab.com/poe.regalis/barotrauma into new-netcode 2017-01-05 22:37:45 -03:00
juanjp600
0569a665f4 Fixed a server-side off-by-one error in the player input IDs
I'm guessing this one comes from the player's position not being updated immediately after the input is processed, so that's where most of the remaining error came from.
Also added some rounding to the horizontal velocity when approaching 0, and changed something that depended on the head limb to use the collider instead, which should hopefully further reduce the chance of syncing errors.
2017-01-05 22:37:14 -03:00
Regalis
beac45458e Transforming received in-sub mouse coordinates to outside coordinates if the character is outside and vice versa, HiddenSubPosition fix (can't use Level.Loaded to find the top of the level because the level isn't loaded yet) 2017-01-05 19:08:54 +02:00
Regalis
ba4ee843f3 Syncing character/construction selection 2017-01-04 21:37:19 +02:00
Regalis
179079b91c Clients can't set the health or stun timer of a character unless they receive a msg from the server 2017-01-03 23:52:15 +02:00
Regalis
bb685019a2 Fixes to unconscious character pos syncing:
- main limb is anchored to collider
- server ignores inputs from unconscious characters and doesn't freeze them
- using timestamp-based interpolation on the client's own character instead of IDs
2017-01-03 23:49:37 +02:00
Regalis
c318e629ff Health, bleeding, oxygen & stun syncing, sending aim and use inputs and cursor positions to clients so other players will be able to see when someone is shooting, hitting with a wrench etc 2017-01-02 22:12:50 +02:00
Regalis
1f07b18e5b Merge branch 'master' into new-netcode
Conflicts:
	Subsurface/Properties/AssemblyInfo.cs
	Subsurface/Source/Items/Components/DockingPort.cs
	Subsurface/Source/Items/Components/Signal/Wire.cs
	Subsurface/Source/Items/Item.cs
2016-12-29 22:18:27 +02:00
Regalis
020aac55ea AICharacter position syncing 2016-12-29 22:01:50 +02:00
Regalis
98183c47fb Syncing aim & use inputs (i.e. left and right click) 2016-12-28 22:33:43 +02:00
Regalis
12b7290bad Fixed Ragdoll.HeadInWater not being set to true if the character is inside a water-filled hull but the head is outside the sub, HUDProgressBars aren't created when a non-controlled character repairs something 2016-12-28 20:00:40 +02:00
juanjp600
a733e917dd Readded input enum flags 2016-12-24 18:14:54 -03:00
Regalis
b01b38da68 Bunch of new sounds by Omniary, some charactersound & soundplayer refactoring 2016-12-15 21:42:15 +02:00
Regalis
1f454d593e Inventory syncing, objHeader is passed to the ClientRead/ServerRead methods so they can determine how to read the msg (is it an inventory update, position, input, etc) 2016-12-10 16:39:58 +02:00
Regalis
bea523187b The host can send chat messages, fixed client not being passed to ServerRead methods 2016-12-09 16:45:08 +02:00
Regalis
deb76d0767 Removed a duplicate line 2016-11-24 20:24:01 +02:00
Regalis
adde3461ea Merge branch 'master' into new-netcode
Conflicts:
	Subsurface/Properties/AssemblyInfo.cs
	Subsurface/Source/Characters/Animation/HumanoidAnimController.cs
	Subsurface/Source/Characters/Character.cs
	Subsurface/Source/Items/Components/Door.cs
	Subsurface/Source/Items/Components/Power/PowerContainer.cs
	Subsurface/Source/Items/Components/Signal/Wire.cs
	Subsurface/Source/Items/Item.cs
	Subsurface/Source/Networking/ChatMessage.cs
	Subsurface/Source/Networking/GameClient.cs
	Subsurface/Source/Networking/GameServer.cs
	Subsurface/Source/Networking/GameServerLogin.cs
	Subsurface/Source/Networking/GameServerSettings.cs
	Subsurface/Source/Networking/NetworkMember.cs
2016-11-24 19:52:40 +02:00
Regalis
12f98268b5 Increased character visibility range (how far monsters can see characters from), enemies manually steer towards their target if their steering path is finished or unreachable, mantis tweaking 2016-11-24 19:17:49 +02:00
juanjp600
d2c17274fe GUI elements now respect render order + some minor distance comparison optimization 2016-11-15 22:26:36 -03:00
Regalis
335bf00890 Entity removal fixes 2016-11-14 17:52:26 +02:00
Regalis
0c9a55e9e0 - server doesn't create a new EntityEvent if there's a duplicate event waiting to be sent
- hull, radar, steering & pump syncing
2016-11-14 16:58:21 +02:00
Regalis
44d87613b9 - setting SelectedConstruction back to null if a client is too far from it (-> selecting items doesn't become impossible after selecting a cabinet/reactor/whatever and moving away from it)
- closestItem or closestCharacter aren't checked unless the client pressed Select
2016-11-13 21:13:18 +02:00
Regalis
498c72c64a Server sends ServerEntityEvents to clients, NetEntityEvents can contain an object array which will be passed to the serializable entity (now only used for ItemComponent indices) 2016-11-13 13:56:48 +02:00
Regalis
c314b37029 Some classes for syncing entity state changes. Similar to the NetworkEvents in the old netcode, but the logic is split into separate classes which prevent the server from reading updates for entities that aren't IClientSerializable.
todo: add NetEntityEventManagers to server & client, some logic to prevent sending events that don't need to be sent (e.g. duplicate event state updates)
2016-11-12 20:56:06 +02:00