Combat Revamp Discussion

EQ2Emulator Development forum.

Moderator: Team Members

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Combat Revamp Discussion

Post by Jabantiz » Sun Jul 29, 2012 5:28 pm

I put combat back in its own thread on my server and noticed a few issues, it was laggy at times but not as bad as it was, and the spawns I killed vanished right away, didn't even have a chance to start the death animation. The combat calls require the use of spawn_list wich is a MutexList so not sure if that is the cause of the lag when on a diffrent thread. My server (Silent Destiny) is running the combat on a seprate thread, so far I like the performance on EQ2TC better, still needs a lot of stress testing in my opinon though.

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Combat Revamp Discussion

Post by Jabantiz » Sun Jul 29, 2012 9:40 pm

I spent about an hour tonight with 5 clients logged into EQ2TC, all DoV, and had them all kill there own stuff (it is hard to actually play 5 clients at a time) and had pretty much no lag, what there was is probably the result of 5 DoV clients on max settings running on the same comp. There was no dealy in casting spells/combat arts and I was able to loot more often then I was not. I did notice that it seems when a kos mob aggro's you before you attack them you are almost never able to loot them. I tested with some range attacks as well and was still able to loot more often then not, I was using thrown weapons though not a bow.

It appears to be more stable then before but would still like to see this tested with more clients, also with people spamming skills wich I wasn't able to do to well swapping back and forth through windows making sure every one was attacking something.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Combat Revamp Discussion

Post by John Adams » Mon Jul 30, 2012 10:07 am

Since getting players to help is probably never going to happen, I suggest we wait til this weekend (Fri/Sat) and get all devs on EQ2TC with at least 2 clients - I can probably get 6, seeing how I have 3 workstations with 2 clients each). We could get up to 12 running at once that way, and go to The Ruins, aka spammiest combat zone in the galaxy.

I need Scatman to convince me that Combat being on the zoneserver thread is a moot concern, because if it works better, we should leave it there - unless the combat causes that thread to crash - and the whole world collapses.

I want fewer total failures, at the expense of performance. We are just an emulator, after all.

User avatar
Zcoretri
Team Member
Posts: 1642
Joined: Fri Jul 27, 2007 12:55 pm
Location: SoCal

Re: Combat Revamp Discussion

Post by Zcoretri » Mon Jul 30, 2012 11:02 am

Lets hammer that bitch :mrgreen: ... dev stress test, haha

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Combat Revamp Discussion

Post by John Adams » Mon Jul 30, 2012 2:44 pm

Jabantiz wrote:I did notice that it seems when a kos mob aggro's you before you attack them you are almost never able to loot them. I tested with some range attacks as well and was still able to loot more often then not, I was using thrown weapons though not a bow.
There is definitely something to this. I was just on EQ2TC with a bow only, and everything I 1-shotted I was able to loot. But if the arrow aggro'd (riposte), they came running and the swords came out before the bow's delay expired, and I cannot loot.

I think we're onto something.

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Combat Revamp Discussion

Post by Jabantiz » Mon Jul 30, 2012 3:21 pm

I left my 5 clients connected all night, I was expecting at least one to crash like they were before but when I got up this morning they were all still connected. I am going to play around with getting combat more stable on its own thread, might end up replacing MutexList<Spawn*> with a vector<Spawn*>, will see if there is something else I can do first though.

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Combat Revamp Discussion

Post by Jabantiz » Mon Jul 30, 2012 7:50 pm

Jabantiz wrote:...spawns I killed vanished right away, didn't even have a chance to start the death animation.
After adding a bunch of debug logging I determined that the spawns vanishing were mostly spawns with loot, again this is putting combat back on its own thread. There is also a random crash that I have only ever seen when combat is on its own thread. So far I have been unable to get it to work as good as it does when it is on the main zone thread, may have something to do with the fact that the spawn_list is used on all threads the zone uses (2 always running, 3 if you add combat to its own).

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Combat Revamp Discussion

Post by John Adams » Tue Jul 31, 2012 7:04 am

Jab, if you think Combat is far more stable in the zoneserver thread, we can leave it there for now and commit the code, then do extensive testing to make sure we know what the pitfalls are (crashing threads breaking entire zones or worlds). Again, since this is just an "emulator", I doubt anyone will have 100's of players or raiding going on - considering the non-existence of players in our little project.

We can always enhance it later if we need to. I don't want to take any more of your valuable time trying to make threaded combat work if it simply is not going to with the current system. Your call tho, whatever you want to do.

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Combat Revamp Discussion

