decentraland / unity-explorer

Apache License 2.0
6 stars 6 forks source link

[QA] It's not possible to change places with /goto or map after several teleports #1193

Open anicalbano opened 1 month ago

anicalbano commented 1 month ago

Explorer Alpha build version:

0.3.463-gf5b67b0c-main

Issue Description:

After making several jumps through scenes, at certain point it's not possible to teleport anymore via /goto or using the map. If we are stuck on a place and move to other, the client will load, take a while on 92% and when everything loads again, the position is the same, without being teleported.

In other cases, the loading bar progresses as expected, bu the avatar stays in the same coordinates, withou teleporting to Genesis Plaza.

Repro steps are yet to be defined, but these are the tentative ones:

Steps to reproduce:

  1. On genesis plaza, start moving locations
  2. Use /goto or the coordinates on the map

After a few attempts, the issue should appear.

Evidence:

Player.log

Additional Notes:

popuz commented 1 month ago

From my playtest it seems to be related to #1181. After some time, I am starting getting partitioning errors and that is when teleportation stops working


IndexOutOfRangeException: Index was outside the bounds of the array.
Arch.LowLevel.Jagged.JaggedArray`1[T].Add (System.Int32 index, T& item) (at <7bb4cf50d14c4e7ca1f7dd19b34ab139>:0)
Arch.Core.EntityInfoStorage.Add (System.Int32 id, System.Int32 version, Arch.Core.Archetype archetype, Arch.Core.Slot slot) (at <8704400f3ef34475945ffb62bfb102d6>:0)
Arch.Core.World.Create[T0] (T0& t0Component) (at <8704400f3ef34475945ffb62bfb102d6>:0)
ECS.SceneLifeCycle.IncreasingRadius.LoadPointersByIncreasingRadiusSystem.ResolveActivePromise (ECS.SceneLifeCycle.Components.VolatileScenePointers& volatileScenePointers, ECS.SceneLifeCycle.Components.ProcessedScenePointers& processedScenePointers) (at Assets/Scripts/ECS/SceneLifeCycle/IncreasingRadius/LoadPointersByIncreasingRadiusSystem.cs:162)
ECS.SceneLifeCycle.IncreasingRadius.LoadPointersByIncreasingRadiusSystem.ResolveActivePromiseQuery (Arch.Core.World world) (at Arch.System.SourceGenerator/Arch.System.SourceGenerator.QueryGenerator/LoadPointersByIncreasingRadiusSystem.ResolveActivePromise(ref VolatileScenePointers, ref ProcessedScenePointers).g.cs:35)
ECS.SceneLifeCycle.IncreasingRadius.LoadPointersByIncreasingRadiusSystem.Update (System.Single t) (at Assets/Scripts/ECS/SceneLifeCycle/IncreasingRadius/LoadPointersByIncreasingRadiusSystem.cs:63)
IndexOutOfRangeException: Index was outside the bounds of the array.
Arch.LowLevel.Jagged.JaggedArray`1[T].get_Item (System.Int32 i) (at <7bb4cf50d14c4e7ca1f7dd19b34ab139>:0)
Arch.Core.EntityInfoStorage.GetArchetype (System.Int32 id) (at <8704400f3ef34475945ffb62bfb102d6>:0)
Arch.Core.World.Add[T] (Arch.Core.Entity entity, Arch.Core.Archetype& newArchetype, Arch.Core.Slot& slot) (at <8704400f3ef34475945ffb62bfb102d6>:0)
Arch.Core.World.Add[T] (Arch.Core.Entity entity, T& component) (at <8704400f3ef34475945ffb62bfb102d6>:0)
ECS.SceneLifeCycle.Systems.PartitionSceneEntitiesSystem.PartitionNewEntity (Arch.Core.Entity& entity, ECS.SceneLifeCycle.SceneDefinition.SceneDefinitionComponent& definition) (at Assets/Scripts/ECS/SceneLifeCycle/Systems/PartitionSceneEntitiesSystem.cs:111)
ECS.SceneLifeCycle.Systems.PartitionSceneEntitiesSystem.PartitionNewEntityQuery (Arch.Core.World world) (at Arch.System.SourceGenerator/Arch.System.SourceGenerator.QueryGenerator/PartitionSceneEntitiesSystem.PartitionNewEntity(in Entity, ref SceneDefinitionComponent).g.cs:35)
ECS.SceneLifeCycle.Systems.PartitionSceneEntitiesSystem.Update (System.Single t) (at Assets/Scripts/ECS/SceneLifeCycle/Systems/PartitionSceneEntitiesSystem.cs:87)
ECS.Abstract.BaseUnityLoopSystem.Update (System.Single& t) (at Assets/Scripts/ECS/Abstract/BaseUnityLoopSystem.cs:29)
Rethrow as EcsSystemException: [SCENE_LOADING]: [PartitionSceneEntitiesSystem]
ECS.Abstract.BaseUnityLoopSystem.Update (System.Single& t) (at Assets/Scripts/ECS/Abstract/BaseUnityLoopSystem.cs:35)