PDA

View Full Version : New Client



Seaxouri
11-16-2006, 09:06 AM
I am working on a client update, and will probably post a beta here for some folks to try before I release it.

I wanted to know what other things to look at that I may have missed.

So far I have fixed:
- Maps now load the _1, _2 and _3 settings all at once, so we can use the maps from mapfiend.net as is.
- Using the scale and other fields at the bottom of the map now update the map when changed.
- Reworked the entire con Color formula so it works with the new values. We now have gray, and everything lines up with what you see in-game.
- Changed version to 1.20.

bobster
11-16-2006, 07:20 PM
Great news !
There's always the "TODO" list to look at. As added there :
* Thin spawnlist (most columns in client spawnlist are not used)
and possibly:
* Spawn Points - Save
and with all these new zones and mobs out there :
* Add Spawn to Alert file using right click menu item.

Would love to test the beta =)

Seaxouri
11-20-2006, 01:16 PM
Y'all have to stay tuned here for this one. I wound up overhauling the client. I have done a lot and plan to do more. There was a lot of ugly code in there and I just couldn't let it be.

The con color system was not as simple as it seems. After running several tests, filling out a new con color matrix and testing several formulas, I have established a new con color system that should work well.

I have fixed numerous bugs with logging. There are several places where we were allocating resources totally unnecessarily. I am also changing a lot of Options. The code was just far too bloated, and the level of granularity of options was ridiculous. By simplifying a lot of options, I was able to remove hundreds of lines of cut/paste code (and I would doubt anyone used those options anyhow). I also have changed the colors that are used.

Unfortunately, as I wander thru the code, I see more places where there are bad coding practices, and I feel the need to rewrite that piece. The reason is that, I feel in order for this project to live past me, the code needs to be written as simply and cleanly as possible. Noone is going to want to pick this project up with so much crap and bloat in there. If the code is clean and tight, it is much easier to maintain. If it is filled with fat, ugly, useless options, people are not going to want to touch it. I have a feeling a lot of the cut/paste mentality that I see in this code probably came from Mr Doh and his friends, and there are reasons for my thinking this. Someone needs to read a few books on efficient coding practices. A lot of this code is embarrassing to say the very least.

Its hard to say when I feel it will be ready, especially with the holiday coming up and I have to leave town for a few days. Of course it won't be two years like some other folks we know. My hope is to drop a beta within a week or so. It will require some new config files.

I will probably not be working on options that are not used a lot. For example, the whole right-click to quickly add an alert thing is silly, imho. I personally have used the alert tool on a few occasions. It takes seconds to type in a name to the alert file, and we open the file for you. For the amount of effort it would be to add that feature to the code, it seems like it would hardly ever get used (and if it were to be used on a regular basis, it would only be by a very few number of people). For anyone who needs to use the temporary Quick-Find feature, that is what the little box in the lower right corner is for. Type in a partial name there and press Enter to highlight the mobs in the map.

Thin Spawnlist I might do, because I am all about making the tool snappier. A lot of the crap in the spawnlist is totally useless from a listbox perspective.

PS: I also have a new server which fixes the problem of partial spawn lists after a hover (or, as it turns out, a shroud).

Seaxouri
11-29-2006, 11:53 AM
It will be a little longer yet. I spent a good bit of time on the client before the holidays. Then a tree fell on my house and I had to leave town for vacation. I just got back in town yesterday.

I have totally reworked the code that updates the spawn list listbox. Thinlist now seems to work. Also, the code is now a *lot* more efficient than it was for updating the listbox before. Currently Alerts and Spawn Timers do not work and need to be updated.

I have changed Logging drastically. There are only 4 levels now: Off, Errors, Warning and Debug. I also removed all of the function wrapper debug messages. They were tagged as 'Trace' items. This sort of thing is redundant if your exception messages are worded properly. It is also stupid to put the word 'Error' in your exception text, and then throw an Error type exception. The cleaner way to do it is have the Logger pre-pend 'Error/Warning/Debug' to the message text before logging it.

I have fixed a lot of problems with preferences.

Several other things. More later.

Seaxouri
12-02-2006, 01:59 AM
Alerts now work.

I fixed a major bug in the hash table area. This, I am sure, is what caused some folks to see popups on occasion while changing zone and having the mouse moving over the graphics area. You can recreate this problem by mashing the F2 button over and over again while using the mouse wheel to zoom in and out of the screen. Within a few seconds you should see a popup.

I added an FPS counter for kicks. I also added one to the v1.19 so I could compare them. Right now, the maximum speed I have seen rendering NOTHING on my fast system is around 43 FPS. I just wanted to see what a typical ceiling might be. Also note that when rendering nothing, we use less than 5% of the CPU.

