Commit Graph
41 Commits
Author SHA1 Message Date
Vera Aguilera PuertoandGitHub e94c2f039c Some fixes for map init. (#2355) 2021-12-20 13:57:26 +01:00
Vera Aguilera Puerto db996b9fb3 A bunch more resolves removed wooo 2021-12-08 11:37:11 +01:00
Vera Aguilera Puerto 7a06db60cf Inline UID 2021-12-03 15:53:10 +01:00
Vera Aguilera Puerto 94e6886a85 Inline Transform 2021-12-03 14:20:35 +01:00
Vera Aguilera Puerto 419f4f36ab Inline Paused 2021-12-03 11:30:39 +01:00
Vera Aguilera PuertoandGitHub ab4f2c91b4 Move LifeStage and Paused data to MetaDataComponent. (#2068) 2021-10-04 12:29:13 +02:00
Pieter-Jan Briers b4098668bb Use ring buffer for IGameTiming._realFrameTimes.
List.RemoveAt(0) is inefficient.
2021-07-31 16:06:08 +02:00
e1a199e060 Removed old Loc.GetString() use instances (#1814)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2021-06-21 02:12:53 +02:00
Vera Aguilera PuertoandGitHub 4dd04207ac Shared GameTiming no longer depends on INetManager (#1697)
Adds ClientGameTiming with prediction and local/server time methods.
2021-04-14 11:40:02 -07:00
d8aad89c2f Split entity management from entity queries (#1665)
* Split entity lookups from entitymanager

* Helps if you subscribe dingus

* Handle map changes

* Stacks instead

* Make mapchanges use a queue because it's probably better

Moves likely only care about the latest position

* IoC what you did there

* IoC refactor

* Minor optimisations

* Apply feedback

* My IQ dropped 3 sizes that day

* Rest of acruid's feedback

* final_no_actual commit

* enlightenment?

* Liftoff

* final_commit_v2_actual

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2021-04-06 13:29:48 +10:00
AcruidandGitHub 24707b7385 Shared Containers (#1579)
* Added a basic server simulation framework for help with tests.

* Moved as much as possible to Robust.Shared/Containers.
Moved ContainerSlot from content to engine.

* Moved ClientContainer to shared.

* Merged client/server ContainerManagerComponents into a single shared version.

* ContainerManagerComponent is now implicitly registered with the attributes.

* Migrated to 2021 serialization technology.

* Existing Unit Tests work.

* More tests coverage.
Fixed bug with transferring items between containers.

* Container Type info is now sent over the network.

* Merge client/server container systems.

* Code cleanup.

* Attempted to fix dictionary serialization.
Logs warning when trying to check if an unknown GridId is paused.

* Remove OldCode.
2021-03-01 15:19:59 -08:00
AcruidandGitHub fdb5e014b5 PauseManager moved to Shared (#1553)
* Moved IPauseManager from server to shared.

* Moved ITimerManager from Timers to Timing.

* Added missing IConsoleHost to server/client RegisterIoC. Tests work again.
2021-02-18 20:12:26 -08:00
Pieter-Jan Briers 2d72a2bdb5 Server timing improvements.
Add helpers.
Fix desynchronized NetTime.
2021-02-13 11:42:12 +01:00
AcruidandGitHub 2183cd7ca1 Massive Namespace Cleanup (#1544)
* Removed the Interfaces folder.
* All objects inside the GameObjects subfolders are now in the GameObjects namespace.
* Added a Resharper DotSettings file to mark the GameObjects subfolders as not providing namespaces.
* Simplified Robust.client.Graphics namespace.
* Automated remove redundant using statements.
2021-02-10 23:27:19 -08:00
Pieter-Jan Briers 6973d43006 Network timing synchronization.
Lidgren NetTime.Now is now synchronized to IGameTiming.RealTime.

NetChannel is now a nested class of NetManager.

Add IGameTiming.ServerTime, INetChannel.RemoteTimeOffset, INetChannel.RemoteTime
2021-02-09 14:28:20 +01:00
AcruidandGitHub cd3a85ea04 Replicated CVars (#1489) 2021-01-13 10:02:08 +01:00
ad8b0b3c83 Add bytes or sbytes to enum where available (#1430)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-12-08 12:46:30 +01:00
b8e5b47e7a Use 'new' expression in places where the type is evident for the engine (#1415)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-11-26 00:16:55 +01:00
5f940fdec6 Removes some unused variables (#1420)
Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
2020-11-24 00:51:35 +01:00
Pieter-Jan Briers 6133ba77ca Change Prometheus tick time histogram to better fit. 2020-08-21 22:31:07 +02:00
9d1bec9bb2 Merge FloatMath and MathHelper (#1234)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-08-20 19:21:07 +02:00
Pieter-Jan Briers 6889e2cba3 Fixes FrameUpdate getting 0 dt when paused.
Fixes #1226
2020-08-15 16:35:32 +02:00
Acruid 900bf76a7d Attempt #2 to fix the timing bugs. CurTime increases again, and all the unit tests pass this time.
This resolves https://github.com/space-wizards/space-station-14/issues/1560.
Special thanks to PJB's prediction unit tests.
2020-07-31 23:20:35 -07:00
Acruid 2b692d596e Stops the GameTiming class from blindly caching the curTime constantly, regardless of it was in prediction/simulation or not. This seems to completely solve the issue of CurTime being negative. As long as Tickrate is only changed when processing the latest server state (not half way through prediction), everything should be OK. 2020-07-30 17:20:52 -07:00
Pieter-Jan Briers f6e900e6fd Don't run Prometheus metrics on the client. 2020-07-20 01:01:35 +02:00
Pieter-Jan BriersandGitHub ec0f4b35f7 Enable nullable reference types on Robust.Shared and fix all warnings. (#1109) 2020-06-08 01:13:01 +02:00
Pieter-Jan Briers dd0cb9f216 Prometheus metrics server.
Thanks to Redline for starting work on this and helping me out on Discord.
2020-06-08 00:12:23 +02:00
ComicIronicandGitHub 15432bf8a7 Fix client CurTime jumps (#1113)
This fixes the issue where CurTime on the client would sometimes jump by
massive values. It was caused by an underflow when the current tick
would be before the most recently cached tick, due to time going in
reverse.
2020-06-07 22:27:19 +02:00
ComicIronicandGitHub caa876dbb3 Fix TickRate causing CurTime jumps (#1106) 2020-06-06 23:50:02 +02:00
Pieter-Jan BriersandGitHub 0c8f869cb4 Prediction (#1027) 2020-04-18 17:35:54 +02:00
Pieter-Jan BriersandGitHub 0b1f088f8c Better entity exception tolerance (#996)
* Use separate define constants for exception tolerance stuff.

* Improve handling of exceptions during entity creation.

The entity in question now gets marked as deleted immediately.

* Glorious.

* Testing components, tests, wrapper exception type.
2020-02-24 03:56:50 +01:00
Tyler YoungandGitHub 214f9f0323 Implement client bubble PVS. (#983)
* bubble implementation

include contained entities

fix line edit crash when clipboard contents are null somehow

use CVar for update bubble range

remove seenMovers that get NaN'd out of MaxUpdateRange - huge reduction in network traffic from bullets

cut default of MaxUpdateRange down to 12.5 for now

maybe handle teleported things

handle removing player state on disconnect

fixed positional audio errors

make UpdateEntityTree also update player's last seen ents

make net.maxupdaterange cvar tunable at runtime w/o impacting performance

back to position nan as means to hide from client

revert work pooling as the wrong player was getting the wrong game state

ffs needed to think less about *if* something is *seen* and more about *when* it must be *unseen*

clean up usings

handle parenting and sequencing issues that arise on the client

gather needed ents to update recursively

applied suggestions from code review

fix missing recursively contained ents

make assumption that client last saw things on first tick instead of tick zero, as zero would be the "from tick" and first would be he "to tick"

add First tick as constant to GameTick due to relevance above

renamed includedEnts to checkedEnts to make usage more clear

added comments

inverted some conditions to flatten parts of the pvs logic

fixed sending states when already seen (lastChange < lastSeen to lastChange <= lastSeen)

fix sending states when no actual changes (other bugs?)

local caching of currentTick, remove priorTick

* make TransformComponent's Parent setter call Dirty() to handle replicating network state if AttachParent isn't invoked

* fixed parent changed by setting Parent on Transform not updating parent's Children collection and other stuff

rotating parent entities now are visible with their orbiting children if one of their children moves into view

* break out duplicated code as GetLastSeen

* remove unused net.parallelstates

introduce net.pvs to configure enabling/disabling PVS
2020-02-23 14:42:54 +01:00
Pieter-Jan Briers e790e97a50 Fix some compiler warnings. 2019-08-29 16:59:52 +02:00
Pieter-Jan Briers 3a9ccfe470 Fix more bad logging categories. 2019-08-25 12:55:16 +02:00
Pieter-Jan Briers 95f9126d12 Detect exception-loop softlocks and shut down server if it happens. 2019-08-13 23:51:54 +02:00
Pieter-Jan Briers 0a41ef3c9a Unified those messy FrameEventArgs. 2019-08-04 01:08:44 +02:00
Pieter-Jan Briers f548fd970e Do not catch Input exceptions in GameLoop on Debug. 2019-05-08 23:11:17 +02:00
Pieter-Jan Briers 1b4cbf58b8 Make all exceptions crash the game on debug. 2019-05-08 15:40:09 +02:00
Pieter-Jan BriersandGitHub e2c7a0086c Integration Testing Framework. (#804)
* Server works if not connected to a tty.

* Rich presence does not run IoC resolution at runtime anymore.

* Work towards integration tests.

Mostly work related to making it so the server and client can run in
parallel, and allowing more control over main loop for testing.

* Lots of code relating to integration tests.
2019-05-04 17:51:20 +02:00
AcruidandPieter-Jan Briers a5a3a539dc Tick Logic Timing and Bandwidth Improvements (#795)
Code was changed so that time starts at tick zero, and all entities are initialized in the space between tick 0 to 1. This was a solution to the fact fromSequence was including entities with lastStateUpdate tick one less than the actual sequence number. This is purely an issue about when exactly the game does its logic relative to the tick signals, ie positive or negative edge of the tick. Right now the game is set up to run the game logic on the positive edge of a Tick (enforced by GameLoop).

The second big part is that an empty collection takes 5ish bytes more than a null collection in the NetSerializer, even though they are conceptually the same thing in a game state. This PR puts null checks around everything and allows GameStates to have whole sections of itself null. This reduced the payload size of an empty game state from 49B to 15B.

This PR also fixes the bug where the physics system marks every movable entity as dirty every tick.
2019-04-20 18:08:43 +02:00
SilverandGitHub 25926a17b7 Renames SS14.* to Robust.* (#793)
RobustToolbox projects should be named Robust.* 

This PR changes the RobustToolbox projects from SS14.* to Robust.*

Updates SS14.* prefixes/namespaces to Robust.*
Updates SpaceStation14.sln to RobustToolbox.sln
Updates MSBUILD/SS14.* to MSBUILD/Robust.*
Updates CSProject and MSBuild references for the above
Updates git_helper.py
Removes Runserver and Runclient as they are unusable
2019-04-15 20:24:59 -06:00