Commit Graph

6100 Commits

Author SHA1 Message Date
mischa
a195a07775 kcp V1.39:
fix: https://github.com/MirrorNetworking/Mirror/issues/3611 Windows UDP socket exceptions on server if one of the clients died
2023-10-31 23:08:45 +01:00
mischa
b434d001b1 change Debug.Assert to Assert.That 2023-10-29 17:53:03 +01:00
mischa
2ab395cc85 NetworkBehaviour.authority test coverage from #3495 2023-10-29 17:48:06 +01:00
MrGadget
64cb1a0082
fix: Fix Unity 2023 obsoletes (#3635) 2023-10-29 17:38:44 +01:00
MrGadget
6a8b4beaa1
breaking: Removed older Obsoletes (#3633)
BREAKING CHANGE - Removed older Obsoletes
2023-10-29 17:37:44 +01:00
mischa
bdb6cd8e53 fix: #3528, #3529 NetworkBehaviour.authority now evaluates correctly in host mode too 2023-10-29 17:35:27 +01:00
MrGadget
97dc02ed59
fix: Add missing GetHashCode method for older Unity (#3631)
* fix: Add missing GetHashCode method for older Unity
- Cures warning about missing override.

* commit changes?
2023-10-29 10:40:10 +01:00
mischa
993ae8dc0f
fix: KCP V1.38 [2023-10-29] (#3629)
- fix: mismatching cookie race condition. cookie is now included in all messages.
   https://github.com/MirrorNetworking/kcp2k/issues/54
- feature: Exposed local end point on KcpClient/Server
- refactor: KcpPeer refactored as abstract class to remove KcpServer initialization workarounds
2023-10-29 10:39:02 +01:00
mischa
9fe1d06ac0
fix: LatencySimulation now always applies latency to both channels. Fixes hard to debug issues where [SyncVar/Command/Rpc]s would be way off while NetworkTime.time was fine, due to latency being applied to only one channel. (#3627)
* fix: LatencySimulation now always applies latency to both channels. Fixes hard to debug issues where [SyncVar/Command/Rpc]s would be way off while NetworkTime.time was fine, due to latency being applied to only one channel.

* this too
2023-10-27 11:29:10 +02:00
mischa
5d1b041b69 LatencySimulation: syntax / readonly 2023-10-25 16:52:44 +02:00
mischa
334e20d8fa Billiards example: fix ForceMode and add maxForce 2023-10-25 15:07:37 +02:00
MrGadget1024
36c93d0359 CanvasController - reordered methods and callers 2023-10-22 07:00:26 -04:00
MrGadget1024
76bab63598 AdditiveLevelsNetworkManager - fixed comment 2023-10-22 06:58:54 -04:00
MrGadget1024
2bf9bcdcdf Portal - improved comments 2023-10-22 06:58:28 -04:00
MrGadget1024
64f2f109d5 Reward - removed erroneous comments 2023-10-22 06:57:57 -04:00
MrGadget1024
5cc090a1a5 MultiSceneNetManager - fixed comment 2023-10-22 06:56:45 -04:00
MrGadget1024
6b4bac7dc2 Unity updated prefab 2023-10-22 06:56:21 -04:00
JesusLuvsYooh
f56394a406
Scenes renamed, see description. (#3625) 2023-10-18 12:12:08 +02:00
mischa
809f7a4a0e feature: kcp2k exposes LocalEndPoint (credits: Whale) 2023-10-13 19:27:18 +02:00
mischa
3bf180c1a6 ILPostProcessorLogger: TODO fix 2023-10-12 11:09:00 +02:00
Robin Rolf
0c5eba7aaa
fix: NetworkTime creates it's own frame time in 2019 (#3624)
Since we don't have double time there yet and the stopwatch will change during the frame which causes jitter and other artifacts
supersedes #3623
See also #2838
2023-10-08 21:21:52 +02:00
mischa
c312b6ba76 feature: ConnectionQuality details 2023-10-06 13:05:49 +02:00
mischa
52e36977fe
feature: Edgegap Relay from https://github.com/edgegap/distributed-relay-examples 2023-10-05 20:23:04 +02:00
JesusLuvsYooh
04af0fc709
Updated server build tooltip on NM (#3622) 2023-10-05 11:02:13 +02:00
Robin Rolf
8a0f6b1329
feat: NetworkManager Populate Spawnable Prefabs button (#3608)
* feat: Button to add all NI's to NetworkManager

* Undo.RecordObject instead of EditorUtility.SetDirty

* Button rename

* Don't clear list, only add

* ignore Mirror/Examples too

* fix: Undo.RecordObject needs to be called before modifying

* fix: individual entries weren't saved

* sort alphabetically to improve UX

* adjust caption

---------

Co-authored-by: mischa <info@noobtuts.com>
2023-09-30 10:04:11 +02:00
Justin Nolan
24d0ebece9
fix: improve NetworkMessage ID Hashing to minimize collisions (#3618)
* Improve network message ids

-Replaced the string stable hash function with an fnv1a hash which is a more uniform hash function
-Instead of casting the 32bit hash to 16bit which cuts off data we fold it in its self using xor to improve the 16bit hash

* Fix test

* Update Extensions.cs

---------

Co-authored-by: mischa <16416509+miwarnec@users.noreply.github.com>
2023-09-29 11:16:19 +02:00
mischa
3fff51d4a1 comment 2023-09-18 14:44:08 +02:00
mischa
046e825156 predictedTime: comments 2023-09-18 14:42:19 +02:00
mischa
3d4f54c8dd fix: Billiards & BilliardsPredicted Rigidbodies now freeze Y position to avoid flying off or over the table 2023-09-18 13:10:24 +02:00
mischa
e3ed9aca2d fix failing tests 2023-09-18 10:25:40 +02:00
mischa
c903298513
NetworkServer.Destroy: add warning if called on client without server/host to make this more obvious, instead of destroying something locally that doesn't persist on the server (#3604) 2023-09-17 11:01:07 +02:00
mischa
c49d188e8b
feature: NetworkManager.exceptionsCauseDisconnect option (#3605)
* NetworkManager flag

* NetworkMessages handle

* NetworkClient setting

* NetworkSErver setting

* NetworkManager applies it

* this too

* shorter

* bette wording (imer)

* security by default
2023-09-17 10:58:39 +02:00
mischa
94f5a924ff
feature: NetworkTime.predictedTime to prepare for Prediction (#3599)
* feature: NetworkTime.predictedTime to prepare for prediction

* disable log

* NetworkTime.predictedTime simplified: client timeline based on Time.time to fix first 5s being way ahead, history being too old, etc.
2023-09-14 11:30:33 +02:00
mischa
613f84b494 fix: Billiards / BilliardsPredicted ball Rigidbody CollisionMode changed from Continous to ContinousDynamic to fix white flying through red when applying large forces 2023-09-14 11:30:06 +02:00
JesusLuvsYooh
7b49b7d09d
A drag and drop Canvas UI HUD for NetworkManager (#3602)
Scales
Contains features of older OnGUI HUD
Credits to Ninja
2023-09-14 10:02:49 +02:00
mischa
0fce9bcdfb fix: #3595 attempting to sync a Transform that isn't networked will now show a more obvious warning 2023-09-09 12:54:17 +02:00
JesusLuvsYooh
06f1ee09a0
feature: New Example - Character Selection and customisation. (#3593)
* Draft 1

Scene set up, podium and medic character added, minor ui and idle animation.

* Draft 2

3 characters, medic, assault, heavy.
Canvas linked up, along with character data.

* Draft 3

Map scene
Static variables, save data
Custom network manager

* Draft 4

Character pivots rotated.
Animation changes child, not parent position.
Spawn positions added.
Cheat protection for player prefab number added.

* Draft 5

Adding in customisations ontop of separate prefabs.
Player camera.

* Draft 6, part 1 complete.

Finished Player name, player colours.
Part 1 complete
Needs tidying up and code comments.

* Draft 7, checkpoint before next step.

* Draft 8 - Pre-selection and in-game character selection finished?

Pre-selection and in-game selection finished?

* Draft 9

* Draft 10 - CharacterSelection Example

* Draft 11

* Draft 12

* Draft 13
2023-09-07 21:57:22 +02:00
JesusLuvsYooh
796b0711f0
Update CouchPlayerManager.cs (#3592)
Moved some code from Awake to OnStartAuthority to prevent a reference from getting overridden.
Fixes Server/Host from not being able to add its own new local players, if remote players have maxed themselves out.
2023-09-07 10:07:37 +02:00
mischa
fcbf841d84 Billiards Demos: change trail debug line color and time 2023-09-07 09:26:51 +02:00
mischa
d9ef6d855c GUIConsole: don't show in Unity Editor, we already have the Console window there (but keep it as option) 2023-09-06 18:39:38 +02:00
mischa
357e798e25 fix: Unity 2019/2020 compilation failing because ConcurrentQueue<T>.Clear was missing 2023-09-05 09:21:08 +02:00
mischa
55daefab2a grammar fix 2023-09-05 09:17:10 +02:00
mischa
ae496ef0ee NetworkTransformBase: virtual SetPosition/Rotation/Scale for users to overwrite if needed 2023-09-01 15:59:10 +02:00
mischa
02db1b03d5 NetworkTransformBase: virtual GetPosition/Rotation/Scale for users to overwrite if needed 2023-09-01 15:51:18 +02:00
mischa
966c4f2bdd BilliardsPredicted: Player/ folder for PlayerPredicted prefab 2023-09-01 11:54:37 +02:00
mischa
3be960692c BilliardsPredicted: show FPS at runtime 2023-09-01 11:18:28 +02:00
mischa
9aba125566 BilliardsPredicted: fix prefab script references 2023-08-31 11:08:16 +02:00
mischa
34d3777bc3 BilliardsPredicted: script naming 2023-08-31 11:06:36 +02:00
mischa
ff56210a36
feature: Threaded Transport & Threaded KCP (#3582)
* Tools: ThreadLog for thread safe logging in Unity builds

* events

* move folder

* WorkerThread & tests

* ConcurrentPool & Tests

* ConcurrentNetworkWriterPool & Tests

* ThreadedTransport empty

* syntax

* server part

* client part

* separate queues and updates

* separate events for strong typing

* virtual awake

* fix & support uri

* threaded early/late

* threaded kcp!

* private

* simplify

* use threaded callbacks

* active flags

* enabledcopy

* fix ids

* fix onsend

* fix disco param

* fix segment copy

* fix

* comment

* deadlock prevention
2023-08-29 12:57:55 +02:00
JesusLuvsYooh
4405082d4b
Example: Couch Co-Op (#3589) 2023-08-25 14:15:49 +08:00
mischa
9a4e317874 Examples: BilliardsPredicted. copy of Billiards demo, to apply prediction features onto in the future. 2023-08-17 22:11:41 +02:00
mischa
b7fad3e672 Billiards Demo: create prefab from table in hierarchy 2023-08-16 18:36:44 +02:00
mischa
5fba72dc3c Billiards Demo: apply red changes to prefab 2023-08-16 18:36:07 +02:00
mischa
d8bb5ec15e Billiards Demo: move indicator into white ball prefab for ease of use 2023-08-16 18:33:15 +02:00
mischa
b0b6d351b9 Billiards Demo: fix materials 2023-08-16 18:30:09 +02:00
mischa
463028260f Billiards demo: update namespace 2023-08-16 18:02:09 +02:00
mischa
50e6d5f890
feature: Multiplayer Billiards demo (#3583) 2023-08-13 09:54:21 +02:00
mischa
db241bb413 breaking: NetworkReader/Writer Read/WriteBytesAndSizeSegment renamed to Read/WriteArraySegmentAndSize for clarity. 2023-08-12 19:13:15 +04:00
mischa
e799b08303 syntax 2023-08-12 19:08:15 +04:00
mischa
4d7c5b6e41 Reader/Writer: sort WriteBytes(AndSize) functions 2023-08-12 19:05:20 +04:00
mischa
f05df29639 NetworkIdentity: don't need to show assetId in Inspector 2023-08-12 18:59:24 +04:00
mischa
2a29f6e686 NetworkManager: improve warning about player prefab in spawnable prefabs list 2023-08-11 22:16:13 +04:00
mischa
684a61c964 script icons 2023-08-10 18:07:37 +04:00
mischa
2e1e3bfd9c assign missing icon 2023-08-08 16:40:59 +08:00
mischa
6de9448c4a small cleanups 2023-08-08 16:34:24 +08:00
mischa
877b249add MIRROR_81_OR_NEWER 2023-08-08 16:32:59 +08:00
JesusLuvsYooh
10badbe21c
Adjusted UI scaling in new TanksCoop example. (#3579) 2023-08-06 10:15:42 +08:00
mischa
2365d301e1 SimpleWeb: minimize logging hot path allocations 2023-08-05 13:47:42 +08:00
mischa
d7757e95f2
perf: VarInt compression performance improvements (#3578)
* perf: VarInt compression performance improved by writing multiple bytes at once

* merge byte shifting

* this too
2023-08-05 07:13:16 +02:00
mischa
cd390bfce1 VarInt: tests now cover accidentally duplicating bytes 2023-08-04 19:47:12 +08:00
mischa
9d0e90f484
perf: remove O(N) ClearDirtyComponentsDirtyBits calls in NetworkServer.Broadcast() and NetworkClient.Broadcast() (#3575)
* perf: remove O(N) ClearDirtyComponentsDirtyBits calls in NetworkServer.Broadcast() and NetworkClient.Broadcast()

* only for delta [imer]
2023-08-03 14:01:35 +02:00
mischa
594a0f5c79 Examples: added BenchmarkIdle demo to test with 80% idle objects 2023-08-03 12:34:17 +08:00
mischa
e45c8e2e37 typo 2023-08-03 12:09:40 +08:00
JesusLuvsYooh
d2c475409f
feature: NetworkTransform WorldScale option (#3565)
* NT WorldScale option DRAFT - Will test, tidy and comment tomorrow.

Currently NT is local, and in some cases world is needed.

* Updated tooltip etc

All tested, using tanks example, and dragging a player tank into empty gameobject, then this gameobjcets position/rotation/scale and hierarchy changing live during gameplay. Switching to world bool fixes any problems caused by that.

* Enum dropdown, rather than bool as requested.

* Ternary shortcuts

* tab

* adjustments

* better

* cleanup

* force disable world scale

---------

Co-authored-by: mischa <info@noobtuts.com>
2023-08-02 08:21:33 +02:00
mischa
c077b53324 NetworkClient: improve 'did not find target for sync message' warning 2023-08-01 23:19:56 +08:00
mischa
7898b559b9 fix: SimpleWebTransport conditionals removed so users can see error messages 2023-08-01 11:53:43 +08:00
mischa
e92e91dcfd kcp2k V1.37 [2023-07-31]
- fix: #47 KcpServer.Stop now clears connections so they aren't carried over to the next session
- fix: KcpPeer doesn't log 'received unreliable message while not authenticated' anymore.
2023-07-31 18:10:23 +08:00
mischa
e4304bfed6
feature: HistoryBounds MVP (#3563)
* readme, folders

* HistoryBounds.Insert placeholder and test

* Insert: naive implementation

* easier

* simple benchmark

* move into lag comp

* benchmark improvements

* deterministic benchmark

* tests: revisit coverage

* syntax

* HistoryBounds data structure - wip

* Reset

* oops

* insert in structure

* historyBounds.total

* comment

* test

* comments

* tests: insertfar

* simplify insertion; only recalculate when removed

* fix comment

* recalculate every nth

* benchmark simplified

* benchmark variant

* BUCKETS

* perf: use (min, max) bounds representation internally to avoid Unity's Bounds.Encapsulate conversion overhead

* HistoryCollider component WIP

* ...

* steps

* things

* gizmo

* syntax

* unused

* child collider

* counter rotate

* warning

* detect scale changes

* syntax

* Unity 2019 support
2023-07-31 12:38:42 +08:00
JesusLuvsYooh
593226b02c
Tanks co-op example, take control of vehicles via Mirrors Authority assigning feature. (#3564) 2023-07-30 17:06:14 +08:00
mischa
28859fb84a
fix: NetworkReader ReadBytes/Array<T>/List<T> allocation limit to prevent ClientToServer [SyncVar] allocation attacks [credit: James] (#3562)
* fix: NetworkReader.ReadArray: remove misleading 'length > reader.Remaining' check since not all arrays are byte arrays

* fix: NetworkReader AllocationLimit to prevent ClientToServer [SyncVar] allocation attacks [credit: James]

* ReadBytes: check allocation limit

* ReadList: check allocation limit

* ReadArray: check allocation limit

* ReadTexture2D: check allocation limit

* limit as count

* writer checks

* test wip

* throw

* add test

* test
2023-07-27 10:27:00 +02:00
mischa
120bdcb855 remove unused import 2023-07-27 13:39:09 +08:00
mischa
d4de45c374 comment 2023-07-27 13:32:06 +08:00
mischa
53b0258904 NetworkWriter: clean up old UIntDouble comments 2023-07-27 13:08:23 +08:00
mischa
a91f3a88c3 comments 2023-07-27 12:32:19 +08:00
mischa
7b2427ce76 more comments 2023-07-27 12:27:38 +08:00
mischa
c81ce3ec26 NetworkReader/Writer Read/WriteList: comments 2023-07-27 12:26:59 +08:00
mischa
d2b6cfdc2a NetworkWriter: syntax 2023-07-27 12:03:58 +08:00
mischa
9311ef3523
fix: NetworkConnection "cannot send packet larger than ..." message now includes the message type which was too large. (#3560) 2023-07-24 06:08:55 +02:00
mischa
871a08c266 resaved test prefabs 2023-07-22 21:59:29 +08:00
mischa
6830a6e52c fix: NetworkMessages.MaxContentSize now considers channelId instead of always assuming reliable 2023-07-22 21:59:07 +08:00
mischa
71f64c70f1
feature: bring back NetworkServer.disconnectInactiveConnections (#3556) 2023-07-21 06:11:14 +02:00
mischa
adee4ad140
fix: remove redundant RPC buffering. saved bandwidth, but introduced data races, complexity, extra buffer copies [credit: James, imer] (#3497) 2023-07-20 09:10:00 +02:00
mischa
d7fbee9d50 fix: NetworkIdentity.AssignAssetId() is now saved properly. fixes a bug where duplicated prefabs and prefab variants would still have the original prefab's assetId on disk, even though the Inspector showed the proper one. 2023-07-20 14:29:40 +08:00
mischa
ac6a881f1b fix: NetworkTime RTT now checks for malicious timestamps from the future 2023-07-19 19:24:05 +08:00
mischa
e45bfb47ab Compression: remove unnecessary QuaternionElement function 2023-07-19 13:15:40 +08:00
mischa
7e28e4ea02 Compression: more obvious TenBitsMax representation 2023-07-19 12:59:51 +08:00
mischa
483006eadc
feature: NetworkConnectionToClient.rtt via Ping & Pong Messages (#3545)
* NetworkConnectionToClient: send Ping message every PingFrequency

* breaking: NetworkPing/PongMessage .clientTime renamed to .localTime because it'll be used in both directions

* Server->Client->Server Ping/Pong messages and rtt

* don't ping in host mode

* adjust tests

* TODO
2023-07-18 11:19:12 +02:00
mischa
398d2e6d2c Examples: default send rate increased from 30 Hz to 60 Hz for remaining examples 2023-07-18 16:58:05 +08:00
mischa
8164018483 perf: default send rate increased from 30 Hz to 60 Hz for users to get better initial results 2023-07-18 16:54:49 +08:00
mischa
82c09850da Tanks demo: increase send rate from 30 Hz to 120 Hz to avoid rtt being too high. reduces rtt from ~30 ms to ~8ms. 2023-07-18 16:52:22 +08:00
mischa
f6cf32ee8d Lag Compensation demo: fix warning 2023-07-18 16:10:58 +08:00
mischa
70c34ecf5d NetworkBehaviour.OnValidate: GetComponentInParent(bool) 2020 support (credits FakeByte) 2023-07-18 15:37:04 +08:00
mischa
27e2238d0b typo 2023-07-18 15:14:26 +08:00
mischa
8b6364bb76 NetworkIdentity: correct GetComponentInParent explanations (credit: FakeByte) 2023-07-18 14:49:26 +08:00
mischa
6d4e460f87 NetworkIdentity: expose AssetGuidToUint in builds 2023-07-18 14:44:17 +08:00
mischa
4ec80368f6 fix: NetworkBehaviour.OnValidate can't find parent NetworkIdentity because both the Unity define and GetComponentInParent() are broken in 2023.3 LTS. 2023-07-18 14:33:34 +08:00
mischa
0315fb3345 fix: Tanks demo: replace Turret obsolete NetworkTransform with NetworkTransformUnreliable component 2023-07-18 14:09:09 +08:00
mischa
fcd3a6b91b perf: remove some unnecessary inlining to optimize instruction cache 2023-07-18 13:24:02 +08:00
mischa
0862b9b99f NetworkIdentity: expose AssetId to Guid translation function 2023-07-10 12:53:28 +08:00
Robin Rolf
39211f9002
fix: 2019 tests work again (#3547) 2023-07-09 12:22:59 +08:00
mischa
629e50e4f9 fix: NetworkBehaviour OnValidate #ifdef adjusted for Unity 2020.3.19 support 2023-07-08 14:33:39 +08:00
mischa
f62b9a5a24 improve error message for #3525 for cases where the [SyncVar] is named 'value' 2023-07-06 20:03:01 +08:00
mischa
468192b046 fix NetworkIdentityTests by applying the workaround for #3525 2023-07-06 20:01:31 +08:00
mischa
acf67dddb0 fix: #3525 by explaining the solution in the Error message. 2023-07-06 19:59:16 +08:00
mischa
7c86f6a129 Re-enable the failing tests 2023-07-06 19:47:29 +08:00
mischa
69647f26a1 NetworkClient OnGUI: better rtt display 2023-07-06 17:11:20 +08:00
mischa
59e04f7902 breaking: NetworkTime.PingFrequency renamed to PingInterval. Makes it more obvious that we use it as interval, not as frequency in Hz. 2023-07-06 16:45:11 +08:00
mischa
d64c5fb61b fix PrepareToSpawnSceneObjects tests after recent fix 2023-07-06 16:45:03 +08:00
mischa
a463d48681 NetworkTime: more readable ping interval check 2023-07-06 16:33:08 +08:00
James Frowen
08fa0269de
fix: #3538 calling unspawn on scene objects in DestroyOwnedObjects (#3542)
* fix: calling unspawn on scene objects in DestroyOwnedObjects

fixes: https://github.com/MirrorNetworking/Mirror/issues/3538

* Update NetworkConnectionToClient.cs

---------

Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
2023-07-06 09:59:28 +02:00
James Frowen
51c7162af7
fix: PrepareToSpawnSceneObjects checks netId instead of activeSelf [fixes: #3541] (#3543)
* fix: fixing PrepareToSpawnSceneObjects not added enabled objects

fixes: https://github.com/MirrorNetworking/Mirror/issues/3541

Should be safe to remove this extra check complete, it is safe to add spawned object to `spawnableObjects`. For now this just changes it to NetId to ensure that the object really is unspawned and not just enabled

* Update NetworkClient.cs

---------

Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
2023-07-06 09:56:23 +02:00
mischa
110625b102
feature: Lag Compensation V1 (#3534)
* Lag Compensation Example based on Snapshot Interpolation example

* rename scene

* increase latency

* update scripts

* instructions

* better

* rename to rollback

* rename scene

* rebase

* rename to LagComp

* collider, onclick

* CmdClick

* flash color

* cleanup

* LagCompensationSettings

* caputre in interval

* comment

* syntax

* catpure, comp

* ns

* stuff

* source

* syntax

* naming

* history and draw history

* adjust

* cleanups

* tests

* sample and tests

* simplify tests

* out interpolation factor t

* tostring

* show result duration

* sample and interpolate

* fix

* logs

* better gizmos

* store size

* EstimateTime

* demo: estimate time

* estimation tests

* perf: Queue instead of List

* comment

* syntax

* cleaner

* cleanup

* syntax

* comment

* DrawGizmo(s)

* syntax

* extrapolation tests

* fix insert and test

* extrapolation

* fix extrapolation out values

* comments

* TODO

* TODO
2023-07-05 12:08:20 +02:00
mischa
4972b8004a Tests: fix failing NetworkManagerTests because DeeplyTested test didn't register the GameObject for cleanup 2023-06-29 19:56:17 +08:00
mischa
13e07f5603 NetworkTime: rttVar renamed to rttVariance for consistency with old Mirror versions. makes it easier to upgrade. 2023-06-27 21:40:45 +08:00
mischa
37bbd7eb3d fix: SnapshotInterpolation.Insert() now has a bufferLimit to avoid ever growing snapshot buffers on extremely low-fps clients 2023-06-27 19:20:03 +08:00
mischa
60936f0646 perf: NetworkTransformBase SortedLists now allocate with a default capacity to avoid early resizing & allocations 2023-06-27 18:57:05 +08:00
mischa
97313bd295
feature: ConnectionQuality Heuristic + Callback + GUI (#3526)
* ConnectionQuality.cs

* NetworkClient.ConnectionQuality with virtual NetworkManager calculation

* NetworkPingDisplay displays ConnectionQuality

* Tanks: adjust NetworkPingDisplay size

* NetworkManager: provide simple version too

* color coding

* extension

* virtual claculate

* on changed hook

* better heuristic

* syntax

* remove comment

* naming

* update in interval

* tweaking

* enable log

* naming

* color

* log message

* comment

* syntax

* explanations
2023-06-26 05:50:03 +02:00
mischa
deaf53a9bb NetworkTime: reintroduce Round Trip Time Variance to prepare for ConnectionQuality 2023-06-25 10:33:23 +08:00
mischa
db83a4cca2 NetworkClient: initialBufferTime for debugging, comparisons, and to prepare for ConnectionQuality 2023-06-25 10:27:14 +08:00
mischa
00f20bca2e Tanks demo: always show time interpolation GUI for easier debugging 2023-06-25 10:20:59 +08:00
mischa
c599fb616e fix: NetworkClient TimeInterpolation: add 'current' bufferTimeMultiplier field to not overwrite the initial SnapshotSettings.bufferTimeMultiplier. Allows us to reset bufferTimeMultiplier in InitTimeInterpolation and prepares for ConnectionQuality. 2023-06-25 10:03:08 +08:00
mischa
16efc7eedf Disable the failing tests for now, so at least the project compiles without Weaver errors 2023-06-24 20:35:26 +08:00
mischa
2b6212b088 fix: Weaver SyncVarAttributeAccessReplacer now detects modifying [SyncVar] in another assembly and logs an error, instead of silently failing at runtime (#3525) 2023-06-24 12:34:59 +08:00
mischa
6465ac5394 Weaver: SyncVarAccessReplacer: pass Logging 2023-06-24 12:34:59 +08:00
mischa
19065acb19 Weaver: SyncVarAccessReplacer: syntax & comments to make it more obvious 2023-06-24 12:34:59 +08:00
mischa
6fb0b33188
fix: Weaver now weaves NetworkBehavious in nested type definitions (#3524)
* test for deeply nested weaving

* fix
2023-06-23 14:11:34 +02:00
mischa
d5664ab202 feature: Weaver adds 'bool Weaved()' to each NetworkBehaviour, which can be checked at runtime #3523 2023-06-23 20:07:28 +08:00
mischa
1d7af1b750 Tests: remove unused 'using' 2023-06-23 10:01:41 +08:00
mischa
d1719c1e7b fix: tests work on Unity 2022.2+ [imer] 2023-06-22 23:48:26 +08:00
mischa
73c9990f03 comments 2023-06-20 19:58:46 +08:00
mischa
4d127ad370 naming 2023-06-20 19:58:46 +08:00
mischa
c687bdd24a Weaver ILPostProcessorAssemblyResolver: use GetFileNameWithoutExtension 2023-06-20 19:58:46 +08:00
mischa
8cb58d73e8 syntax 2023-06-20 19:58:46 +08:00
mischa
74bbd295d5 readonly 2023-06-20 19:58:46 +08:00
mischa
69d4d251e2 comments 2023-06-20 19:58:46 +08:00
mischa
eb33dfd40e perf: Weaver ILPostProcessorAssemblyResolver FindFile searches dllname / exename in one iteration & without Linq 2023-06-20 19:58:46 +08:00
mischa
1cc888f287 Weaver: ILPostProcessorAssemblyResolver FindFile comments 2023-06-20 19:58:46 +08:00
mischa
5b7d9560c0 Weaver: ILPostProcessorAssemblyResolver caches FindFile for a 50x improvement in TypeReference.Resolve(), and a 22x improvement in total Weaver time for large projects 2023-06-20 19:58:46 +08:00
mischa
c960377911 Weaver: ILPostProcessorAssemblyResolver comment 2023-06-20 19:58:46 +08:00
mischa
443d1541d1 perf: Weaver ILPostProcessorAssemblyResolver FindFile caches exeName, dllName for ~0.1ms speedup per call 2023-06-20 19:58:46 +08:00
mischa
97f3d2dff4 Weaver ILPostProcessorAssemblyResolver: FindFile uses string name parameter directly 2023-06-20 19:58:46 +08:00
mischa
c6be031783 perf: Weaver ILPostProcessorAssemblyResolver uses ConcurrentDictionary to avoid multithreading locks 2023-06-20 19:58:46 +08:00
mischa
c5ad884145 RigidbodyPhysics demo: disable 'onlySyncOnChange' until #3519 is fixed 2023-06-20 19:53:40 +08:00
mischa
8be961bfb5 Examples/VR link 2023-06-20 16:17:53 +08:00
mischa
d0edb2d7a4 Unbatcher: Unity 2019 fix 2023-06-16 17:25:50 +08:00
mischa
fc561918a8 remove leftover comment 2023-06-16 17:19:03 +08:00
mischa
13fd7211e0
fix: Batching VarInt size header added to fix custom serializated NetworkMessages with size mismatch corrupting the next message in a batch (#3516)
* repro test

* Batcher, Unbatcher VarInt size prefix

* NetworkServer/Client adjusted

* add check

* fix tests

* Batcher: rename headersize

* NetworkMessages: MaxContentSize adjusted

* max size calculations adjusted

* fix tests

* Batcher.MaxMessageOverhead

* naming
2023-06-16 10:58:54 +02:00
mischa
6ac67b9b5f feature: NetworkRigidbody Benchmark demo 2023-06-16 12:26:59 +08:00
mischa
b49f5b39de fix: NetworkRigidbody/2D now uses .target's Rigidbody and supports child Rigidbodies 2023-06-16 10:42:39 +08:00
mischa
bbf1140fc9 NetworkRigidbody: MovePosition overwrite comments 2023-06-16 10:31:49 +08:00
mischa
84b408e377
feature: NetworkMessageId <> Type lookup and log function for debugging (#3515)
* feature: NetworkMessageId <> Type lookup and log function for debugging

* better to do in NC/NS
2023-06-16 03:48:08 +02:00
mischa
581d16eb75 Unbatcher: simplify GetNextMessage 2023-06-15 19:37:53 +08:00
mischa
54f6abb6ce feature: VarInt size prediction 2023-06-15 16:35:18 +08:00
mischa
cdf5edae0d syntax 2023-06-15 15:45:00 +08:00
mischa
321b68b2bc NetworkMessages: keep GetId<T> for convenience 2023-06-15 15:44:06 +08:00
mischa
4cb2e75d4f syntax 2023-06-15 15:36:19 +08:00
mischa
86064080f9 breaking: NetworkTransform renamed to NetworkTransformUnreliable for consistency 2023-06-15 15:27:33 +08:00
mischa
2c075c94ad wat 2023-06-15 15:10:38 +08:00
mischa
128da59c76 remove duplicate NetworkRigidbody scripts 2023-06-15 15:09:03 +08:00
mischa
627db15d4a NetworkTransform: moved all related scripts into one NetworkTransform folder 2023-06-14 17:57:28 +08:00
mischa
7e0e02f5d8
perf: NetworkRigidbody Reliable/Unreliable via NetworkTransform for smooth interpolation (#3510)
* RB

* fix clientauthority warning

* reset iskinematic and add a player to try local sync

* delete red ball, fix

* spawns multiplayer

* sc

* textmesh

* better

* better

* reset latency sim

* NetworkRigidbody folder

* syntax

* fix rese tflags

* 2D
2023-06-14 11:24:18 +02:00
mischa
8cd13328ca fix: NetworkBehaviourInspector 'had no target' warning 2023-06-14 17:21:45 +08:00
mischa
e5be10ff71 NetworkTransform: show Gizmos as WriteCube instead of solid Cube for easier visual debugging 2023-06-13 12:55:07 +08:00
mischa
f72d35987a Rigidbody Example: gray background so we can see overlays easier 2023-06-13 11:20:30 +08:00
mischa
62503601af Rigidbody Example: show time interpolation GUI 2023-06-13 11:20:30 +08:00
mischa
f89b9cbfae RigidbodyPhysics Example: fix missing component warnings 2023-06-13 11:20:30 +08:00
mischa
dbe8a37bcd
fix: Weaver runtime fuse to ensure weaving succeeded before starting Server/Client (#3509)
* fix: Weaver runtime fuse to ensure weaving succeeded before starting Server/Client (#3506)

* WeaverFuse Core/ and Tests/

* runtime safety checks

* weaver

* cleanups

* remove log

* comments updated

* WeaverTypes variant

* update comment

* comment updated

* more accurate errors

* host check

* better

* better logs

* redundabt

* fix 2019 support
2023-06-12 17:57:58 +02:00
mischa
f5fa952937 Snapshot Interpolation Example: README 2023-06-12 23:43:19 +08:00
mischa
278f44673d CompilationFinishedHook: add explanation 2023-06-11 16:52:34 +09:00
mischa
30437a934f fix NetworkClientTests for Unity 2019 2023-06-11 16:42:31 +08:00
mischa
afd275ad87 NetworkMessages.WrapHandler: improve log message to make it easier to search for 'Disconnect' in logs 2023-06-11 16:10:00 +09:00
mischa
e58e47fc47
fix: NetworkClient unbatcher is now reset in host mode connect as well [credit: BigBoxVR] 2023-06-11 08:27:16 +02:00
mischa
1e199caab0 Unbatcher: readonly fields 2023-06-11 09:06:07 +09:00
mischa
6be1a25338 fix: KcpServer.Stop now clears connections so they aren't carried over to the next session 2023-06-10 21:33:55 +09:00
James Frowen
bd66be3d1c
fix: fixing use of new c# in 2020 (#3507)
* fix: fixing use of new c# in 2020

* fixing doc comment
2023-06-09 14:09:16 -04:00
James Frowen
176a2d3b66
feat: adding option to get Ip behind reverse proxy (#3505)
* feat: adding option to get Ip behind reverse proxy

When running behind a reverse proxy the IP endpoints will be that of the reverse proxy, not the client.
Reverse proxies like Nginx set the ip if the host in a http header, the server can read this header during the handshake and store it so it knows the IP address of the client

* feat: adding method to get request

allows users to get other headers if they need to

* caching remote address

* fix and simplify

* inlining extra var

* string interpolation

* changing request log message to info

* adding GET back in inside ReadToEndForHandshake

* updating log message

* max split 2

* returning ipv4 address

* checking if address is ipv4

* adding using

* fixing maping
2023-06-09 09:50:41 -04:00
mischa
220937cc4a MIRROR_79_OR_NEWER 2023-06-08 10:38:16 +09:00
mischa
aaaa62e9c9 kcp2k V1.36 [2023-06-08]
- fix: #49 KcpPeer.RawInput message size check now considers cookie as well
- kcp.cs cleanups
2023-06-08 10:31:26 +09:00
Robin Rolf
37d762c2c3
fix: Test prefab loading might not cause log (#3502) 2023-06-07 19:04:09 +08:00
Robin Rolf
f11a7b44fe
fix: failing NetworkClientTests (#3500) 2023-06-07 17:21:51 +08:00
JesusLuvsYooh
f0005f0021
Changed default NT BRM to 3 (#3496)
5 (the previous default) covers really bad pings in return for noticeable delay. However, not every game should have this as their default. 1 being almost instant movement for minimal smoothing (could be best for VR and other uses), from testing 3 is a nice balanced result.
2023-06-05 06:18:54 +02:00
JesusLuvsYooh
1b6bb1e28a
NT-UR Example presets (#3494)
Tested on tanks example, parent and child turret.
Scenarios were regular localhost, then latency sim defaults (200ping, 2% loss etc) and bad connection (500 ping, 5% loss etc), along with personal experience of the settings on NT thee 3 presets should cover most peoples scenarios.
2023-06-01 12:37:13 +02:00
mischa
f84a385212
fix: Disallow Child-NetworkIdentities in Scene objects (#3492)
* fix: Disallow Child-NetworkIdentities in Scene objects

* better
2023-05-29 12:05:19 +08:00
mischa
d74e61298e
fix: #3485 Weaver now skips protected fields (Credit: James) (#3493)
* fix: #3485 Weaver now skips protected fields

* simplify
2023-05-27 06:36:05 +02:00
mischa
22134470ed fix Unit tests 2023-05-27 11:47:22 +08:00
mischa
3619be494a feature: allow NetworkBehaviour components in children. solves #2276 (#3486)
* feature: allow child NetworkBehaviour components in children

* Tanks demo: move Turret NetworkTransform to child

* NT TODO

* RequireInParents NI

* NetworkAnimatore allow in children

* call base onvalidate

* Add OnValidate to Script Template

* fix for pre-2020.3 Unity

* MirrorTest: CreateNetworked with NetworkBehaviour in children

* Tests: child networkbehaviours

---------

Co-authored-by: MrGadget1024 <9826063+MrGadget1024@users.noreply.github.com>
2023-05-27 08:25:53 +08:00
mischa
26e83ce645 fix: NetworkBehaviour SendRPCInternal error message fixed. This can happen if an RPC is called after shutting down the server - which doesn't mean that it was called on a client. 2023-05-25 11:16:06 +08:00
JesusLuvsYooh
e0ae55a971
Update NetworkRoomPlayer.cs (#3490) 2023-05-19 19:51:50 +08:00
JesusLuvsYooh
4c6e4e2bd0
NetworkTransform tooltips need use-case explanations. (#3481)
* Removed obsolete comment.

* Tooltip explanations 1
2023-05-19 19:51:27 +08:00
mischa
bf5cd97e69 fix: #3482 Weaver Generic 'out' parameter IL2CPP build failures [credit: JamesDev] 2023-05-14 11:47:05 +08:00