Commit Graph

370 Commits

Author SHA1 Message Date
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
Regalis
17a7cb70ed Resetting character position to the server pos if the difference between the positions is large enough 2016-11-09 19:58:05 +02:00
Regalis
e1c2cd4d53 Networked characters can climb ladders without joining the Europan Space Program 2016-11-09 18:17:04 +02:00
Regalis
ac65a431a8 Merge branch 'master' into new-netcode
Conflicts:
	Subsurface/Properties/AssemblyInfo.cs
	Subsurface/Source/Items/Components/Signal/Wire.cs
	Subsurface/Source/Items/Item.cs
	Subsurface/Source/Items/ItemInventory.cs
	Subsurface/Source/Networking/GameServer.cs
2016-11-09 17:58:56 +02:00
Regalis
9eaca68cea Clients move their saved local positions if they don't match the servers position (instead of immediately snapping to the latest server position)
TODO: prevent ladders from sending the character flying, some safeguards in case positions are way off
2016-11-09 17:43:23 +02:00
Regalis
1617cd8f7a Item/statuseffect optimization:
- PowerTransfer components cache power connections instead of rechecking them every frame
- items store connections in a dictionary with the name of the connection as a key (-> finding the correct connection when sending a signal is more efficient)
- storing item tags & StatusEffect targetNames in HashSets
2016-11-08 21:14:29 +02:00
Regalis
1dc08b3019 Added collider to humanhusk.xml, disabled the "zoom effect" when under pressure as a huskified human 2016-11-08 20:15:59 +02:00
Regalis
f259f3fba4 Limiting character movement when collider isn't upright (can't run at full speed if lodged in some tight space), hack-ish way of moving the collider of a character that's being dragged 2016-11-07 18:52:36 +02:00
juanjp600
cd8c927800 Sync InputType.Select 2016-11-06 18:15:13 -03:00
Regalis
de3966ae95 - character colliders stay enabled when the character is unconscious/stunned (prevents getting stuck inside walls when the collider is re-enabled)
- can't climb over obstacles if the contact point is above the center of the character collider
- higher "obstacle climbing velocity"
- limiting collider velocity when dragging another character
2016-11-06 18:56:03 +02:00
juanjp600
160eff85d0 Input fast-forward/catchup when standing still for 15 frames
Also made position correction work based on linear velocity so running doesn't make you twitch nearly as much.
2016-11-06 13:43:53 -03:00
juanjp600
f0acf69065 Merge remote-tracking branch 'barotrauma/master' into new-netcode
# Conflicts:
#	Subsurface/Properties/AssemblyInfo.cs
#	Subsurface/Source/Characters/AI/EnemyAIController.cs
#	Subsurface/Source/Characters/AICharacter.cs
#	Subsurface/Source/Characters/Character.cs
#	Subsurface/Source/Items/Components/Signal/Connection.cs
#	Subsurface/Source/Items/Item.cs
#	Subsurface/Source/Map/Structure.cs
#	Subsurface/Source/Networking/GameClient.cs
#	Subsurface/Source/Networking/GameServer.cs
#	Subsurface/Source/Screens/NetLobbyScreen.cs
2016-11-05 18:18:20 -03:00
juanjp600
35dafc4792 Merge remote-tracking branch 'barotrauma/master' into new-netcode
# Conflicts:
#	Subsurface/Source/Characters/Character.cs
#	Subsurface/Source/Items/Components/Machines/Steering.cs
#	Subsurface/Source/Map/Structure.cs
#	Subsurface/Source/Networking/GameClient.cs
#	Subsurface/Source/Networking/GameServer.cs
2016-11-05 18:09:44 -03:00
Regalis
a32198ff80 v0.5.3.1 2016-11-04 16:27:53 +02:00
Regalis
95937694f4 Colliders can "climb" over small obstacles 2016-11-02 17:14:57 +02:00
Regalis
1b818b6422 Fixed timestep logic is disabled during loading (less choppy loading screens & no pause at the start of the game), damageable structures visible in LOS again, footstep sound tweaking 2016-11-01 19:05:09 +02:00
Regalis
9b29c52a1b Removed redundant data from AICharacter update messages, fixed startlocation name being shown for endlocation on nav terminals 2016-10-31 21:01:01 +02:00
Regalis
eb2c51c2f1 Cleanup with resharper (mostly removing redundancies & using collection.Length/Count properties instead of the Count method) 2016-10-31 20:50:20 +02:00
Regalis
48c07cfce5 - doors aren't ignored when checking visibility during waypoint generation or when finding a starting node for a path
- AICharacter will mark their path unreachable if their path is blocked by a door they cant open (may happen if someone closes the door after calculating the path)
- fixed exception when creating a Steering component when there's no active GameSession (i.e. in the editor)
2016-10-27 21:18:45 +03:00
Regalis
29ad3d2555 Removed limb impact tolerances from creature configs & added ragdoll-specific impact tolerance 2016-10-26 20:20:42 +03:00
Regalis
182cfb3451 Removed unnecessary memLocalPos stuff 2016-10-25 20:20:23 +03:00
Regalis
62dd055e8d Merge branch 'master' into animcontroller-overhaul
Conflicts:
	Subsurface/Content/Characters/Crawler/crawler.xml
	Subsurface/Source/Characters/AICharacter.cs
	Subsurface/Source/Characters/Animation/FishAnimController.cs
	Subsurface/Source/Characters/Animation/Ragdoll.cs
	Subsurface/Source/Characters/Character.cs
	Subsurface/Source/Map/Submarine.cs
	Subsurface/Source/Map/SubmarineBody.cs
	Subsurface/Source/Networking/GameClient.cs
	Subsurface/Source/Networking/GameServer.cs
	Subsurface/Source/Physics/PhysicsBody.cs