On my test system, in an apples-to-apples test. I see v1.19 running at 6-6.5 fps. This is with color maps, in PoK with 400ish spawns to draw. CPU usage is around 85%-95%, with the refresh time set to 1msec (normal is 250msec). The same settings on v1.20 so far run at 8-8.5fps with around 60%-80% CPU usage.

Basically I optimized the hell out of the spawnlist and the alerts. I have a few ideas how to optimize the map rendering as well. I still need to get spawn timers working how I want them to work also.

More to come.

kunark
12-02-2006, 08:37 PM
sounds like its going to HUMMMMMMMM and be very sweet.

I seen in ur first post about the maps loading all 3 at once, if possible a way to only turn on lables on just one map would be great ( as some form mapfiend have lables on all 3 layers, having 3 sets up at once would be a pain ) so to be able to choose which map lables to use button or w/e, i have no idea whats envoled in coding it or if it can even be done.

I also vote for right click add spawn to alert list, but i remember reading somewhere you said dont use it or like it, but if poss. you have my vote.

Spawn list i agree with less is more, all i think is needed is name and lvl or mob, maybe time of spawn for camps like the dreaded SK stupid pain in the ars mage cloak i still havent gotten in 8 months lol.

Anyway I for one thank you for working and keeping this alive. If I was able or smart enough ( as in only programing i know is old school basic, fortran, cobal etc ) I would love to help, but this old dawg too old to learn new tricks lol.

Keep up the great work and THNX.

Seaxouri
12-04-2006, 09:56 AM
As for the map layers, I don't think giving options is the right solution. I would rather make the tool smarter and give people less options. Giving people a new option for every little thing only causes more usage problems.

I use two map sets, Sony's and Mapfiend's. I have not come across overlap when using one of the two. Can you give me an example of where there is label overlap?

If there is sufficient reason to add more smarts for this, I would probably do it by keeping track of labels added and not add them more than once. For example, if there were a label "Joe's Tavern" in file Zone_2.txt, and a label "Joe's Tavern" in file Zone_3.txt, then I could add smarts where it would not draw both of these (since the x,y coords may be slightly different).

Any other suggestions where I might be able to intelligently apply or not apply a label are welcome. This is what I am thinking right now:

It appears that mapfiend's maps have most, if not all, labels in layer 2. Here is a list of some of those entries from Crescent Reach:



