Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Netcode Fix Fixed Tick Bug & No-change Desync #5511

Merged
merged 2 commits into from
Mar 17, 2022
Merged

Conversation

HexaField
Copy link
Member

@HexaField HexaField commented Mar 17, 2022

Summary

A quick fix to periodically send the whole networked pose state regardless of if it's changed or not.

Also now sends the originating userIndex across the network so we can decipher if a packet is coming from the host or not. Previously this was sent per-entity being serialized, which was expensive and unnecessary.
This fixes the issue of clients reading their own fixedTick and getting desynced from the server.
This is currently still insecure as it needs curation on the server side between receiving and sending client data to other clients.

Checklist

  • Pre-push checks pass npm run check
    • Linter passing via npm run lint
    • Unit & Integration tests passing via npm run test:packages
    • Docker build process passing via npm run build-client
  • If this PR is still a WIP, convert to a draft
  • When this PR is ready, mark it as "Ready for review"
  • Changes have been manually QA'd
  • Changes reviewed by at least 2 approved reviewers

References

References to pertaining issue(s)

QA Steps

  1. git checkout pr_branch_name
  2. npm install
  3. npm run dev-reinit
  4. npm run dev

List any additional steps required to QA the changes of this PR, as well as any supplemental images or videos.

Reviewers

Reviewers for this PR

@HexaField HexaField changed the title Netcode Fix Fixed Delta Bug Netcode Fix Fixed Tick Bug Mar 17, 2022
@HexaField HexaField changed the title Netcode Fix Fixed Tick Bug Netcode Fix Fixed Tick Bug & No-change Desync Mar 17, 2022
@HexaField HexaField marked this pull request as ready for review March 17, 2022 01:41
@HexaField HexaField merged commit 5ee7799 into dev Mar 17, 2022
@HexaField HexaField deleted the netcode-owner-delta-fixes branch March 17, 2022 09:17
lalalune added a commit to TheNexusCity/XREngine that referenced this pull request Mar 20, 2022
* parse gltf ecs data before applying matrix auto update, gltf ecs entities use bitecs transform store

* random tsc error fix

