Applying crowdsourced scientific method to the UI.

Discussion in 'General Discussion' started by Astirian, Jun 4, 2019.

Thread Status:
Not open for further replies.
  1. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    Hello friends,

    I'm trying to see a pattern with these horrific UI resets, so we can help Portalarium make more money by retaining more players. Finding a pattern is difficult but over time maybe one will reveal itself.

    Ignore the first row as I missed 3 days of testing. Also, my tests are becoming more comprehensive over time.

    [​IMG]

    My latest theory is that any given UI window will reset to its (honestly awful and margin-less) default location if it has not been used for over 2 days. I suspect perhaps a player data cache that gets refreshed in AppData somewhere. Who knows.

    The only time this theory doesn't really add up is when I see a reset two days in a row.

    If anyone is keen to run a similar experiment, maybe we can crowdsource some troubleshooting on this?

    P.S: UI windows with pleasing default locations: Character Paper-doll and Puzzle Box. These also reset but I didn't notice because their default positions aren't jarringly squished up into the corners of the screen!!
     
  2. Spoon

    Spoon Avatar

    Messages:
    8,403
    Likes Received:
    23,554
    Trophy Points:
    165
    Gender:
    Male
    Location:
    Sweden
    Haven't tested on that in a long while. But back over a year ago (so pinch of salt etc) there where a couple of reset triggers.
    • patch that affects unity
    • Starting a new character (IIRC this seems to be the case also with multiple slots on the same account)
    • log in one account check UI, then log off and in with some other account, off and back to original account
    • Switching between the steam and client launchers (especially when playing alts)
    There also seemed to be some cache of sorts.
    Back then I tested this, I had four scenes where I had 5 chests. In the first scene I put all the chest UI up in the top-left corner, then zoned to second scene put all chest UI up top-right corner, etc. Going back from the fourth to the first the positions where lost. However when doing the same thing with three scenes it would still 'remember' the UI position from the third to the first.

    Also there is a file where this is saved on the client, which was discussed by some player utility programmers way back. So potentially one could simply check that one to see the diff. Don't know where/how though.
     
  3. Lained

    Lained Avatar

    Messages:
    2,786
    Likes Received:
    4,772
    Trophy Points:
    165
    Location:
    Yeovil, England
    On windows unity saves them to the registry as JSON converted into hex in [HKEY_CURRENT_USER\Software\Portalarium\Shroud of the Avatar] either UIPersist.MoveableWindow_h* or UIPersist.ResizableWindow_h*.

    The format is:
    Code:
       { 
          "HUD.InventoryListUIWindow":{ 
             "p":{ 
                "x":735,
                "y":-519
             }
          }
       },
     
    Jaesun, Spoon and Astirian like this.
  4. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    Nice! So I assume then that these reg keys (for each troublesome element) are getting overridden somehow. (and that the recipe book just doesn't even have one?)

    Epic troubleshooting work guys.
     
    Last edited: Jun 6, 2019
  5. Lained

    Lained Avatar

    Messages:
    2,786
    Likes Received:
    4,772
    Trophy Points:
    165
    Location:
    Yeovil, England
    Recipe Book is in UIPersist.MoveableWindow_h*.

    Code:
    [
      {
        "HUD.Misc.craft": {
          "p": {
            "x": -1400,
            "y": 6
          }
        }
      },
      {
        "HUD.Misc.59cd2d5aabb70305d0c52239": {
          "p": {
            "x": -1400,
            "y": -122
          }
        }
      },
      {
        "HUD.Misc.58c240bdabb75a014029134e": {
          "p": {
            "x": 0,
            "y": 0
          }
        }
      },
      {
        "HUD.Misc.5ab022ebabb7381654a818dd": {
          "p": {
            "x": 0,
            "y": 0
          }
        }
      },
      {
        "HUD.Misc.5ab022e3abb7381654a8176d": {
          "p": {
            "x": 0,
            "y": 0
          }
        }
      },
      {
        "HUD.RecipeBookUI": {
          "p": {
            "x": -21,
            "y": -78
          }
        }
      },
      {
        "HUD.Misc.5a85fccdabb72a0f6c79fea6": {
          "p": {
            "x": 0,
            "y": 0
          }
        }
      },
      {
        "HUD.Misc.5c59dcd33c2b130b54094e2b": {
          "p": {
            "x": 0,
            "y": 0
          }
        }
      },
      {
        "HUD.InteractiveTeleporterLisUIWindow": {
          "p": {
            "x": 10,
            "y": -100
          }
        }
      },
      {
        "HUD.ShopkeeperUIWindow3": {
          "p": {
            "x": 7,
            "y": -99
          }
        }
      },
      {
        "HUD.InventoryListUIWindow": {
          "p": {
            "x": 1409,
            "y": -766
          }
        }
      },
      {
        "HUD.Misc.58061a9aabb73f059803ece7": {
          "p": {
            "x": -749,
            "y": -78
          }
        }
      },
      {
        "HUD.Skills": {
          "p": {
            "x": 0,
            "y": -36
          }
        }
      },
      {
        "HUD.Misc.58061a91abb73f059803ec23": {
          "p": {
            "x": -749,
            "y": -50
          }
        }
      },
      {
        "HUD.Misc.5b37b7afabb78b0df0cb3d98": {
          "p": {
            "x": -715,
            "y": -36
          }
        }
      },
      {
        "HUD.Misc.59cd58ababb70305d0cabd71": {
          "p": {
            "x": -749,
            "y": -111
          }
        }
      },
      {
        "HUD.BankInventoryListUIWindow": {
          "p": {
            "x": 0,
            "y": -105
          }
        }
      },
      {
        "HUD.DeedList4": {
          "p": {
            "x": 0,
            "y": -36
          }
        }
      },
      {
        "HUD.Store": {
          "p": {
            "x": 1,
            "y": 0
          }
        }
      },
      {
        "HUD.Misc.57bce95aabb7a601305e130c": {
          "p": {
            "x": -775,
            "y": -111
          }
        }
      },
      {
        "HUD.Mail": {
          "p": {
            "x": 1,
            "y": -80
          }
        }
      },
      {
        "HUD.Hotbar1": {
          "p": {
            "x": 3,
            "y": 0
          }
        }
      },
      {
        "HUD.Compass": {
          "p": {
            "x": 0,
            "y": 0
          }
        }
      },
      {
        "HUD.LootRollWindow": {
          "p": {
            "x": 0,
            "y": -92
          }
        }
      },
      {
        "HUD.ChatWindow.0": {
          "p": {
            "x": 1,
            "y": 200
          }
        }
      },
      {
        "HUD.Misc.5cf5480d4d97ac0a00fc2e7a": {
          "p": {
            "x": 0,
            "y": -56
          }
        }
      },
      {
        "HUD.RewardsInventoryListUIWindow": {
          "p": {
            "x": 0,
            "y": -152
          }
        }
      },
      {
        "HUD.CharacterSheet2": {
          "p": {
            "x": -142,
            "y": -267
          }
        }
      },
      {
        "DefaultLoot2": {
          "p": {
            "x": -1320,
            "y": -178
          }
        }
      },
      {
        "HUD.Misc.5ab017adabb7381654a643aa": {
          "p": {
            "x": 9,
            "y": -13
          }
        }
      },
      {
        "HUD.SocialListUIWindow": {
          "p": {
            "x": 6,
            "y": -209
          }
        }
      },
      {
        "HUD.PlayersInCurrentScene": {
          "p": {
            "x": 0,
            "y": -36
          }
        }
      }
    ]
    
    Code:
    [
      {
        "HUD.Misc.craft": {
          "p": {
            "x": -1400,
            "y": 6
          },
          "w": 1054,
          "h": 705
        }
      },
      {
        "HUD.Misc.59cd2d5aabb70305d0c52239": {
          "p": {
            "x": -1400,
            "y": -122
          },
          "w": 511,
          "h": 421
        }
      },
      {
        "HUD.Misc.58c240bdabb75a014029134e": {
          "p": {
            "x": 0,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.Misc.5ab022ebabb7381654a818dd": {
          "p": {
            "x": 0,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.Misc.5ab022e3abb7381654a8176d": {
          "p": {
            "x": 0,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.Misc.5a85fccdabb72a0f6c79fea6": {
          "p": {
            "x": 0,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.Misc.5c59dcd33c2b130b54094e2b": {
          "p": {
            "x": 0,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.InteractiveTeleporterLisUIWindow": {
          "p": {
            "x": 10,
            "y": -100
          },
          "w": 343,
          "h": 365
        }
      },
      {
        "HUD.ShopkeeperUIWindow3": {
          "p": {
            "x": 7,
            "y": -99
          },
          "w": 1011,
          "h": 538
        }
      },
      {
        "HUD.InventoryListUIWindow": {
          "p": {
            "x": 1409,
            "y": -766
          },
          "w": 511,
          "h": 261
        }
      },
      {
        "HUD.Misc.58061a9aabb73f059803ece7": {
          "p": {
            "x": -749,
            "y": -78
          },
          "w": 511,
          "h": 478
        }
      },
      {
        "HUD.Misc.58061a91abb73f059803ec23": {
          "p": {
            "x": -749,
            "y": -50
          },
          "w": 511,
          "h": 405
        }
      },
      {
        "HUD.Misc.5b37b7afabb78b0df0cb3d98": {
          "p": {
            "x": -715,
            "y": -36
          },
          "w": 511,
          "h": 330
        }
      },
      {
        "HUD.Misc.59cd58ababb70305d0cabd71": {
          "p": {
            "x": -749,
            "y": -111
          },
          "w": 511,
          "h": 409
        }
      },
      {
        "HUD.BankInventoryListUIWindow": {
          "p": {
            "x": 0,
            "y": -105
          },
          "w": 691,
          "h": 663
        }
      },
      {
        "HUD.DeedList4": {
          "p": {
            "x": 0,
            "y": -36
          },
          "w": 700,
          "h": 354
        }
      },
      {
        "HUD.Misc.57bce95aabb7a601305e130c": {
          "p": {
            "x": -775,
            "y": -111
          },
          "w": 511,
          "h": 426
        }
      },
      {
        "HUD.Mail": {
          "p": {
            "x": 1,
            "y": -80
          },
          "w": 779,
          "h": 689
        }
      },
      {
        "HUD.ChatWindow.0": {
          "p": {
            "x": 1,
            "y": 200
          },
          "w": 795,
          "h": 200
        }
      },
      {
        "HUD.RewardsInventoryListUIWindow": {
          "p": {
            "x": 0,
            "y": -152
          },
          "w": 511,
          "h": 616
        }
      },
      {
        "DefaultLoot2": {
          "p": {
            "x": -1320,
            "y": -178
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.Misc.5ab017adabb7381654a643aa": {
          "p": {
            "x": 9,
            "y": -13
          },
          "w": 511,
          "h": 637
        }
      },
      {
        "HUD.SocialListUIWindow": {
          "p": {
            "x": 6,
            "y": -209
          },
          "w": 343,
          "h": 300
        }
      },
      {
        "HUD.PlayersInCurrentScene": {
          "p": {
            "x": 0,
            "y": -36
          },
          "w": 250,
          "h": 345
        }
      },
      {
        "HUD.PublicVendorUIWindow": {
          "p": {
            "x": 0,
            "y": -85
          },
          "w": 1011,
          "h": 683
        }
      },
      {
        "HUD.VendorManager": {
          "p": {
            "x": 1264,
            "y": -98
          },
          "w": 560,
          "h": 677
        }
      },
      {
        "HUD.Misc.5aef2552abb72a131cb9313e": {
          "p": {
            "x": -675,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.LotList2": {
          "p": {
            "x": 0,
            "y": -60
          },
          "w": 400,
          "h": 300
        }
      },
      {
        "HUD.Misc.5ae3c4f084763411c8a5ce86": {
          "p": {
            "x": -749,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.Misc.5ab017e1abb7381654a64bab": {
          "p": {
            "x": 0,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.Misc.5aef2549abb72a131cb92feb": {
          "p": {
            "x": 0,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      },
      {
        "HUD.Misc.5874b79eabb78517c8ec7d1d": {
          "p": {
            "x": 0,
            "y": 0
          },
          "w": 511,
          "h": 491
        }
      }
    ]
     
    Astirian likes this.
  6. Elwyn

    Elwyn Avatar

    Messages:
    3,617
    Likes Received:
    4,783
    Trophy Points:
    153
    Gender:
    Male
    Location:
    San Antonio, TX
    The registry as One Database to Rule Them All for the OS was a bad idea
    Apps using it as a configuration database is a much worse idea
     
  7. Alley Oop

    Alley Oop Bug Hunter Bug Moderator

    Messages:
    15,679
    Likes Received:
    19,463
    Trophy Points:
    153
    i have noticed that the loot window resizes whenever i open a container within the bank.
     
  8. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    I might set up some watchers on those registry keys, maybe finding out when they change might yield more clues...
     
    Lained likes this.
  9. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    I did a Beyond Compare of the registry entries while playing but the hex means nothing to me. I'll break this down into separate posts for clarity. The hex definitely changes on a new gathering window, as I would expect. For example, on gathering two different nodes:

    [HKEY_CURRENT_USER\Software\Portalarium\Shroud of the Avatar]

    "ProcessIsRunning_h800512595"=hex(3):53,63,65,6E,65,3D,52,61,6E,64,6F,6D,45,\
    6E,63,6F,75,6E,74,65,72,5F,50,6C,61,69,6E,73,30,32,2F,53,74,61,67,5F,44,72,\
    61,67,6F,6E,2C,20,70,6F,73,3D,28,32,36,2E,39,35,35,2C,20,33,32,2E,33,34,37,\
    2C,20,2D,31,35,2E,36,33,37,29,2C,20,50,6C,61,79,65,72,4E,61,6D,65,3D,41,53,\
    54,49,52,49,41,4E,00

    Changes to:

    "ProcessIsRunning_h800512595"=hex(3):53,63,65,6E,65,3D,52,61,6E,64,6F,6D,45,\
    6E,63,6F,75,6E,74,65,72,5F,50,6C,61,69,6E,73,30,32,2F,53,74,61,67,5F,44,72,\
    61,67,6F,6E,2C,20,70,6F,73,3D,28,34,30,2E,32,39,35,2C,20,33,32,2E,38,31,36,\
    2C,20,31,38,2E,39,30,31,29,2C,20,50,6C,61,79,65,72,4E,61,6D,65,3D,41,53,54,\
    49,52,49,41,4E,00

    "UIPersist.MoveableWindow_h88119034" remains the same.
    "UIPersist.ResizableWindow_h3530439004" remains the same.
    "UIPersist.MoveableWindowDialogController_h1076314094" remains the same.


    "UIPersist.PlayerUI_h1580953570" changes from:

    "UIPersist.PlayerUI_h1580953570"=hex(3):5B,7B,22,48,55,44,2E,4D,69,73,63,2E,\
    35,64,31,36,31,62,63,38,30,32,32,30,32,30,33,63,65,65,64,66,39,64,33,30,22,\
    3A,7B,22,73,22,3A,31,7D,7D,5D,00

    To:

    "UIPersist.PlayerUI_h1580953570"=hex(3):5B,7B,22,48,55,44,2E,4D,69,73,63,2E,\
    35,64,31,36,31,62,66,39,30,32,32,30,32,30,33,63,65,65,64,66,39,64,33,31,22,\
    3A,7B,22,73,22,3A,31,7D,7D,5D,00
     
  10. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    Trunk window location and size in the house has reset. No reg changes seen, it has just... Reset.

    These guys change when I move it back to where I want it:

    "UIPersist.MoveableWindow_h88119034"
    "UIPersist.ResizableWindow_h3530439004"

    I could post the hex values but I don't think there's much point at this stage.
     
  11. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    Opened the 2nd trunk in the house. Same deal, it has reset. On moving it, these values have changed:

    "UIPersist.PlayerUI_h1580953570"
    "UIPersist.MoveableWindow_h88119034"
    "UIPersist.ResizableWindow_h3530439004"


    Opening 3rd trunk, not moving or resizing yet:

    "UIPersist.PlayerUI_h1580953570"
    "UIPersist.MoveableWindow_h88119034"
    "UIPersist.ResizableWindow_h3530439004"


    On moving the 3rd trunk window, these guys change:

    "UIPersist.MoveableWindow_h88119034"
    "UIPersist.ResizableWindow_h3530439004"


    So, the thing here is...

    It looks like UIPersist.PlayerUI is the active window. UIPersist.MoveableWindow and UIPersist.ResizableWindow values are written to the directory on instantiation of that particular window? These values change on moving and resizing.

    Lastly, closing any active window sets the UIPersist.PlayerUI value to 0.
     
    Last edited: Jun 29, 2019
  12. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    So it looks like the UI reg settings might just be a scratch pad of sorts? I haven't gotten to UI stuff properly in Unity yet. The values must be getting stored/retrieved somewhere more persistent (the JSON you mentioned @Lained?) but I think it's the storage and/or retrieval method that's flawed.

    It smells like invalid JSON parsing to me...
     
  13. Lained

    Lained Avatar

    Messages:
    2,786
    Likes Received:
    4,772
    Trophy Points:
    165
    Location:
    Yeovil, England
    Scene=RandomEncounter_Plains02/Stag_Dragon, pos=(26.955, 32.347, -15.637), PlayerName=ASTIRIAN
    Scene=RandomEncounter_Plains02/Stag_Dragon, pos=(40.295, 32.816, 18.901), PlayerName=ASTIRIAN
    [{"HUD.Misc.5d161bc80220203ceedf9d30":{"s":1}}]
    [{"HUD.Misc.5d161bf90220203ceedf9d31":{"s":1}}]
    First one is player position, second looks like a HUD UI element got added/remove/renamed.
    https://www.rapidtables.com/convert/number/hex-to-ascii.html
     
    Astirian likes this.
  14. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    So I found that if you take away Full-Control user permissions to that registry key (Computer\HKEY_CURRENT_USER\Software\Portalarium\Shroud of the Avatar) from your Windows account it fixes the problem for that play session. Go right ahead and try it out at home folks! Just maybe remember to export your registry first.

    It breaks a few things, namely the Titles and LFG windows can no longer be dismissed as well as others I possibly haven't discovered.

    But the damn recipe book at least remembers where you last left it.
     
  15. macnlos

    macnlos Avatar

    Messages:
    442
    Likes Received:
    1,310
    Trophy Points:
    43
    I will investigate this for free since the game is free to play. If I solve it I will have to charge Portalarium since it's a premium service.
     
  16. Astirian

    Astirian Avatar

    Messages:
    614
    Likes Received:
    1,494
    Trophy Points:
    93
    So yeah... Still borked as of R68.
     
Thread Status:
Not open for further replies.