Post by Jabantiz » Wed Aug 01, 2012 1:27 pm

I finally got combat working well on its own thread again, the source of the problem was a MutexMap...

After going through replacing it with a normal map and adding locks and adjusting code for a map it is working rather well but haven't been able to do any extensive tests like I was before yet. Will do some more tests later today before I commit the code.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Combat Revamp Discussion

Post by John Adams » Wed Aug 01, 2012 1:39 pm

If it isn't crashing, go ahead and commit to Dev SVN (public update is turned off for now) so I can grab it and get it on EQ2TC. We can do mass logins again tonight when I get home.

I can probably run another 3-6 clients if I had to. Might try it to see how my workstations hold up just to see if I can run 12 EQ2 Clients off 3 computers :D

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Combat Revamp Discussion

Post by Jabantiz » Wed Aug 01, 2012 2:18 pm

I have not been able to get it to crash in my limited tests, I commited it as well as various other fixes I have been working on.

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Combat Revamp Discussion

Post by Jabantiz » Thu Aug 02, 2012 12:18 am

It looks like the zone ruins on EQ2TC has froze or deadlocked. I am posting it here because it is similar to the situation before the changes to combat, I can't do crap but my client is maintaining the connection, I was able to log in another char in a diffrent zone and that client is not effected. The first char can also see the guild chat from the second. All I did was log in check traits then left the char sitting there, same spot I was at before for at least an hour with no problems.

EDIT: Looks like the same thing happened to queens colony when I went to log that char off, again left the char afk and had the char in that zone earlier with no problems. The only thing I can think of that changed from then to now is the traits data but this doesn't happen on my server so no clue...
Last edited by Jabantiz on Thu Aug 02, 2012 1:00 am, edited 1 time in total.
Reason: more info

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Combat Revamp Discussion

Post by John Adams » Thu Aug 02, 2012 8:40 am

Let's re-test this today (or soon), because I found some of my "tier" info was still set to 0 (thanks, Zcoretri). I have fixed that on DB Patcher, so you should all have proper Traits-related spell data now. If not, let me know.

I will wait to run that other update on race < 255 for Innate until you say it's 100% sure.

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Combat Revamp Discussion

Post by Jabantiz » Thu Aug 02, 2012 7:57 pm

I have not been able to reproduce the issues on EQ2TC again, however It does look like I got booted back out to login, not sure if the zone crashed or what, was able to log back in just fine though.

EDIT: This happened again as I was running around the zone, found some corpses of guards that looked like they were staying longer then they should, clicked on one and got booted to login (not sure if that was the cause or not). I was able to log right back in with no problems, it looked like the zone remained active so was probably a crash in the client process that is booting me, that is my best guess at this point at least.

EDIT 2: Finally got EQ2TC zone to freeze/dead lock, I was running around the zone saw guards and orcs kind of frozen in combat, tried a /who all and it worked went up to the orc and tried to attack and I got flagged as in combat but nothing after that, tried /who again and it didn't work. Tried to /zone another char into the zone and hangs at logging into zone server so it has to be the zone deadlocking.

I noticed odd behavior when I fought an orc with /invul 1, had that set last night as well, the zone also didn't appear to deadlock until the player engaged in combat even though it looked like combat was frozen, don't remember if I tried to fight last night or used /kill when it happened the first time in ruins, in QC I only noticed it when I did attack a mob.
Last edited by Jabantiz on Thu Aug 02, 2012 9:45 pm, edited 2 times in total.
Reason: More info

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Combat Revamp Discussion

Post by John Adams » Fri Aug 03, 2012 6:49 am

Few things; first off, great reporting. If you add the time which you think these things are happening, we can correlate them to the log better. For your booted issue, I think this is when that happened:
20:07:55 D GSpawn: No item_harvested
20:08:42 E LUA: Error loading cannot open : Invalid argument (file name: '')
20:08:42 E LUA: Error LUA Spawn Script ''
20:08:42 E Zone: Exception caught when in ZoneServer::ClientProcess() for zone 'Ruins'!
ZoneServer::ClientProcess, 2152
20:08:42 I Zone: Scheduling client 'Jabantiz' for removal.
When you are /invul 1, the attack animations stop. Not sure why, or when that started, but that may be a bug. I seem to remember using /invul 1 and attacking dragons in the past who still breathed their fire on me.

Last, yes... EQ2TC is hung, 2 clients 1 zone active. No debug, no deadlock messages, nothing. This is the root issue we're having, whether it be caused by combat, scripting or something else, THIS is the thing that is bringing me the most hate. If you can fix that, you're a god.

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests