Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bug Reports

Development::Bug Reports Post detailed bug reports and what you would like to see next in the emu here.

Reply
 
Thread Tools Display Modes
  #1  
Old 10-23-2008, 10:44 AM
So_1337
Dragon
 
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
Default

Is it possible they were initially aggro'd and just took that long to get to you? I found that even using the new #aggrozone command that it would take a considerable amount of time for all the enemies in a zone to get to me.
Reply With Quote
  #2  
Old 11-01-2008, 07:40 AM
jax0rz
Fire Beetle
 
Join Date: Aug 2008
Location: addf
Posts: 1
Default

From my testing it does seem a lot more stable if you are using a pure melee weapon instead of a proc weapon. My idea for a fix would be if you are calling function Attack via rampage, call TryWeaponProc once and save the calculation's it does for each hand if you are dual wielding. Then just apply that saved proc info on a flat rate based on the players dex until rampage is over. That way you are still proccing, but not spiking the CPU so badly doing the same calculation over and over.

I tried to code this, but I'm not the best coder and it seemed like a lot of work that would be best left to someone more expert with the current eqemu code.
Reply With Quote
  #3  
Old 12-29-2008, 07:13 PM
Loccochris
Fire Beetle
 
Join Date: Aug 2008
Location: nj, usa
Posts: 24
Default

If it is indeed the spell packets over actual proc calc then I wonder if it is possible to check everytime an aoe proc goes off how many mobs are in the area and if its > 10 just don't send the spell packet. Will basically add 1 extra comparison everytime a proc goes off (if proc type = aoe) and then if it is an aoe its going to add more overhead by counting in an area around the player. Depending on where the call to send initial spell packet is it might be easier to just clone PBAOE spells and have a version identical to the other just without a spell effect and if it is a pbaoe proc to switch which version of spell gets cast.
Reply With Quote
  #4  
Old 12-29-2008, 07:33 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

While the large amount of traffic being generated by AEing is definitely a concern, I don't think that is the actual cause of this issue. I think the problem is the server calculating it all at once. I think it gets so involved in the process of calculating the AE spells and hits and updates that it waits to long in between sending a keep alive to the client to keep them from crashing. At least that is my understanding of what AndMetal found.

Though, your idea is probably a good one to use anyway, because it would at least cut down on some unneeded bandwidth usage during AE.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #5  
Old 12-31-2008, 05:54 AM
Loccochris
Fire Beetle
 
Join Date: Aug 2008
Location: nj, usa
Posts: 24
Default

Quote:
While the large amount of traffic being generated by AEing is definitely a concern, I don't think that is the actual cause of this issue. I think the problem is the server calculating it all at once. I think it gets so involved in the process of calculating the AE spells and hits and updates that it waits to long in between sending a keep alive to the client to keep them from crashing. At least that is my understanding of what AndMetal found.

Though, your idea is probably a good one to use anyway, because it would at least cut down on some unneeded bandwidth usage during AE.
Hmm, I would think that the communication from server to client is threaded separately so it should have a chance at processor/nic card. There might be an issue where if they are in the same thread the calcs would prevent position updates (plus rest of packets needed to keep you in game) from happening. Would require threading specific parts of the packet lib that ONLY deal with keeping a player connected to its own dedicated thread.

If that is the problem threading it would probably also end up fixing all the LD's from zoning or multi boxing as a nice side effect. Of course finding the source and fixing it is not going to be easy, have to dig pretty deep in packet libs and pray the coder wrote good comments lol.
Reply With Quote
  #6  
Old 12-31-2008, 06:31 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

The problem is it completely lags the main thread. While outgoing and incoming communication have their own threads the main thread still decides when we queue a new outbound position packet. People noticed that aoe with addition spell effects attached make the problem worse which might be that it's more work than attacks, tho not by much but also that for each spell effect it adds extra packets that then need to be sent out. And things like basic packets the client needs to stay connected are already lagged because the main thread is lagging.

Since position packets etc. aren't part of the base protocol they aren't automatically handled in those threads like ACK and disconnect/connect packets for example. Keep alive packets are part of the base protocol but I'm guessing the client expects more info from the server than the base keep alive packet to maintain connection. That is basically the problem. We could spawn another thread for just AoE calculations but that doesn't seem like a very elegant solution.
Reply With Quote
  #7  
Old 12-31-2008, 04:13 PM
Kobaz
Hill Giant
 
Join Date: Nov 2008
Location: Gold Coast, Oz
Posts: 119
Default

OK, I haven't looked at the code in question (and C++ confuses me), but back in my youth when I wrote ecological sims in Smalltalk we would cache all but the random variations on affects upon agents in a Dictionary, which is a lot like a STL map. This could save thousands of calculations. Could this be done, using a key like npc_type*100 + level, so for each level 25 kobold you only need to calculate a random(-5,5) or equivalent for each mob, rather than the whole sum for each mob and each iteration?
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 10:07 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3