2016-10-25 20:09:25 +03:00
Regalis
07f8c966ab Submarine position is synced using the same logic as the characters, AICharacter position syncing 2016-10-25 19:01:19 +03:00
Regalis
ac8edb5b2a Fixed monster/artifact events being out of sync between the server and the clients 2016-10-25 18:58:56 +03:00
Regalis
641e579e92 Backported animcontroller-overhaul 2016-10-22 15:18:16 +03:00
Regalis
b410a04a86 Fixes 2016-10-21 19:55:48 +03:00
Regalis
92b61ee816 Merge branch 'master' into animcontroller-overhaul 2016-10-19 21:15:44 +03:00
Regalis
e2d0e7fe24 Moved collider position correction logic to the physicsbody class (so that it can be used for sub & item syncing), character position msg length is written in bytes instead of bits, misc cleanup/refactoring 2016-10-19 20:49:18 +03:00
Regalis
813ebc79f4 Updating HUDs of equipped items (= handheld sonars work again) 2016-10-19 16:37:44 +03:00
Regalis
b4389277aa Collider isn't moved to the position of the main limb when frozen, limb collisions are temporarily disabled if the ragdoll is too far from the collider, some cleanup 2016-10-19 16:21:54 +03:00
Regalis
51a2bf097d Using update IDs instead of timestamps to correct client-side movement predictions 2016-10-19 00:56:24 +03:00
Regalis
de203cc424 - a WIP attempt to correct the position of the controlled character based on updates from the server
- fixed server not being able to move character controllers
- renamed IsNetworkPlayer -> IsRemotePlayer
2016-10-19 00:15:29 +03:00
Regalis
6cf6b31594 Ragdoll syncing bugfix 2016-10-18 19:04:47 +03:00
Regalis
9fed308705 InGame update messages include a timestamp which is passed to the ClientRead methods
Now only used in character position syncing, but some other entities may also have an use for it (e.g. discarding outdated data)
2016-10-18 19:04:32 +03:00
Regalis
b68eeda8a8 WIP position syncing 2016-10-17 22:34:59 +03:00
Regalis
0cafc674dd - projectiles don't stick to colliders
- fixed impacts weaker than the damage threshold giving characters health
- possible to slide down ladders
- improved IndoorsSteeringManager ladder climbing logic
2016-10-17 17:41:41 +03:00
Regalis
efcc466fdd - added colliders to all monster configs
- disabling monster collider & placing it at mainlimb when stunned/dead/frozen
- monsters can't swim above water
- misc fixes
2016-10-17 16:32:57 +03:00
Regalis
704c7c7561 Collider-controlled monster movement 2016-10-16 22:24:33 +03:00
Regalis
f3e74a6a41 Collider-controlled swimming, fixes 2016-10-16 20:07:34 +03:00
Regalis
db8c2b9f8e Changed colliders from limbs to normal physics bodies, removed RefLimb 2016-10-15 20:08:51 +03:00
Regalis
1b59d1bc21 - disabling the collider and placing it on the torso when swimming, stunned or dead (todo: attempt to get swimming working with the collider controlling movement)
- only the collider can receive impact damage
- shorter collider to allow crouching in tight spaces
- AI characters are considered close enough to a waypoint if their collider overlaps with it (instead of a distance check)
2016-10-14 16:11:45 +03:00
Regalis
9d9c50a520 Progress 2016-10-14 01:10:46 +03:00
Regalis
62c88be214 Controlling humanoid movement with one capsule-shaped physics body that other limbs (attempt to) follow
Broken and WIP
2016-10-14 00:13:19 +03:00
juanjp600
7e6ef65eb3 Improved LOS effect
It's pretty inefficient (I need to figure out how to set up new shaders), and it might let the player see too much, but it looks way better than pure black.
2016-10-12 16:54:41 -03:00
Regalis
60b36e020c Changed ItemSpawner to EntitySpawner, used for syncing both item and character spawning 2016-10-12 19:25:01 +03:00
juanjp600
72033a581e Merge remote-tracking branch 'refs/remotes/barotrauma/master'
Conflicts:
	Subsurface/Properties/AssemblyInfo.cs
	Subsurface/Source/Characters/Character.cs
	Subsurface/Source/GUI/GUI.cs
	Subsurface/Source/GameMain.cs
	Subsurface/Source/GameSettings.cs
	Subsurface/Source/Items/CharacterInventory.cs
	Subsurface/Source/Items/Components/ItemComponent.cs
	Subsurface/Source/Items/Components/Machines/Pump.cs
	Subsurface/Source/Items/Components/Machines/Radar.cs
	Subsurface/Source/Items/Components/Machines/Steering.cs
	Subsurface/Source/Items/Components/Power/PowerContainer.cs
	Subsurface/Source/Items/Inventory.cs
	Subsurface/Source/Items/Item.cs
	Subsurface/Source/Items/ItemSpawner.cs
	Subsurface/Source/Map/Levels/WaterRenderer.cs
	Subsurface/Source/Map/LinkedSubmarine.cs
	Subsurface/Source/Map/Map/Map.cs
	Subsurface/Source/Map/Structure.cs
	Subsurface/Source/Map/Submarine.cs
	Subsurface/Source/Map/WayPoint.cs
	Subsurface/Source/Networking/GameClient.cs
	Subsurface/Source/Networking/GameServer.cs
	Subsurface/Source/Physics/PhysicsBody.cs
	Subsurface/Source/Screens/GameScreen.cs
2016-10-11 20:19:25 -03:00
juanjp600
4caf00dd9d Some extra checks to prevent character flinging
New netcode will solve all of these problems the right way.
2016-10-11 19:40:35 -03:00
Regalis
f9017d3cf9 User-controlled monsters can damage structures from outside the sub 2016-10-11 21:11:06 +03:00
Regalis
7e20d7a17a Timing.Alpha isn't updated if accumulator < step, using interpolated positions to draw lightsources & ragdoll/ai debug info (-> no twitching when the sub is moving) 2016-10-11 16:34:59 +03:00
Regalis
74a9453676 Upper limit to water drag force, fixed highlighted items "flickering" 2016-10-09 20:45:28 +03:00