Ravenwolfe

Moderator
Can anyone explain to me what Delta Recursion is? I'm getting a log on my server that I'm not familiar with:

Code:
# 11/18/2013 7:11:09 AM
   at Server.Mobile.Delta(MobileDelta flag)
   at Server.Mobiles.PlayerMobile.Delta(MobileDelta flag)
   at Server.Mobile.GetStatOffset(StatType type)
   at Server.Mobiles.PlayerMobile.get_HitsMax()
   at Server.Network.MobileStatusExtended..ctor(Mobile m, NetState ns)
   at Server.Mobile.ProcessDelta()
   at Server.Mobile.ProcessDeltaQueue()
   at Server.Core.Main(String[] args)
 
 
# 11/19/2013 8:46:32 PM
   at Server.Mobile.Delta(MobileDelta flag)
   at Server.Mobiles.PlayerMobile.Delta(MobileDelta flag)
   at Server.Mobile.GetStatOffset(StatType type)
   at Server.Mobiles.PlayerMobile.get_HitsMax()
   at Server.Network.MobileStatusExtended..ctor(Mobile m, NetState ns)
   at Server.Mobile.ProcessDelta()
   at Server.Mobile.ProcessDeltaQueue()
   at Server.Core.Main(String[] args)
 
 
# 11/20/2013 3:14:07 PM
   at Server.Mobile.Delta(MobileDelta flag)
   at Server.Mobiles.PlayerMobile.Delta(MobileDelta flag)
   at Server.Mobile.GetStatOffset(StatType type)
   at Server.Mobiles.PlayerMobile.get_HitsMax()
   at Server.Network.MobileStatusExtended..ctor(Mobile m, NetState ns)
   at Server.Mobile.ProcessDelta()
   at Server.Mobile.ProcessDeltaQueue()
   at Server.Core.Main(String[] args)
 
 
# 11/22/2013 5:20:43 AM
   at Server.Mobile.Delta(MobileDelta flag)
   at Server.Mobiles.PlayerMobile.Delta(MobileDelta flag)
   at Server.Mobile.GetStatOffset(StatType type)
   at Server.Mobiles.PlayerMobile.get_HitsMax()
   at Server.Network.MobileStatusExtended..ctor(Mobile m, NetState ns)
   at Server.Mobile.ProcessDelta()
   at Server.Mobile.ProcessDeltaQueue()
   at Server.Core.Main(String[] args)
 
If I'm not mistaken the delta has to do with the mobile healthbar updating properly. Going from Healthy, to Poisoned, to Immortal, etc.
 
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.
 
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.
 
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.
 
Back