Log in

View Full Version : of servers, databases, and packet cap-ing...


maaltan
05-14-2004, 04:35 PM
First I will mention that i have never played eqlive because of certain moral issues concerning continous payment plans for games, so I may be a bit nieve on a few of the finer points of EQ.

Also, i have a tendancy to be a bit verbose in my posts so you may want to hire someone to make cliff notes for you if you have a short attention span :)

That being said I do have some bug observations and suggestions for both the server and this site. please to not take any of the following in a negative light even though my tone may seem to take a dark turn. I assure you this is not the case, I feel the EQemu project ,although young , has made great progress in the short time i have been watching it.

First, let me mention a few problem/ bugs in the MW_057DR2... database I have noticed. I started using the 055_a2 database and it worked fine except for the 89plat snake parts:).

I created a new DB and installed the 057. After I did that i sourced the new govtcheese sqls. After i had all the new stuff installed, i copied the character_ and inventory tables using code similar to the following

insert into eq.inventory select * from old_eq.inventory

The first time i logged in the NPC/mobs/monsters whatever you call them were loaded all funny. Some in the middle of the air.. some bouning. some half in floor.. when i moved into and back from the ajacent zone everthing seemed to be fine.

On this server, there are 2 characters, mine and another players. This next problem only seems to affect me. After everything settled down and we were both logged in, I tried sellng something. I decided to check if the snake parts were still good money so i sold one that came from the old db. I clicked sell and nothing happened. i clicked it again and the shop keeper said something to the effect of "whoh only one at a time please". after that i could not select anything.. not target anything, not select anything in inventory, not talk to shopkeeper again, etc. until i restarted the client (everquest). I repeated this with several other items, both new and "legacy", and shopkeepers. I repeat the other player is not experiencing this problem. i noticed that my character has several items in the same "slotid" .. 22 i think whereever that is.


NOW... onward to section 2 of my post. In this section, i will be discussing a couple of bugs that i think can be attributed to the server code. I am using the 5-12-04 release of the source code. I compiled using the "release" setting. the debug setting gives me lots of compile errors.

I have noticed that if both of us zone change at the same time to the same zone, either one or both of us freeze/crash. If one person goes in first and the second person goes in before he is finished loading, the first person crashes and the second person survives. It is sort of like the first person's zoning was aborted. If we go in together, we both freeze/crash. If we take turns, we can both get through.

Another problem, which might be DB related, Is that i get stuck in objects some times. if i get close to a desk or a table my character will crouch. if i jump or continue walking i will get stuck in the table, etc.

Also, for the server it would be nice to have a time stamp on the messages in the zone/world windows. This way, if you notice some small wierdness, you can just make a note of the time instead of quit all the way out to look at the logs before you lose it with the other errors.

If i have the time, i can probaby add it to my source and submit the code so that the developers can add it to release. On that note, it might be useful to put the errors in a txt file or maybe in the database. hmmm thats if i find a LOT of time in the near future.

and for the finale, the last part. My suggestions for the page. First off, there needs to be a centralized location for a lot of information. Namely, a place to download current versions of necessary files to make a server work and a list of faqs, etc. There is about 5-10 tutorials I have found within the forums for setting up a server, some of which is woefully out of date with little clue that its out of date unless you have read the other 4-9.

Also, explainations of the different programs and files mentioned in the forums and on sourceforge would be nice resource to have as a part of the above.

I will be availble for at least the next couple of months to develop relationships, compile info, develop, and maintain this page. I will try to copy the eqemulator.net theme,with your permission, so that either you can host it or you can direct link to it. If anyone is interested let me know through this thread. If it gets going good I will create an email address that I will dedicate for people sending me info/updates for this page.

I may also be interested in at least helping debug various sections of the project, time permitting of course.

On that note I will close this major novella with this thought...
Only the truely knowledgeable know that they know nothing.

animepimp
05-15-2004, 03:02 PM
I have noticed that if both of us zone change at the same time to the same zone, either one or both of us freeze/crash. If one person goes in first and the second person goes in before he is finished loading, the first person crashes and the second person survives. It is sort of like the first person's zoning was aborted. If we go in together, we both freeze/crash. If we take turns, we can both get through.

This is most likely due to your server not having enough processor power to load two characters at once since you are probably running one of the clients on the same server. The client sometimes crashes or LDs when the server lags out while its zoning and having to much running at once can make it take longer than the client can handle.

Another problem, which might be DB related, Is that i get stuck in objects some times. if i get close to a desk or a table my character will crouch. if i jump or continue walking i will get stuck in the table, etc.

This is not related to the server at all. It is a client problem and happens on all types of servers including live.

Also, for the server it would be nice to have a time stamp on the messages in the zone/world windows. This way, if you notice some small wierdness, you can just make a note of the time instead of quit all the way out to look at the logs before you lose it with the other errors.

It would be possible to add this in the server, but it would require editting a lot of the code and would slow the server down significantly because every message would have to check the time and convert it to a readable string which eats up processor time.

maaltan
05-15-2004, 04:16 PM
This is most likely due to your server not having enough processor power to load two characters at once since you are probably running one of the clients on the same server. The client sometimes crashes or LDs when the server lags out while its zoning and having to much running at once can make it take longer than the client can handle.

Hmm interesting. im running on a hyperthreaded p4 3.02 gz machine. The server itself has a very small memory footprint while idle. While the other person is wandering around by himself cpu usage is under 3%. Of course ive been reading how eq is a major resource hog so it might be eating my cpu too much by itself
I'll test your theory when i have a chance. oh, one more thing is the zone server gives an unknown operator 032a i think when a zoneing is "aborted"

It would be possible to add this in the server, but it would require editting a lot of the code and would slow the server down significantly because every message would have to check the time and convert it to a readable string which eats up processor time.

not as much as you might think. unless microsoft decided to make it complicated since studio 6. I believe the function in in the c header "time.h" (c++ header ctime i think). Here is a link to the c code. c++ not that much different as far as i can remember.

http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V50_HTML/ARH9NATE/DOCU_024.HTM

the time it would take to retrieve the time and format it would be insignificant to the time it actually takes to display it in the window. when working with strings, when possible, use pointers when passing them around. performance is 10000x better that way.

plus.. there are not all that many messages even it if did take a long time.

as for editing lots of code. havn't you created an wrapper function for error reporting. It's always in a projects best interest to have a nice repetoire of utility wrapper functions. This allows you to make global changes to a commonly used feature without major revisions. a good rule of thumb is that if a proceedure, etc. is used more than ONCE, move it to its own function so if you decide to change it, you only change it once. not 30+ times.

Next time i think of it and im near my compiler. I'll throw you together some quick and dirty ones. if your interested. some functions im thinking of are like:

void info_report(int severity, char *buf);
severity 1=info 2=warning 3=error 4=fatal error ..etc.
buf .. the description

int ...

well i had others but it is midnight and techsupport is being slow and my brain went to bed an hour ago. laptop has power problems (which is where my compiler is ironicly)
how long does it take to create a trouble ticket .. longer than 45min so far.

maaltan
05-26-2004, 09:47 AM
module mentioned above available here:

http://www.eqemulator.net/forums/viewtopic.php?t=15107