Commit Graph

6391 Commits

Author SHA1 Message Date
mischa
bb16a272f3 perf(PredictedRigidbody): revert syncing 'sleeping' because it cut benchmark performance in half (!) 2024-09-21 16:31:34 -04:00
MrGadget
0a0daa303e fix(RemoteStatistics): Changed default hotKey to backQuote
- Same as GUIConsole, and for the same reason (F11 is fullscreen in browser)
2024-09-21 16:31:34 -04:00
MrGadget
436ada9a0b feat(SyncSet): Add individual Actions for operations
Deprecates Callback Action.
2024-09-21 16:31:34 -04:00
MrGadget
d132a53cd1 style(SyncSetTest): code formatting 2024-09-21 16:31:34 -04:00
MrGadget
bbf85c689d fix(SyncSet): Clear after Callback
Allows users to iterate the set before it's wiped
2024-09-21 16:31:34 -04:00
MrGadget
a74a3d8db2 fix(SyncSet): Change Callback to Action 2024-09-21 16:31:34 -04:00
MrGadget
4c5a5dfec3 style(SyncSetTest): code formatting 2024-09-21 16:31:34 -04:00
MrGadget
f86acf6bed chore(SyncSet): code formatting 2024-09-21 16:31:34 -04:00
mischa
c9896c6f3e readme 2024-09-21 16:31:34 -04:00
mischa
c330942c9f Prediction Example: stacked predicted boxes 2024-09-21 16:31:34 -04:00
mischa
867bf7c492 PredictedRigidbody: sync & show remote.sleeping to easier debug objects coming to rest 2024-09-21 16:31:34 -04:00
MrGadget
824712df9c feat(SyncList): Add individual Actions for operations (#3794) 2024-09-21 16:31:34 -04:00
MrGadget
1919e61856 style(SyncListTest): Formatting 2024-09-21 16:31:34 -04:00
MrGadget
0e6661f36a chore(:SyncListTest): Improved tests 2024-09-21 16:31:34 -04:00
MrGadget
aecc8f2587 fix(SyncList): Clear after Callback
Allows users to iterate the list before it's wiped
2024-09-21 16:31:34 -04:00
MrGadget
c7305db462 fix(SyncList): Change Callback to Action 2024-09-21 16:31:34 -04:00
mischa
dc2f35a347 fix: PredictedRigidbody now always teleports to corrections to avoid objects not being able to move to a corrected position if there's another object inbetween 2024-09-21 16:31:34 -04:00
MrGadget
fb1fc3a0ae style(SyncList): formatting 2024-09-21 16:31:34 -04:00
mischa
bdac4445ca PredictedRigidbody: virtual Awake 2024-09-21 16:31:34 -04:00
F_CIL
06f0a4b291 Update comments for SyncVar (#3792)
The current comments for SyncVar is somewhat misleading. That is to say, it is mentioned in the comments that SyncVar can only be modified on the server side, and will be automatically synchronized to the client. But in fact, if syncDirection is set to ClientToServer, SyncVar should be modified on the client and automatically synchronized to the server and other clients. The same error exists in the comments of hook attribute
2024-09-21 16:31:34 -04:00
MrGadget
5c52e78b10 feat(SyncDictionary): Add individual Actions for operations (#3791) 2024-09-21 16:31:34 -04:00
MrGadget
5c96c81e35 SyncDictionary: Add oldValue to AddOperation (#3790)
This is preparation for Actions coming in subsequent PR.
2024-09-21 16:31:34 -04:00
MrGadget
877067af76 fix(SyncDictionary): Clear after Callback (#3789) 2024-09-21 16:31:33 -04:00
MrGadget
05d68f91af chore(SyncDictionaryTest): Improved tests 2024-09-21 16:31:33 -04:00
MrGadget
0b8b11e78f style(SyncDictionary): code formatting 2024-09-21 16:31:33 -04:00
mischa
ea01b7c060 Billiards readme: link prediction article 2024-09-21 16:31:33 -04:00
mischa
a0bb738705 Billiards (not predicted): add latency simulation and improve explanation 2024-09-21 16:31:33 -04:00
mischa
cded6bc736 Predicted Billiards: fix pocket resets for latest prediction and update Readme to be ready for users! 2024-09-21 16:31:33 -04:00
mischa
e564ff92d0 Predicted Billiards: fix Rigidbody access for latest prediction 2024-09-21 16:31:33 -04:00
mischa
8334f3549c Predicted Billiards: fix dragging with predicted Rigidbody 2024-09-21 16:31:33 -04:00
mischa
a3e8ef0b8f Predicted Billiards: fix ghost materials 2024-09-21 16:31:33 -04:00
mischa
a3e6dd3cb5 perf: Prediction.CorrectHistory removed O(N) insertion. adjusting successive values is enough. 2024-09-21 16:31:33 -04:00
mischa
1d004dcd21 fix: Prediction.CorrectHistory now adjusts afterIndex after removals/insertions 2024-09-21 16:31:33 -04:00
mischa
39338b413d Prediction: explain insertions complexity 2024-09-21 16:31:33 -04:00
MrGadget
1eecc055c5 fix(SimpleWeb.jslib): Locally Scope Runtime 2024-09-21 16:31:33 -04:00
MrGadget
e257232517 style(SimpleWeb.jslib): Code formatting 2024-09-21 16:31:33 -04:00
MrGadget
c373f9f0e7 fix(SimpleWeb): scope websocket locally instead of globally 2024-09-21 16:31:33 -04:00
Robin Rolf
714f231d43 fix(LobbyServiceCreateDialogue): Added warning about Edgegap Lobby Name bug (#3783) 2024-09-21 16:31:33 -04:00
Robin Rolf
16f892e94d fix: Edgegap Lobby Create UI Tweaks (#3782)
* chore: Edgegap Lobby Create UI Tweaks

* 3 loading dots

* help urls
2024-09-21 16:31:33 -04:00
MrGadget
501129fb68 EncryptionTransportInspector: Fixed button label 2024-09-21 16:31:33 -04:00
MrGadget
8eda3231be fix(EdgegapLobbyKcpTransport): Fixed HelpURL 2024-09-21 16:31:33 -04:00
Robin Rolf
074e0d6dc6 chore: old unity compat for PredictedRigidbody (#3781) 2024-09-21 16:31:33 -04:00
Robin Rolf
9ce8f9b5f8 feat: Edgegap Lobby Transport & Demo (#3780)
* feat: Edgegap Lobby Transport & Example

* Code Cleanup

* Rename data -> models

* Remove debug logs

* Log errors as OnClient/ServerError dont always log

* Only show joinable lobbies

* naming

* Transport help url

* old unity compat

* Unity 2020 compat as well

* Readme

* lobby name is required + correct placeholder

* Update lobby ui prefab too

* Lobby creation ui tweaks

* lobby url tooltip tweak

* Remove test lobby url
2024-09-21 16:31:33 -04:00
mischa
9d7de40aa7 Prediction: RingBuffer perf comments 2024-09-21 16:31:33 -04:00
mischa
7cf0b884a6 perf: PredictedRigidbody MoveTowardsCustom: only calculate distance factor once 2024-09-21 16:31:33 -04:00
mischa
8705a9b0c2 perf: PredictedRigidbody MoveTowardsCustom 2024-09-21 16:31:33 -04:00
mischa
eb93ce4e3d perf: PredictedRigidbody smoothFollowThreshold squared caching 2024-09-21 16:31:33 -04:00
mischa
237ffac7a9 PredictedRigidbody: update hard follow commented code 2024-09-21 16:31:33 -04:00
mischa
501867cda0 perf: PredictedRigidbody caches physics transform to use GetPositionAndRotation 2024-09-21 16:30:36 -04:00
mischa
fbb3d563ba perf: PredictedRigidbody UpdateGhosting: only every few frames 2024-09-21 16:30:36 -04:00
mischa
fb5adf3fb7 prediction benchmark updated 2024-09-21 16:30:36 -04:00
mischa
0657da87ea perf: PredictedRigidbody RecordState only grabs count once 2024-09-21 16:30:36 -04:00
mischa
2ecafaa634 perf: PredictedRigidbody state properties inlined 2024-09-21 16:30:36 -04:00
mischa
4f642d73a3 perf: PredictedRigidbody RecordState only calls NetworkTime.time getter once 2024-09-21 16:30:36 -04:00
mischa
39fbaabd3b perf: PredictedRigidbody FixedUpdate caches sqr computations 2024-09-21 16:30:36 -04:00
mischa
c8f022584a inlining 2024-09-21 16:30:36 -04:00
mischa
ae0a6a9c3e perf: PredictedRigidbody caches IsMoving sqr computations 2024-09-21 16:30:36 -04:00
mischa
0789d41798 perf: PredictedRigidbody syncs a blittable struct once instead of doing 5 separate reads/writes 2024-09-21 16:30:36 -04:00
mischa
9497121c45 PredictedSyncData struct first step: same reads & writes 2024-09-21 16:30:36 -04:00
mischa
ed12063f49 perf: PredictedRigidbody doesn't log "Separating Physics" anymore 2024-09-21 16:30:36 -04:00
mischa
75fb9ff57c perf: Prediction.Sample() removed SortedList foreach iteration allocations(!) 2024-09-21 16:30:36 -04:00
mischa
1083dc5504 perf: PredictedRigidbody doesn't log hard correction when ahead anymore 2024-09-21 16:30:36 -04:00
mischa
07eba2dfc6 PredictedRigidbody: syntax 2024-09-21 16:30:36 -04:00
mischa
597fd933c4 PredictedRigidbody: OnDeserialize parsing grouped together (syntax change) 2024-09-21 16:30:36 -04:00
mischa
8b86e709be Prediction: syntax 2024-09-21 16:30:36 -04:00
mischa
7cc63de0ec readme changed from .txt to .md for formatting 2024-09-21 16:30:36 -04:00
mischa
4b1d179a76 Examples: Prediction Benchmark with readme & current results 2024-09-21 16:30:36 -04:00
mischa
7702db6e03 PredictedRigidbody: make .predictedRigidbody accessible to other components! 2024-09-21 16:30:36 -04:00
MrGadget
00069b9c7c fix(ILPostProcessorAssemblyResolver): Ignore Bee.BeeDriver
- There is now BeeDriver2, so using StartsWith
2024-09-21 16:30:36 -04:00
Robin Rolf
5bb5c72af9 fix: EdgegapKcp StopHost() null reference exception (#3779)
see https://github.com/MirrorNetworking/Mirror/issues/3708
2024-09-21 16:30:36 -04:00
mischa
dcfab19ab8 fix: #2503 Weaver Custom Read Write functions for Serialization not working over multiple assembly definitions 2024-09-21 16:30:36 -04:00
MrGadget
58863e16a7 SimpleWebTransport: moved overrides down 2024-09-21 16:30:36 -04:00
Robin Rolf
88f4400570 feat: SWT overrides Transport.IsEncrypted & EncryptionCipher (#3777)
TLS isn't technically correct, but there's no good way to get that info
2024-09-21 16:30:36 -04:00
Robin Rolf
ab57b62cbe feat: EncryptionTransport overrides IsEncrypted & Cipher (#3776) 2024-09-21 16:30:36 -04:00
mischa
35a3d86e87 feat(Transport): IsEncrypted, EncryptionCipher virtuals 2024-09-21 16:30:36 -04:00
mischa
42c9e6fc62 fix: NetworkServer.OnCommandMessage NullReferenceException due to log message accessing a guaranteed-to-be-null value 2024-09-21 16:30:36 -04:00
mischa
b90f6f30ab fix: NetworkServer.Destroy now warns instead of throwing for null objects again 2024-09-21 16:30:35 -04:00
Robin Rolf
c15d465874 chore: EncryptionTransport help url (#3774) 2024-09-21 16:30:35 -04:00
MrGadget
c9206716c0 Removed empty folder meta 2024-09-21 16:30:35 -04:00
MrGadget
4c36f35fdd breaking: Asset Store Release
BREAKING CHANGE: Asset Store Release
2024-09-21 16:30:35 -04:00
Robin Rolf
8f0a952d16 fix: EncryptionTransport uses KDF to ensure fixed size key (#3773)
* reset _time

* fix: EncryptionTransport use KDF to ensure fixed size key

* Expose pub key through transport

* Old Unity compat
2024-09-21 16:30:35 -04:00
Robin Rolf
d929a9a9ea feat: EncryptionTransport (#3768)
* initial working transport

* code cleanup & transport wrap tests

* better connection tests

* Handle bouncycastle exceptions

* clean up usings

* Mirror icon :)

* list to allow for removing entries during loop

* Profiler sampling

* Unity 2019 compat

* code style

* pubkey validation

* use builtin aes engine selector

this is overly optimistic, as the hardware accelerated engine is only available on .net core 3 or higher

* Older unity version fix
2024-09-21 16:30:35 -04:00
mischa
f54b281af7 MIRROR_88_OR_NEWER 2024-09-21 16:30:35 -04:00
mischa
7715ac700b fix: NetworkServer.Spawn now activates inactive GameObjects (for example, in case they were previously Unspawned) 2024-09-21 16:29:37 -04:00
mischa
1e40999503 fix: NetworkServer.Destroy never destroys scene objects anymore since unlike prefabs, once they are gone we can never instantiate them again (#3771) 2024-09-21 16:29:37 -04:00
mischa
0164e0a4ad refactor: NetworkServer DestroyObject(DestroyMode) logic moved to Unspawn() + Destroy to remove the DestroyMode parameter 2024-09-21 16:29:37 -04:00
mischa
50c1cb71bb LagCompensator: preview notice 2024-09-21 16:29:37 -04:00
mischa
daf3e606da LagCompensator: rename collider field to be more obvious in Inspector 2024-09-21 16:29:37 -04:00
mischa
351b4b113a feat: LagCompensator as convenience component that wraps all the Lag Compensation logic 2024-09-21 16:29:37 -04:00
mischa
99bd93b95e fix(Prediction): disable setting scale for joints since it causes issues with parenting 2024-09-21 16:29:37 -04:00
MrGadget
3d7ef0cc60 fix: Safer version for FindAnyObjectByType (#3765)
Unity docs are a mess on when FindAnyObjectByType was implemented:
- 2021.3 says it is
- 2022.1 says it's not
- 2022.2 says it is
2024-09-21 16:29:37 -04:00
mischa
8094f88469 fix(Prediction): ConfigurableJoints' range of motion is now moved correctly 2024-09-21 16:29:37 -04:00
mischa
fb13fa37e2 fix(PredictedRigidbody): reduce-send-rate considers angular velocity now too! 2024-09-21 16:29:37 -04:00
mischa
449c33a694 Prediction: sync delta rotations too [FakeByte] 2024-09-21 16:29:37 -04:00
mischa
e7c8898679 Prediction: only set velocity if not kinematic 2024-09-21 16:29:36 -04:00
mischa
54c8caac54 Prediction: better motion smoothing time 2024-09-21 16:29:36 -04:00
mischa
05787f3853 Prediction: sync angularVelocity too 2024-09-21 16:29:36 -04:00
mischa
6cb4017deb perf(Prediction): ghosts-on-demand(!) 2024-09-21 16:29:36 -04:00
MrGadget
ee97a8bd65 CanvasNetworkManagerHUD: fixed indent 2024-09-21 16:29:36 -04:00
mischa
205cbc2d63 PredictedRigidbody: add OnBeforeApplyState callback 2024-09-21 16:29:36 -04:00
MrGadget
136c1d2b30 feat(NetworkRigidbody): Default Sync Direction = Client To Server (#3764)
- This is done in Reset so Network Behaviour isn't effected.
- This will not change components already in place on objects / prefabs unless user manually chooses Reset in the inspector.
2024-09-21 16:29:36 -04:00
MrGadget
0821e56105 fix(SWT): Improved logging in ClientHandshake
- Added hint to check Server Roles for handshake key mismatches
2024-09-21 16:29:36 -04:00
MrGadget
e60d3bf382 feat(NetworkAnimator): Default Sync Direction = Client To Server
- This is done in Reset so Network Behaviour isn't effected.
- This will not change NA components already in place on objects / prefabs unless user manually chooses Reset in the inspector.
2024-09-21 16:29:36 -04:00
Robin Rolf
bd7b6fe038 breaking: perf: change NB.syncVarDirtyBits to field (#3762)
@miwarnec saw the property showing up while profiling. Very much unnecessary, so lets change that to a field.
BREAKING: Changed NetworkBehaviour.syncVarDirtyBits from a "get-only" property to a field
2024-09-21 16:29:36 -04:00
mischa
7b50cd5197 perf(PredictedRigidbody): OnSerialize faster 2024-09-21 16:29:36 -04:00
mischa
d4e03d9463 fix(PredictedRigidbody): fix host mode [FakeByte] 2024-09-21 16:29:36 -04:00
mischa
d69d126672 fix(PredictedRigidbody): only show 'hard correcting because too old' warning if older than entire state history limit. not when starting to record only 2-3 entries yet. 2024-09-21 16:29:36 -04:00
mischa
1d5a5008bc Prediction: expose physics copy components to inheriting classes 2024-09-21 16:29:36 -04:00
mischa
81d14068a4 perf(PredictedRigidbody): reduce sends to 1 Hz while idle(!) 2024-09-21 16:29:36 -04:00
mischa
565858f1ad perf(PredictedRigidbody): only record state if changed(!) 2024-09-21 16:29:36 -04:00
MrGadget
e5dbf0dcda fix(NetworkManager): FinishStartHost-Don't force localhost (#3759) 2024-09-21 16:29:36 -04:00
JesusLuvsYooh
c17ebbc0f4 feat: NT-UR bit flag changed detection to lower bandwidth usage. (#3721)
* feat: NT-UR bit flag changed detection to lower bandwidth usage.

Also major credits to our Ninja.

* Tooltip updated

* fix: NT-Unreliable Quaternion Compression Fix

Credits to ninja of course :D

* NT-U new improvements

Credits to Ninja

* Nothing to see here..

* Added comment to Quat Rotation Fix

* Sensitivity check to improve value comparisons.

Without this, X 0 and X -4.955753E-07 (0) would trigger as a change of value.
Helps epsilon/floating point inaccuracies.

* Moved around checks.

rotationChanged not needed now for non-compressed bool, as we check individual rotation sensitivity changes.
We can move this inside quat compress check.

* Use Rot/All, not just RotX as a compress changed flag.

* Set Just Rot.

* Updated Reset to ResetState

* Fixing PR 3571/3572/3572 in this new bitflag branch

---------

Co-authored-by: ninjakickja <80569286+ninjakickja@users.noreply.github.com>
2024-09-21 16:29:36 -04:00
MrGadget
c54bd2c4f1 SyncDictionary: Fixed typo in comment 2024-09-21 16:29:36 -04:00
James Frowen
7671bde0bf fix(NetworkClient): Call NetworkTime.SendPing from OnTransportConnected (#3686)
* fix: fixing time not being sent on connect

client does not send ping if connecting to server within 2 seconds of starting, the new PingNow function will tell client to send the message right away instead of after lastPingTime+PingInterval

* Update Assets/Mirror/Core/NetworkTime.cs

* Update Assets/Mirror/Core/NetworkTime.cs

* Update Assets/Mirror/Core/NetworkClient.cs

* Update Assets/Mirror/Core/NetworkTime.cs

---------

Co-authored-by: MrGadget <9826063+MrGadget1024@users.noreply.github.com>
2024-09-21 16:29:36 -04:00
MrGadget
c411a3fa4c NetworkTime: SendPing method added. 2024-09-21 16:29:36 -04:00
mischa
1f012583f6 Prediction: warn about not readable meshes 2024-09-21 16:29:36 -04:00
MrGadget
21df956789 NetworkManager: fixed comment 2024-09-21 16:29:36 -04:00
MrGadget
cd358630ff fix(MultiplexTransport): Use TryGetValue for Lookups (#3758) 2024-09-21 16:29:36 -04:00
mischa
77469f5201 fix typos 2024-09-21 16:29:36 -04:00
MrGadget
9d5b66a64f KcpTransport: fixed ToString to match other transports 2024-09-21 16:29:36 -04:00
MrGadget
af4d8e789e fix(MultiplexTransport): Fixed log output 2024-09-21 16:29:36 -04:00
mischa
2becc2c01c ThreadLog: more obvious prefix! 2024-09-21 16:29:36 -04:00
Robin Rolf
e4e23afd9c perf(Extensions): Add shim for transform.GetPositionAndRotation (#3755)
Doesn't exist in unity versions 2021.2 or earlier
2024-09-21 16:29:36 -04:00
mischa
b403405c85 perf(PredictedRigidbody): next round of optimizations 2024-09-21 16:29:36 -04:00
MrGadget
e220e9e8f8 fix(MultiplexTransport): Better Startup Logging 2024-09-21 16:29:36 -04:00
MrGadget
1b17f582c5 Added missing meta 2024-01-29 02:22:46 -05:00
MrGadget
f4a416ab80 Merged master 2024-01-29 02:15:31 -05:00
mischa
2b92ac7674 perf(Prediction): optimize ghosts. deep profiling: 93 objects before=0.08ms after =0.03ms! 2024-01-28 12:41:13 +01:00
mischa
1899539e03 perf(Prediction): optimize LateUpdate because this shows in profiler! deep profiling: 93 objects, before=0.54ms, after=0.22ms => 2.5x faster! 2024-01-28 12:29:18 +01:00
mischa
f926514a6e perf(Prediction): cache .transform getter because this is performance critical 2024-01-28 12:29:18 +01:00
mischa
5e56b96f43 syntax 2024-01-28 12:29:18 +01:00
mischa
44338c5551 Prediction: rename DestroyCopies to DestroyGhosts for consistency 2024-01-28 12:29:18 +01:00
Justin Nolan
24c0c9ed3f
Add network mesages to lookup dict in network client replace handler (#3754) 2024-01-28 11:09:47 +01:00
Justin Nolan
1c365fc3d5
Add network messages to lookup dict in network server replace handler (#3753) 2024-01-28 11:09:35 +01:00
mischa
2c603fd406 PredictedRigidbody: improve logging 2024-01-27 11:47:34 +01:00
mischa
86805e82d2 Edgegap Hosting: updated to latest version for fixes and Websocket support 2024-01-27 10:56:42 +01:00
MrGadget
7a2cae3cfd NetworkBehaviour: Improved comments 2024-01-26 02:02:53 -05:00
MrGadget
061e49acca PredictionUtils: Fixed pre-Unity 2020.3 errors 2024-01-25 09:50:46 -05:00
MrGadget
5616f8c5a0 PredictionUtils: Fixed pre-Unity 2022.3 errors 2024-01-25 09:35:02 -05:00
MrGadget
41d12e67c3
perf(Team Interest Mgmt): Complete Overhaul (#3730)
* WIP

* perf(Team Interest Mgmt) Use Dictionary instead of spawned
This is better than iterating all spawned objects and doing TryGetComponent in Update.

* TeamIntMgmt WIP

* NetworkTeam SerializeField, no SyncVar

* Fixed Tooltip

* Removed SyncVar on forceShown

* Fixed issues per review

* Fixed comments and naming

* Remove ReadOnly
2024-01-25 14:23:13 +01:00
mischa
1e62b2450a Prediction: add support for predicted objects which are children of parents with non-default scale 2024-01-25 12:22:12 +01:00
mischa
957e5c3283 Prediction: support all Joints 2024-01-25 12:01:19 +01:00
MrGadget
66df601b78
feat(SyncVar): Arrays are supported (#3750)
* feat(SyncVar): Arrays are supported

* Moved and revised SyncVarsCantBeArray test
- Now named SyncVarsCanBeArray
- thisShouldntWork renamed to thisShouldWork
2024-01-25 11:10:06 +01:00
mischa
9f8c801795 Prediction: collider materials are now copied too 2024-01-24 14:49:37 +01:00
mischa
42dffbe898 Prediction: comments 2024-01-24 14:49:34 +01:00
mischa
8564e88d97 Prediction: MovePhysicsComponents helper function 2024-01-24 14:40:01 +01:00
mischa
ea13dc67f9 Prediction: move GameObject/MonoBehaviour copying code into PredicitonUtils.cs 2024-01-24 14:38:44 +01:00
mischa
84fec3d286 oops 2024-01-24 13:36:14 +01:00
mischa
38129b7696 fix(Prediction): child colliders now have the correct layer too 2024-01-24 13:34:55 +01:00
mischa
3c3c5c56fd fix(Prediction): when copying child Colliders, copy their relative position/rotation/scale too 2024-01-24 12:48:17 +01:00
mischa
a26d5f0e60 comments 2024-01-24 12:19:39 +01:00
mischa
0e75e3153f Prediction: now supports colliders on children 2024-01-24 11:40:49 +01:00
mischa
c87c74bce1 fix(Prediction): now supports interest management by moving physics copy's components back onto self before destroying the physics copy 2024-01-23 11:30:07 +01:00
mischa
eb96b6155e Prediction: MoveAllColliders helper for reuse 2024-01-23 11:26:43 +01:00
mischa
2c65404cf3 Prediction: make Move.* functions static for reuse later 2024-01-23 11:26:43 +01:00
mischa
bf771e283c fix(Prediction): fix MoveColliders not copying isTrigger 2024-01-23 11:26:43 +01:00
mischa
b11a13795b Prediction: catch errors early 2024-01-23 10:26:56 +01:00
mischa
59ec51600a Prediction: catch errors 2024-01-23 10:26:07 +01:00
mischa
4e8890967d Prediction: fix wrong null check 2024-01-23 10:21:26 +01:00
mischa
d4f55d8761 Prediction: disable log spam 2024-01-23 10:13:48 +01:00
MrGadget
537bc3faad
fix(MirrorBenchmarkIdle): Spawn Amount Correction 2024-01-22 15:28:26 -05:00
mischa
673500b226 Prediction: physics copy now has the correct layer assigned to fix predicted objects falling through the ground in games which use custom physics collision matrix 2024-01-22 12:49:39 +01:00
MrGadget
3e254f9ef9
breaking(NetworkIdentity): Rename visible to visibility (#3748)
* breaking(NetworkIdentity): Rename visible to visibility

* Remove TODO comment
2024-01-22 12:25:40 +01:00
MrGadget
50d0008d03
feat(NetworkClient): Add ReplaceHandler with channel param (#3747)
* breaking(NetworkClient): Remove NetworkConnection parameter from ReplaceHandler
There is only one connection on client.
Aligns with RegisterHandler that takes no NetworkConnection parameter.

* feat(NetworkClient): Add ReplaceHandler with channel param
2024-01-22 10:45:32 +01:00
JesusLuvsYooh
3db0e2d718 If Target null check, user friendly tweak. 2024-01-22 09:33:00 +00:00
JesusLuvsYooh
a652499c9d Reverted SphereMoveY prefab changes. 2024-01-22 09:00:49 +00:00
ninjakickja
b220501f31 Fix: Adding null connection in Command when registering connection
This can happen if there are no client owned objects and the server owned object called the command. Amended it to use sender.
2024-01-22 15:41:27 +08:00
ninjakickja
6a12df1a67 Added missing lastConstructedSentSyncData assignments in Client Broadcasts. 2024-01-22 09:58:51 +08:00
ninjakickja
df646323fb Added Unchanged Sending Options
This is equivalent to the old "only sync on change" option.
2024-01-22 09:40:28 +08:00
MrGadget
4c0d979d4d fix(Room Example): Updated Reward Script
- Added Headers
- made `available` private with ReadOnly
2024-01-21 16:18:56 -05:00
JesusLuvsYooh
b69b5ae604
perf(BenchmarkIdle Example): Lowered spawn amount to 10k (#3745)
50k causes a long delay, and looks like Unity has initially frozen, even on beefy machines.
To prevent users from thinking this, and perhaps force closing, amount is lowered to something still crazy, but more reasonable. :)
- Nothing else has been touched
2024-01-21 10:02:42 -05:00
Justin Nolan
d97739df71
Add missing replace handler override to NetworkServer (#3744) 2024-01-21 14:55:37 +01:00
mischa
ac344fd9d1 Prediction: detect renderers in children 2024-01-21 12:28:33 +01:00
ninjakickja
f785d70bf4 Port previous premature rounding fix to V1 2024-01-20 22:54:44 +08:00
ninjakickja
006fdcc3b7 Removed Debug statements 2024-01-20 22:23:44 +08:00
ninjakickja
04f247d43e Fixed V2 where full sync data is quantized first before considering delta
This causes premature rounding error (seen in tank turret bobbing) because full sync data has a rotation less than rotationSensitivity but non 0. but new snapshot derived from delta + quantized full sync data will produce a rotation of 0.

WIP - Need to fix this in V1
2024-01-20 21:58:12 +08:00
MrGadget
258a84c066
feat(NetworkTransform): Default Sync Direction = Client To Server (#3741)
* feat(NetworkTransform): Default Sync Direction = Client To Server
- This is done in Reset so Network Behaviour isn't effected.
- This will not change NT components already in place on objects / prefabs unless user manually chooses Reset in the inspector.

* Update Assets/Mirror/Components/NetworkTransform/NetworkTransformBase.cs

---------

Co-authored-by: mischa <16416509+miwarnec@users.noreply.github.com>
2024-01-20 10:47:41 +01:00
MrGadget
e10ab75bf5
fix(InterestManagement): Separate ResetState (#3743)
* fix(InterestManagement): Separate ResetState
We should not have hijacked Unity's callback for runtime resets.

* Updated Template
2024-01-20 10:46:29 +01:00
MrGadget
dd1a457f71
fix(NetworkIdentity): Separate ResetState (#3742)
* fix(NetworkTransform): Separate ResetState
We should not have hijacked Unity's callback for runtime resets.

* Rename test too
2024-01-20 10:46:13 +01:00
ninjakickja
65280a8f17 Porting V2 Settings and Time Interval Changes to V1 2024-01-20 09:18:29 +08:00
MrGadget
87979aeb38 fix: Updated Network Transform Template 2024-01-19 14:30:05 -05:00
MrGadget
b885db3703
fix(NetworkTransform): Separate ResetState (#3738)
We should not have hijacked Unity's callback for runtime resets.
2024-01-19 18:23:35 +01:00
MrGadget
ac050a804d
fix(NetworkServerTest): Updated tests (#3739)
- Expect Errors from PR #3737
2024-01-19 09:39:05 -05:00
MrGadget
e1a1f49d0c
fix: NetworkServer and NetworkClient respect exceptionDisconnect (#3737)
Throws error for disconnect, warning otherwise.
2024-01-19 11:07:33 +01:00
ninjakickja
5e52596b5c Updated Intervals to Frequency instead of Multiplier 2024-01-19 14:18:48 +08:00
ninjakickja
14e1091e0c Refined Sync Settings
Renamed SyncSettings to FullHeader - Affects V1 and V2
Added new enum SyncSettings to exclude rotation sync methods - Only affects V2
Added new enum RotationSettings to select rotation sync methods - Only affects V2
2024-01-19 11:11:19 +08:00
ninjakickja
15ed88779c Fix: Client Broadcast Delta sent on Reliable channel instead of Unreliable 2024-01-19 00:53:45 +08:00
ninjakickja
eb352f5485 Update HybridNetworkTransform.cs 2024-01-18 17:34:37 +08:00
ninjakickja
fb5c8399b5 Amend Register Handler Command to not require authority
Any object on that connection can send the command. We don't need an authorised object.
2024-01-18 13:25:38 +08:00
ninjakickja
af4bab60b2 Hybrid V2 using Network Messages
Saves header bandwidth.
WIP
Not cleaned up yet.
2024-01-18 10:43:01 +08:00
ninjakickja
e45e1b633a Fix: Euler Rotation quantized not updated when receiving full state. 2024-01-18 10:42:15 +08:00
ninjakickja
c7555d061c Corrected Typo In OnSerialize 2024-01-17 22:47:01 +08:00
ninjakickja
40fcefde6d Fix: Non-full position syncing causes unsynced axis to be at 0.
Added function to consider unsynced axes and use current axes values.
Added check to ensure deltas do not send before full syncs and full sync index should start at 1.
This prevents sending of delta, indexed at 0, being received and applied because the initial value of the index is 0 (thus the delta does not get rejected).
2024-01-17 10:48:26 +08:00
ninjakickja
937c59d504 Decouple Hybrid from NT Base 2024-01-16 23:08:07 +08:00
ninjakickja
d4835d0091 Initial Fixes on settings and validate.
Fixed OnValidate on full and delta send Multiplier.
Fixed syncSettings condition in OnEnable
2024-01-16 17:55:52 +08:00
JesusLuvsYooh
854de5644d Initial Push 2024-01-16 08:58:48 +00:00
mischa
1791d29da2 Prediction: force syncInterval=0 for now to reduce risks of projects misconfiguring this 2024-01-15 21:13:20 +01:00
mischa
98061c0f59 Prediction: increase default snap threshold from 0.5 to 2.0 to reduce jitter/fighting at 500ms RTT before objects are coming to rest 2024-01-15 15:46:41 +01:00
mischa
552ea5a6b1 Prediction: snapping now inserts the snapped state into history for more accurate corrections afterward 2024-01-15 10:45:31 +01:00
mischa
3719b25d3d Prediction: snapping now applies velocity. fixes stop-start-stop effect for final slow movements 2024-01-15 10:45:31 +01:00
MrGadget
f963f0eb9e fix(NetworkMatch): Added read only display of MatchID 2024-01-14 08:54:57 -05:00
mischa
0cb96901b8 Prediction: add server state ghost too 2024-01-14 13:39:29 +01:00
mischa
d3f916fc25 Prediction: inverse control flow where instead of separating renderers, we separate physics 2024-01-14 11:18:40 +01:00
mischa
ea136ee265 Prediction: recordInterval option 2024-01-14 10:15:33 +01:00
MrGadget
4e5e7a18c4 fix(NetworkAnimator): Added gameObject to Debug.LogWarnings 2024-01-13 16:27:49 -05:00
MrGadget
82a96a28f0 style(Attributes): removed space 2024-01-13 16:24:27 -05:00
mischa
832eb79876 Prediction: remove preview warning 2024-01-12 12:09:36 +01:00
mischa
7ec272f733 NetworkIdentity: make clientStarted internal, this doesn't need to be in the user facing API 2024-01-12 10:46:28 +01:00
mischa
7fae26ff6f PredictedRigidbody: add user callbacks 2024-01-11 19:45:28 +01:00
mischa
4dde5bf7d8 PredictedRigidbody: remove 'preview' warning! 2024-01-11 14:28:40 +01:00
mischa
10e7d716a7 PredictedRigidbody: now corrects rotations (hard, without deltas for now) 2024-01-11 14:23:59 +01:00
mischa
92444bfcb3 PredictedState: add quaternion requirements 2024-01-11 14:23:02 +01:00
mischa
0cb3568bb1 PredictedRigidbody: correctionThreshold renamed to positionCorrectionThreshold for clarity 2024-01-11 13:43:00 +01:00
mischa
8de65b5ae3 syntax 2024-01-11 13:42:51 +01:00
mischa
79c4298db9 Prediction: InsertCorrection moved into CorrectHistory, with complete step by step test coverage for the algorithm 2024-01-11 13:07:15 +01:00
mischa
383aff2698 fix(Prediction): revert to previous Sample() implementation, but with manual 'afterIndex' counting to fix failing test 2024-01-11 11:52:14 +01:00
mischa
e441ddb88d Predicton: update comment 2024-01-11 11:32:21 +01:00
MrGadget
d5bbfee793 fix(NetworkAnimator): Enable -> OnEnable 2024-01-10 15:06:22 -05:00
mischa
d525be9670 perf(Prediction): CorrectHistory now starts at the 'afterIndex' from Sampling. replaces two full iterations with two half = one full iteration 2024-01-10 15:56:03 +01:00
mischa
b1419db4f4 Prediction: Sample() now returns 'afterIndex' to reuse in the other iteration later 2024-01-10 15:56:01 +01:00
mischa
8473eff1ff Prediction.CorrectHistory: reuse 'key'. same but cleaner. 2024-01-10 15:41:33 +01:00
mischa
0fd342e6a9 Prediction: CompareState renamed to OnReceivedState 2024-01-10 15:39:53 +01:00
mischa
eab82ee465 Prediction: simplify CorrectHistory by moving InsertCorrection into CompareState 2024-01-10 15:38:52 +01:00
mischa
e06fcd5535 Prediction: call ApplyState directly; move ApplyCorrection into Compare state. prepares for more improvements later. 2024-01-10 15:36:11 +01:00
mischa
9aadcbf442 syntax 2024-01-10 15:25:29 +01:00
mischa
13aa0c2e6b Prediction: syntax 2024-01-10 14:36:44 +01:00
mischa
157a86fa7b Prediction: simplify CompareState. detect edge cases early instead of late to prepare for more refactoring 2024-01-10 14:34:18 +01:00
MrGadget
9b9b9cc400
fix(NetworkServer): Improve Warnings (#3727)
* fix(NetworkServer): Improve Warnings
- Attempt to dig up the Object, component, and method name to make debugging easier
- Changes identity to identity.name so the object name is logged correctly.

* Update Assets/Mirror/Core/NetworkServer.cs

Co-authored-by: mischa <16416509+miwarnec@users.noreply.github.com>

* Update Assets/Mirror/Core/NetworkServer.cs

Co-authored-by: mischa <16416509+miwarnec@users.noreply.github.com>

* Use GetFunctionMethodName

* cleanup

---------

Co-authored-by: mischa <16416509+miwarnec@users.noreply.github.com>
2024-01-10 13:46:48 +01:00
MrGadget1024
ac72d3670d fix(NetworkServer): Log message cleanup 2024-01-10 07:24:26 -05:00
MrGadget
d86d297c26
feat(RemoteProcedureCalls): Added GetFunctionMethodName (#3732)
* fix(Weaver): Move InvokeRpcPrefix from Weaver to RemoteProcedureCalls

* feat(RemoteProcedureCalls): Added GetFunctionMethodName
2024-01-10 13:17:44 +01:00
MrGadget
110580a454
fix(Weaver): Move InvokeRpcPrefix from Weaver to RemoteProcedureCalls (#3731) 2024-01-10 13:16:49 +01:00
mischa
849dd94ce7 Tests: Prediction.Sample() 2024-01-10 11:51:22 +01:00
mischa
b3e102e4fd perf(PredictedRigidbody): comparing idle objects now skips recording state (= inserting into tree structure) as well 2024-01-10 10:27:27 +01:00
MrGadget
6e0c4a66d8
fix(NetworkManager): Prevent client from calling ServerChangeScene (#3729)
- Throws error if server isn't active
- allows for changing to offline scene regardless
2024-01-10 10:16:47 +01:00
MrGadget1024
6445547aef fix(SyncVarAttributeAccessReplacer): Corrected error log message
- assembly identifiers were reveresed.
- also improved phrasing
2024-01-10 04:09:15 -05:00
MrGadget1024
8543f1f37d fix(NetworkIdentity): Improved DisallowChildNetworkIdentities Error Logging
References the offending object so it gets highlighted in the Editor when the error is clicked.
2024-01-09 19:43:48 -05:00
MrGadget1024
28b1e8b374 fix(NetworkBehaviour): Improved OnValidate Error Logging
References the offending object so it gets highlighted in the Editor when the error is clicked.
2024-01-09 19:43:17 -05:00
mischa
24513562a4 perf(PredictedRigidbody) make CompareState O(1) for idle objects by comparing last first 2024-01-09 12:47:50 +01:00
mischa
a295d7d330 PredictedRigidbody: cleaner 'remember last' approach that allows for reuse elsewhere 2024-01-09 12:47:50 +01:00
mischa
f05623526c PredictedRigidbody: explain the concept 2024-01-09 12:47:50 +01:00
JesusLuvsYooh
dd950018dc
fix: NT-Unreliable Quaternion Compression Fix (#3725)
* fix: NT-Unreliable Quaternion Compression Fix

Credits to ninja of course :D

* Client using server snapshots fix.

* Nothing to see here..

* Added comment to Quat Rotation Fix
2024-01-09 11:37:47 +01:00
mischa
c6741061d9 Prediction: explain SortedList 2024-01-08 19:41:05 +01:00
mischa
b0933a1d07 remove TODO 2024-01-08 18:01:53 +01:00
mischa
587a5fe92a perf(Prediction): replace O(logN) binary search with O(1) in RecordState 2024-01-08 18:01:36 +01:00
mischa
609c3e1e41 Prediction: RigidbodyState moved to separate file 2024-01-08 17:48:14 +01:00
mischa
10b3b234a4 Prediction: CorrectHistory moved into Prediction.cs for easier unit testing 2024-01-08 17:42:53 +01:00
mischa
8225f97d5d Prediction: move Debug.DrawLine before the recalculations 2024-01-08 17:42:50 +01:00
mischa
f51af69499 Prediction: move snapping above insertion because insertion would've been useless if snapped 2024-01-08 17:42:48 +01:00
mischa
19a47e67b2 Prediction: disable correction message logging 2024-01-08 17:07:28 +01:00
mischa
011ce5a331 comments 2024-01-08 11:56:07 +01:00