[crossfire] Improved/redone client.

Mark Wedel mwedel at sonic.net
Tue Oct 10 02:36:18 CDT 2006


  Quick note - the client reorganization/cleanup/entire discussion is aimed at 
the 2.0 branch.  I don't really forsee many of things things going into the 1.x 
client.


  Will try to quickly catch up with all the issues at once :

Keybind profiles:  I think that is doable, and makes sense (keybinding for a 
spellcaster vs non spellcaster is quite a bit different).  From what was 
described, it sounds like there would be two keybinding profiles in use at any 
time - the common set, and then the specialized one for the given character 
type.  That gets more complicated, because if you add a new binding, have to 
record where it goes (specialized binding or general one).  It certainly 
wouldn't be hard to have an option on what keybinding profile to use.  OTOH, 
presumably players would want this somewhat intelligent (if I play character X, 
use this binding, if I player character Y, use that binding), but probably don't 
want one binding selection per character.  And even keying on character names 
may not be good, as different types of characters with the same name could be 
played on different server.

Keybinding interface: I don't think anyone mentioned this, but I know people 
have said they don't like the current interface in the gtk2 client (which is 
really the same as the one in the gtk client).  Not positive how to improve it - 
it seems with the number of spells, etc, we're always going to have a lot of 
keybindings in crossfire, but would be interested in hearing ideas.

GTK2 client resolution: Yes, it is/was aimed at higher resolution screens.  One 
reason was there is lots of buggy/complicated code in the gtk1 client to try and 
adjust based on window size, etc, and I want to avoid that complication in the 
gtk2 client.  And at some level, I think that making changes to layout based on 
screen resolution has other disadvantages (it's hard to optimize for both low 
and high resolutions, which is one problem I had with the gtk1 client - fine on 
moderate resolution systems, but not very good on high res).  I'm not sure the 
perfect solution here, but perhaps designing a layout for 1024x768 and seeing 
how it works might be a good start.  The doc that says I won't take patches for 
lower resolution is not accurate.

Containers: How to handle them can always be a bit of pain.  I never thought it 
opening on the ground beneath the player was very intuitive (and would then 
create odd issues like you can't get to objects on the ground with an open 
container, etc).  A quick fix for closing containers in the inventory is a 
'close all containers' button could be added to the top of the inventory area.

Quick item handling: In the ideal world, the client should be able to support 
some better form of filtering, perhaps even having like a 'favorites' tab which 
only shows items marked as your favorite (in this way, you could put all your 
items that you frequently apply there).  Some games have the 'paper doll' type 
interface - I think that could still be a good idea for equipping, but I'm not 
sure if it is good during general purpose play (I can't think where that would 
fit in the client)

Map size:  The 19x19 was to make that the only supported map dimension as far as 
protocol/setup is concerned for viewable player map.  The game map files won't 
change.  And the client could of course have a larger visible map, but just 
wouldn't get data from the server for it, so its only use would be to use that 
for fog of war.  I tend to think that letting the player select map size doesn't 
have much in the way of downside (yes, some players may get more information, 
but that hasn't seemed to have been a big problem in the past)

Fullscreen client:  The reason I don't think changing resolutions should be a 
method is because I don't think that will be very well supported.  There is no 
guarantee what resolutions the system may support.  I can certainly see people 
with LCD only having 1 valid resolution defined (native resolution of the 
screen).  And you get the complication of widescreen (its not 1280x1024, but 
1280x800).  So you're now in a case where you may still need to support several 
resolutions.  The other problem is that the client has to be more bulletproof to 
change the resolution back to the original when done.  But the interesting point 
about fullscreen client, is that while several people say it may be useful, I 
don't think I've seen anyone actually say that is what they would use (they 
would use windowed mode).  Which to me sort of suggests that this isn't 
something really worth pursuing - we're trying to guess what other people want.

Pop up inventory window:  I'm perhaps seeing this more as a secondary interface 
to the inventory, not the only way.  So the existing scrollbar exists, but when 
dealing with lots of store, or perhaps more advanced operations, a pop up window 
could provide a better interface.  OTOH, having two different interfaces would 
seem confusing.

Icons & tooltips:  My idea here is to try and convey the same data, but in 
smaller space.  For example, for skills, we could probably use a quarter of the 
space by having an icon for the different skills, and then a small progress bar 
that shows progress towards next level.  The tooltip would come into player if 
your mouse hovers over the icon/progress bar - it would pop up the tooltip with 
the skill name, level, and precise exp values.

Themes: Initial thought is to make sure the client is fully themable, and then 
write some theme files that the player can select in the config window (with a 
default/inherit from system as an option).  This matches what a lot of other 
programs do - have the ability to change appearance on themes.  I don't think 
there is any downside on this, other than the work to add the theme support.

Inventory control via keyboard:  I'd be interested in how people think that 
should work - I really can't envision much any reasonable way to control the 
inventory only by keyboard, whether we use gtk2 widget or write our own.  I'd 
personally consider this to be a pretty low thing to do.

SDL removal:  The old built in draw mode of gtk will always remain.  I just 
don't think it makes sense to have 3 different drawing modes (gtk, opengl, sdl). 
  I'm prooposing just gtk and opengl.

Protection display changing colors:  That works, but is only useful if you have 
the protection tab displayed (but that is like most things I suppose).  Knowing 
if a change is temporary or permanent is much harder.  By the time the server 
gets to sending that resistance values to the client, it only knows what the 
current values are and what the old values are.  It has no idea what caused the 
change.  I suppose code could be added to change_abil(), I'm not sure how 
reliable that will be.  But related to this is the changing to draw_ext_info - 
the start and stop of protection related messages will have their own types, so 
the client will also be able to more prominently display such messages.

Extra space in gtk2 client:  I'm thinking the extra space in the stats display 
(sp/hp/grace/good) could perhaps be used for an experience bar.  In terms of 
smaller icons for inventory, that should already be supported by using the 
-iconscale option (I think that is also in the config options) - scale them down 
to a smaller size.  Perhaps the correct thing is the default should have them 
scaled down and not use the default.  Also, I think some of that extra area in 
the stats display is to denote caps/shift keys being depressed (you can 
sometimes get odd behaviour by having one of those keys pressed, leaving the 
window, and client doesn't catch that, which is why they are noted).  But all 
that info could fit in just one line.








More information about the crossfire mailing list