P 1131, 461, -140, 0, 0, 0, 3, Spells_&_Guild_Masters_(All)
P 1453, 1262, -91, 0, 0, 0, 2, soulbinder
P 1596, 1422, 30, 0, 0, 0, 2, Naeema_(alchemy)
P 2798, 1103, -101, 0, 240, 0, 3, To_Goru`kar_Mesa
P 2085, 909, -164, 0, 0, 0, 1, Guildmasters


It appears the numbers are X,Y,Z,R,G,B,L,T where L=Layer and T is the text to display. What I could probably do is, depending on the Zoom level, display labels from just Layer 1, 1 and 2, or 1, 2 and 3 (if the person was zoomed way in). I could also probably discover how cluttered the text would appear at any zoom level, and only display labels that wont clutter.

I personally *hate* the in-game map with the 1/2/3 buttons. I think it is a lazy solution. I much prefer the google maps approach where more detail is automatically displayed as you zoom in... and I don't think it is that much more coding to add something like that. It's actually more complicated to give people options, and harder to maintain down the road.

A fellow programmer once told me, K.I.S.S., which stands for 'Keep It Simple, Stupid'. Good advice when programming user interfaces. Most people are fairly simple when it comes to computers. Imagine if your car dashboard looked like that of an airplane cockpit. Most people probably would not be able to drive in that case. So I am all about less options, more smarts... within reason. The other part of the equation is that the last 10% of automation consumes 90% of the coding effort. In other words, you can automate 90% of anything with relatively simple code. The last 10% needs to be available to the user as options. A good example would be if I were to make MySEQ try and do *everything* automatically. It would have to scan the network looking for running servers, then once they were running, automatically zoom in and track the player, automatically adjusting zoom/pan as you walked around the zone. It would also check for CPU usage and auto lower details accordingly. Doing all this is very code intensive, and much better left to the user as options. However, leaving *everything* to options makes the user interface look like an airplane cockpit, which is just as bad.

FWIW, I have added the ability to attach multiple clients/servers. You still need a client and server running for each instance of EQ, but the server will detect all running EQs and pass a list back to the client. The client then can pick which instance it wants to monitor. The server will auto-bump its port number if the port is in use, so you can run 5 instances of the server from the same folder before it won't run anymore. You will need to point each client to a unique server, and then pick the EQ instance you want to monitor. I think I can add some more smarts such that once you do it once, it will remember and try and smart-attach the next time.

purple
12-04-2006, 02:50 PM
Your "L" is the font size. The layer is determined by the file name.

Seaxouri
12-04-2006, 05:35 PM
I would imagine the larger the font, the more important of a label it is. I can probably use that along with the clutter logic to display the labels in a nice fashion.

Iforgot
12-05-2006, 01:39 PM
Two features that would really make this rock more (yes it is aready awesome) are:

1. Allow a configureable height filter (not the default you get with F3 currently)

2. Save the spawn timer data so we don't have to kill a place holder twice before the timer kicks in. This way after killing a single mob the PH timer wil already know that that spot respawns in X number of minutes.

joethemaster
12-05-2006, 04:31 PM
I would recommend that you make the con color ranges an additional file if possible that way the next time they increase the levels you can modify just that section to read in color and ranges (if possible of course). That way the entire client does not need upgraded just an ini file or something.

Morgus
12-05-2006, 10:05 PM
i featiure i would like would be an easy way to mark mobs in new zones as "rare", "caution" or "hunt"


ps if this is easy to do now some one care to remedy my ignorance :/

bobster
12-06-2006, 08:07 AM
to add new "rare", "caution" or "hunt", hit F7 (or rightclick ->alert-> add/edit zone alerts.
In the file that opens, enter mob name under which category you want. close/save.
finito

Bobster

Seaxouri
12-06-2006, 08:28 AM
i featiure i would like would be an easy way to mark mobs in new zones as "rare", "caution" or "hunt"


ps if this is easy to do now some one care to remedy my ignorance :/Yes, it's basically;

1) Press F7 to open zone specific file in Notepad
2) Add desired name or partial name
3) Save and Closed Notepad
4) Press F6 to reload the file you just changed
It takes all of 10 seconds to add one.

Other things you can do are:
1) Type partial name in 'Lookup' field in lower right corner
2) Press Return
3) Matched spawns will highlight and blink
This is sort of like a temporary Alert.

Another thing you can do is push Shift-LeftClick on the map to mark a dashed-line to any point on the map. Not sure how useful this is, but I found it in my travels.

kunark
12-07-2006, 02:20 PM
ive been checking some lables in the maps, and i see why some have 2 and 3 copies of the same names etc, layer 1 will have a few from sony, layer 3 from mapfiend, and now the layer 2 from mapfiend, i mapfiend had a problem with the database awhile back and posted link for all layer 2 lables, not sure what layer you download atm for maps from them as there site is down.

i notice tho in the client that most maps it loads is layer 3 while like i said lables are in 2 atm on a few zones ( mostly tss ive downloaded ) but if Mapfiend is still giving us maps in layer 3 and lables in layer 2, dunno how that will work.

Far as double zone lines etc also checked on it, like gfay had sonys in 1, mapfiend in 3 with lables also so im getting double print slightly off on mapdraw ( i can work with it tho in zones that do that by editing the files no biggy)

Seaxouri
12-07-2006, 07:17 PM
I am not sure why you are mixing Sony and Mapfiend maps. Don't most folks pick one set or the other? It seems illogical to overlap the two sets... and I can certainly see that causing more problems down the road.

For example, this is a link to GFay at mapfiend: http://eq.mapfiend.net/map/gfaydark/3129

In there are THREE layers, gfay_1.txt, gfay_2.txt and gfay_3.txt. File 1 has just lines, File 2 has labels, File 3 has lines.

There is zero overlap of labels. All of these come from Mapfiend. If you also have the Sony map in there, it would be labeled gfay.txt. The client only loads gfay.txt OR gfay_1.txt, it never loads both. It also never loads any _2 or _3 files, period.

So if you are getting double images, you need to post the labels in your map files.

Here is a link to the source code used in the client you all currently use:
http://seq.cvs.sourceforge.net/seq/myseq/client/frmMain.cs?view=markup

And here is the relevant code:

// Try it as a LoY map first
1643 if (!loadmap(f + ".txt"))
1644 {
1645 // If it didn't work, try an SEQ map
1646 if (!loadmap(f + ".map"))
1647 {
1648 bool foundmap = false;
1649 for (int mapnum = 1; mapnum <= 3; mapnum++)
1650 {
1651 if (loadmap(string.Format("{0}_{1}.txt", f, mapnum)))
1652 {
1653 foundmap = true;
1654 break;
1655 }
1656 }
1657 //... Missing map
1658 if (!foundmap)
1659 {
1660 map.loadDummyMap();
1661 this.Text = BaseTitle + string.Format(" - Couldn't find a map for the zone: {0}", si.Name);
1662 }
1663 }
1664 }


Here you can see we first would try and load gfay.txt. These are the Sony maps if you copied them from your EverQuest/maps folder. If that is not found, it then checks for gfay.map. These are the old SEQ format maps that you used to get from Mapfiend. These existed before EQ had an in-game map. Most folks should not have any of these anymore. If that is not found, it tries to load gfay_1.txt, then gfay_2.txt then gfay_3.txt.

Of course it should never get to _2 or _3, since folks should have either gfay.txt, gfay.map or gfay_1.txt in their map folder.

In any case, we never load more than one file ever, so having double images means you must have some hacked map from somewhere.

kunark
12-07-2006, 09:23 PM
i notice tho in the client that most maps it loads is layer 3 while like i said lables are in 2 atm on a few zones ( mostly tss ive downloaded ) but if Mapfiend is still giving us maps in layer 3 and lables in layer 2, dunno how that will work.

Far as double zone lines etc also checked on it, like gfay had sonys in 1, mapfiend in 3 with lables also so im getting double print slightly off on mapdraw ( i can work with it tho in zones that do that by editing the files no biggy)
guess what i was trying to say ( done that post at 5am lol ) is

with lables in 2 and lines in three how would we be able to see camp spots etc without editing the files or using the ingame map ( i know you will prob say use ingame ) but better to see where spots, mobs and peeps are all at the same time ( to me anyway ) without trying to see this spot 2/3 way up on left near this line then looking at client etc lol..( like looking at a mob, named spot not in alert ) and seeing if up or not.. ( maybe an option to load layer 2 and 3 at same time or turn layer 2 on and off, thats if mapfiend is going to keep lables in layer 2, dunno if even worth the time )might not make sense

far as my client showing layer 3 on most of them, it does maybe i have a setting wrong dunno or corrupted files, but i have ( too many i need to redo them ) all the old seq maps, sony and all 3 layers ( going to delete all and redownload them tomorrow.

and what i mean by showing double layers i see now some ( older maps ) have double text and double lines in them ( me redoing entire list will prob fix that part )

anyway i do thank you for looking into my mess and suggestion, and cant wait till new comes out.

kunark
12-12-2006, 09:05 PM
heres a suggestion, i dont know if possible or what not, but if there is a way....

can you make the old alert files editable or w/e, for example a lot of the old zones have alerts that many of us dont need, or dont care for, an exp of that would be skyfire it alerts all of the chroms in the zone.

like i said may or maynot be possible but i for one would love to be able to change some of the old alerts.

thnx

ps redoing the maps as i said above fixed the layer 3 showing up etc, have no idea how they got corrupted maybe downloading dunno anyway thought i would let ya know. Still would like to be able to load lables with map tho lol however that can be done.

Seaxouri
12-12-2006, 09:20 PM
The alert files are all editable already. They are all just text files. File like 'filters_gfay.conf' are default filter files for gfay made by BlueAdept. We ignore regexp stuff, anything like 'Name:[^:]giant[^:]:;26-28' would be ignored. However I added logic in last year that helps try and parse what it can from these files.

Anything you add to the zone would go in 'custom_gfay.conf'. This way we keep the two separate in case there was an update to the default ones.

To remove the default ones, just delete the filters_ version... or edit it to suit your needs.

With the changes I have made to the new beta, adding filters should no longer impact performance. I have rewritten all the logic that process spawns, spawnlist, spawn timers and alerts (and more). When new spawns are detected, the new client consumes very little CPU power to process it, and it only processes it once.. not over and over again like it did before.

Spawn timers also now save across zone loads, so you no longer need to see a mob pop twice and die once to get the spawn timer. You do need to see it spawn once and die once, however... but that is another story. I think I can add the capability, for static spawns only, such that you only need to see them die once upon zone in, but I have to work on that a little.

My next goal is to optimize the rendering engine, which needs a little work.

bobster
02-08-2007, 01:27 PM
Would it be possible to make the spawn collector a little "smarter" ? as in displaying the respawn timer / "spawning in" as a result in minutes&seconds, instead of just seconds ?

Seaxouri
02-11-2007, 11:19 AM
Yes I probably will. I hate the seconds thing too.

chiquitaturbana
02-13-2007, 05:06 PM
First off, a HUGE thanks to Seaxouri for all the effort put in to keep this fine program going. I'm all for efficient small software and not speaking of small efficient software, myseq server works on Vista for what it's worth. Haven't tried the client but don't expect any problems.

I personally hate all the labels on most maps. I mean, I can see every mob in the zone and use the quick find or spawn list if I'm looking for some quest mob or something. Some zones have so many labels I can't see anything so just open them in a text editor and delete the full lines that contain the stuff you don't want to see. Makes for nice, clean maps of each zone. Also, if you don't like the extra label files...delete the whole file and you no longer have all those labels. Just a few ideas, making the client auto manipulate maps and filters is doesn't make sense when they can be manually edited so quickly and easily and very rarely change, especially the map files.

Just my 2 coppers and keep up the good work.