1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Delta Recursion

Discussion in 'ServUO Discussion' started by Ravenwolfe, Nov 27, 2013.

  1. Ravenwolfe
    Offline

    Moderator ServUO Developer

    Joined:
    Sep 7, 2013
    Messages:
    1,103
    Likes Received:
    117
    Can anyone explain to me what Delta Recursion is? I'm getting a log on my server that I'm not familiar with:

    Code (C#):
    1. # 11/18/2013 7:11:09 AM
    2.    at Server.Mobile.Delta(MobileDelta flag)
    3.    at Server.Mobiles.PlayerMobile.Delta(MobileDelta flag)
    4.    at Server.Mobile.GetStatOffset(StatType type)
    5.    at Server.Mobiles.PlayerMobile.get_HitsMax()
    6.    at Server.Network.MobileStatusExtended..ctor(Mobile m, NetState ns)
    7.    at Server.Mobile.ProcessDelta()
    8.    at Server.Mobile.ProcessDeltaQueue()
    9.    at Server.Core.Main(String[] args)
    10.  
    11.  
    12. # 11/19/2013 8:46:32 PM
    13.    at Server.Mobile.Delta(MobileDelta flag)
    14.    at Server.Mobiles.PlayerMobile.Delta(MobileDelta flag)
    15.    at Server.Mobile.GetStatOffset(StatType type)
    16.    at Server.Mobiles.PlayerMobile.get_HitsMax()
    17.    at Server.Network.MobileStatusExtended..ctor(Mobile m, NetState ns)
    18.    at Server.Mobile.ProcessDelta()
    19.    at Server.Mobile.ProcessDeltaQueue()
    20.    at Server.Core.Main(String[] args)
    21.  
    22.  
    23. # 11/20/2013 3:14:07 PM
    24.    at Server.Mobile.Delta(MobileDelta flag)
    25.    at Server.Mobiles.PlayerMobile.Delta(MobileDelta flag)
    26.    at Server.Mobile.GetStatOffset(StatType type)
    27.    at Server.Mobiles.PlayerMobile.get_HitsMax()
    28.    at Server.Network.MobileStatusExtended..ctor(Mobile m, NetState ns)
    29.    at Server.Mobile.ProcessDelta()
    30.    at Server.Mobile.ProcessDeltaQueue()
    31.    at Server.Core.Main(String[] args)
    32.  
    33.  
    34. # 11/22/2013 5:20:43 AM
    35.    at Server.Mobile.Delta(MobileDelta flag)
    36.    at Server.Mobiles.PlayerMobile.Delta(MobileDelta flag)
    37.    at Server.Mobile.GetStatOffset(StatType type)
    38.    at Server.Mobiles.PlayerMobile.get_HitsMax()
    39.    at Server.Network.MobileStatusExtended..ctor(Mobile m, NetState ns)
    40.    at Server.Mobile.ProcessDelta()
    41.    at Server.Mobile.ProcessDeltaQueue()
    42.    at Server.Core.Main(String[] args)
     
  2. tass23
    Offline

    Moderator

    Joined:
    Aug 28, 2013
    Messages:
    1,010
    Likes Received:
    131
    If I'm not mistaken the delta has to do with the mobile healthbar updating properly. Going from Healthy, to Poisoned, to Immortal, etc.
     
  3. Insanity
    Offline

    Insanity Active Member

    Joined:
    Mar 2, 2013
    Messages:
    276
    Likes Received:
    61
    What log file is this from?
     
  4. Ravenwolfe
    Offline

    Moderator ServUO Developer

    Joined:
    Sep 7, 2013
    Messages:
    1,103
    Likes Received:
    117
    It shows up as delta-recursion.log in the main directory of servuo.
     
  5. Vorspire
    Offline

    Vorspire Vita-Nex: Core
    Admin ServUO Developer

    Joined:
    Jul 29, 2013
    Messages:
    852
    Likes Received:
    157
    Delta is the update process by which items or mobiles are notified that they must be updated in the client, by sending packets specific to the delta flags that have been updated.
    This can be anything from Name to Location and everything in between.

    Delta recursion isn't harmful, but it can be optimized; the idea behind logging delta recursion is simply to identify what delta updates cause delta updates - things like skill and stat mods do this most often.

    A delta recursion is basically when the item or mobile tries to perform a delta update while it's already performing a delta update and is therefore logged to be inspected and corrected if needed.
     
  6. Ravenwolfe
    Offline

    Moderator ServUO Developer

    Joined:
    Sep 7, 2013
    Messages:
    1,103
    Likes Received:
    117
    Cool! So i have noticed two things that are odd. One is that I sometimes get a client crash when I use my staff orb to switch from player to owner. The other is when I switched accounts from my owner account to my player account, sometimes my player account will have a yellow health bar like my Owner character does. Do you think either of these have to do with my delta recursion log giving the errors? Only reason I ask is the delta recursion is logging the playermobile hitsmax as the error.
     
  7. Vorspire
    Offline

    Vorspire Vita-Nex: Core
    Admin ServUO Developer

    Joined:
    Jul 29, 2013
    Messages:
    852
    Likes Received:
    157
    Your problems with client crashes will probably be related to the server sending out packets much faster than normal due to the new implementation of Parallel Tasks, particularly in the Mobile.SendEverything method.

    I believe Mark removed that Parallelization since ServUO was merged with RunUO 2.3 updates, so it will most likely be required that it is also removed from the ServUO source, which will hopefully happen in the near future with a new publish.

    Recursion during Delta processing has probably been around since RunUO began, but Mark's recent updates in RunUO 2.3 added Delta Recursion checking and logging to enable himself and others to optimize their servers by cleaning them up.
     
    • Like Like x 1
    • Informative Informative x 1
  8. Ravenwolfe
    Offline

    Moderator ServUO Developer

    Joined:
    Sep 7, 2013
    Messages:
    1,103
    Likes Received:
    117