feat: NetworkTransforms throughout project optimized where possible [MTT-6312]#836
Merged
fernando-cortez merged 7 commits intodevelopfrom Jun 2, 2023
Merged
Conversation
Member
|
This looks about right with only synchronizing x and z position axis and the y rotation axis. Just using half float precision for this scenario is the right choice. You should get a 6 byte reduction for the 3 axis (2 bytes per as opposed to 4), but will get an additional 1 byte hit due to the m_BitSet flag values set with half float compression enabled and how that is being compressed...which should get you 5 bytes per NT savings. (which makes me think that I should possibly re-arrange where those bits are being set to try and avoid that hit) |
SamuelBellomo
approved these changes
Jun 1, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR upgrades NetworkTransforms inside the project to reduce bandwidth cost.
Prefabs/ scene objects that had Synchronize Transform enabled inside their NetworkObject component that didn't need to synchronize position have now that flag disabled. This is particularly useful if the NetworkObject is used more for management related tasks and has no spatial synchronization needs. This will reduce initial synchronization payloads.
CharacterPrefab prefab which all PCs & NPCs derive from now have on their NetworkTransform:
The savings as seen from a client are as follows:
Pre:

Only syncing x and z positions explicitly:

Only syncing x and z positions, y rotation, and half float precision enabled:

Only syncinc x and z positions, half float precision enabled, quat syncing and quat compression enabled:

Bandwidth costs considered, since only the y position is modified per frame in a worst case scenario, it is more cost efficient to only: sync x and z positions, y rotation, and enable half float precision. Individual NetworkTransform packet sizes are reduced from 21 bytes down to 16 bytes with this optimization.
Issue Number(s)
MTT-6312
Contribution checklist