* Add sorting to admin panel tables (EtherealEngine#5461)

* implemet logout for admin system

* implement logout on admin dashboard

* implement filter for user table

* add sorting to tables

* add user role filter

* fix type error

* fix project sorting

* fix icon style

* fix admin nav icon

* fix /admin/location alter message

* fix drawer style

* implemet logout for admin system

* implement logout on admin dashboard

* implement filter for user table

* add sorting to tables

* add user role filter

* fix type error

* fix project sorting

* fix icon style

* fix admin nav icon

* fix /admin/location alter message

* fix drawer style

* center align column headings in project route of admin panel

* refactoring remove unwanted code

* refactor admin code

* fix update location issue

Co-authored-by: Zulqarnain Hanif <30355034+zulqarnainhanif@users.noreply.github.com>

* Location type not pre-populating in edit modal (Fix) (EtherealEngine#5494)

* fix update for location

* fix type error

* Changes to initially load gameserver with location (EtherealEngine#5231)

* Changes to initially load gameserver with location

* Temporary changed to current branch

* QAT triggered

* Changed branch name

* Changes to add gameserver-load service

* Added check to verify instance id

* Reverted github QAT action

* Updated UI to handle service response

* Cleanup

* Added logging to check for ip address

* Added logging

* Added payload to service

* Updated variables returned

* Added checks for same ip and added scene id

* Changed .value from use effect dependency

* Added spawn location check based on gameserver name.

* Changed to k8 sdk call

* Removed logging

* Changed pipeline to qat

* Added translations

* Fixed formatting

* Removed kubernetes object check

* Graph changes on admin panel (EtherealEngine#5471)

* update graph on admin panel

* fix on change function

* update services and fetching logic

* add dependencies and update date adapter

* use mobile view since desktop view is creating some issue

* add custom solution for date time range selection

* remove extra code

* State sync for physics (EtherealEngine#5480)

* Generate debug physics cube on key press. (For testing state sync stuff)

* Dispatch spawnDebugPhysicsObject against key event.

* Sync linear velocity over the network and use it for when updating physics state of remote bodies.

* Update debug physics object generation function to work relative to new model functions logic.

* Rename the velocity member of VelocityComponent to linearVelocity as it represents the linear velocity of the object.

* Add angular velocity to VelocityComponent. And sync it across the network.

* Remove extra logs.

* Revert "Remove extra logs."

This reverts commit 9c26e8d.

* Remove extra logs.

* Move debug cube binding to AvatarInputSchema.

* Move physics debug toggle to AvatarInputSchema key binding.

* Revert "Auxiliary commit to revert individual files from d5cdb53"

This reverts commit ecf5358d6e0ffada455e331506204f132e4e3aaa.

* Rename VelocityComponent fields.

* Refactor some code.

* Add isDev to check around debug key bindings.

* Run prettier.

* make physics debug keybind a toggle

Co-authored-by: Josh Field <joshfield999@gmail.com>

* replace scroll view cursor with should write arg

* fix test

* fix edge case crash

* Issues in admin/avatars (EtherealEngine#5501)

* fix avatar search

* revert package file changes

Co-authored-by: Zulqarnain Hanif <30355034+zulqarnainhanif@users.noreply.github.com>

* Multi-button Combination Input (EtherealEngine#5499)

* remove delta from input schema and implement combination input functionality

* add tests, fix bugs

* Netcode Fix Fixed Tick Bug & No-change Desync (EtherealEngine#5511)

* ignore component changed periodically, send originating userIndex across network

* userIndex per packet instead of per entity

* bump simple git

* Miscellaneous VR bug fixes (EtherealEngine#5512)

* fix xr camera layer, controller and rig bugs

* fix vr button spam crash

* implement feedback

* Fixed bug in rendering private project information in upload modal. (EtherealEngine#5510)

* Improved transport reconnection logic. (EtherealEngine#5515)

Made a lot of event listeners use named functions so that they can be removed on disconnect.

Added *_RECONNECTED message after re-creation of transports.

Saving current displayed gameserver warnings in local state, only clearing if update matches
the currently displayed error, e.g. CHANNEL_RECONNECTED should not clear warning if it's
displaying INSTANCE_DISCONNECTED.

* Bump ethereal version, removed unused react-lottie

* Update Color scheme for Editor (EtherealEngine#5504)

* update editor theme

* change heirarchy node hover color

* update editor color scheme

* update numeric input stepper color

* fix color of various fields and labels

* update toolbar styling and improve purple palette

* update dock tab color in editor

* update styling editor base route

* update create project and uninstall dropdown color scheme

* update editor setting button color scheme

* update editor base route styling

* update styling in editor

* Fixed a bug with minikube client local file loading. (EtherealEngine#5482)

getCachedAsset.ts and scene-parser.ts:parseSceneDataCacheURLS always use cacheDomain for generating URLs. On minikube,
though, when using local storage, the client and server need different addresses. The server needs to use host.minikube.internal
to punch out of minikube to the host machine's localhost, while the client just needs to use localhost (or whatever the local
IP is).

New logic passes the variable 'internal' around, which is initially sourced from whether the instigating API call came internally
(params.provider == null). If true, then it'll use host.minikube.interal:<localStorageProviderPort>, or just host.minikube.internal
if localStorageProviderPort isn't defined.

Fixed a bug in adminLocations fetching that rebrands location_setting to locationSetting, as we do with non-admin locations.

* Update Admin color scheme (EtherealEngine#5516)

* update editor theme

* change heirarchy node hover color

* update editor color scheme

* update numeric input stepper color

* fix color of various fields and labels

* update toolbar styling and improve purple palette

* update dock tab color in editor

* update styling editor base route

* update create project and uninstall dropdown color scheme

* update admin color scheme

* update editor setting button color scheme

* update drawer component to use scss

* update editor base route styling

* update styling in editor

* update admin dashboard color scheme

* fix styling of editor create model

* fix project admin route background color

* update table search button color scheme in different admin routes
remove extra styling

* update bots admin page

* update settings admin page color scheme

* Clean user login (EtherealEngine#5472)

* redesigned confirm email and showed notification after email have sent

* added loading while sending sms or email

* added i18n

Co-authored-by: Josh Field <joshfield999@gmail.com>

* Added cluster autoscaler installation to AWS setup instructions. (EtherealEngine#5527)

* Add new inventory changes

* Fix missing storage key

* inventory view prototype

* inventory slot drag & drop feature

* Merge inventory

* implemet logout for admin system

* implement logout on admin dashboard

* implement filter for user table

* add sorting to tables

* add user role filter

* update graph on admin panel

* fix on change function

* update services and fetching logic

* add dependencies and update date adapter

* redesigned confirm email and showed notification after email have sent

* added loading while sending sms or email

* Dispatch spawnDebugPhysicsObject against key event.

* Sync linear velocity over the network and use it for when updating physics state of remote bodies.

* Update debug physics object generation function to work relative to new model functions logic.

* Rename the velocity member of VelocityComponent to linearVelocity as it represents the linear velocity of the object.

* Add angular velocity to VelocityComponent. And sync it across the network.

* Remove extra logs.

* Revert "Remove extra logs."

This reverts commit 9c26e8d.

* Remove extra logs.

* Fixed a bug with minikube client local file loading.

getCachedAsset.ts always uses cacheDomain for generating URLs. On minikube, though, when using local storage,
the client and server need different addresses. The server needs to use 10.0.2.2 to punch out of minikube to
the host machine's localhost, while the client just needs to use localhost.

New logic assumes that localStorageProvider will be 10.0.2.2, and so alterations to that are done if new parameter
'clientFetch' is explicitly true (defaults to false). scene.class.ts now accepts query parameter clientFetch and passes
it on.

Fixed a bug in adminLocations fetching that rebrands location_setting to locationSettings, as we do with non-admin locations.

* refactored buttons and added auto hide with animation

* improve buttons animation and appearance and checked its functionalities

* enabled all buttons by default and put facetrack to work

* fixed animation issue

* fix rotation

* Changes to initially load gameserver with location

* Temporary changed to current branch

* QAT triggered

* Changed branch name

* Changes to add gameserver-load service

* Added check to verify instance id

* Reverted github QAT action

* Updated UI to handle service response

* Cleanup

* Added logging to check for ip address

* Added logging

* Added payload to service

* Updated variables returned

* Added checks for same ip and added scene id

* Changed .value from use effect dependency

* Added spawn location check based on gameserver name.

* Changed to k8 sdk call

* Removed logging

* Changed pipeline to qat

* Added translations

* Fixed formatting

* Removed kubernetes object check

* Bring nexus dev up to date, remove inventory from dev, prep to move to project

* Smol patches

Co-authored-by: Josh Field <joshfield999@gmail.com>
Co-authored-by: Hamza Mushtaq <hamzamushtaq34@hotmail.com>
Co-authored-by: kimenyikevin <52419102+kimenyikevin@users.noreply.github.com>
Co-authored-by: Zulqarnain Hanif <30355034+zulqarnainhanif@users.noreply.github.com>
Co-authored-by: Hanzla Mateen <hanzlamateen@live.com>
Co-authored-by: Kyle Baran <kbaran@bitscoop.com>
Co-authored-by: Gheric Speiginer <gheric.speiginer@gmail.com>
Co-authored-by: IRANKUNDA Fabrice <58092199+FabriceIRANKUNDA@users.noreply.github.com>
Co-authored-by: dreamworker <metadev26@gmail.com>
Co-authored-by: kimenyi kevin <kimenyikevin@gmail.com>
Co-authored-by: FabriceIRANKUNDA <irankundafabrice8@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant