[crossfire] channels
Mark Wedel
mwedel at sonic.net
Wed Apr 27 00:50:56 CDT 2005
Brendan Lally wrote:
>
>
er, I'd only really need to
>
1) change the arguments of new_draw_info (I've changed the function itself
>
already, so literally just
>
1a) backup and make a seperate copy of c_chat.c
>
2) for i in $(ls server/*); do cat server/$i | sed s/NDI_UNIQUE \|/ / >$i.new;
>
cat server/$i | sed s/NDI_[:alpha:]\,/ / > $i
>
(I'll need to check the syntax on that)
>
3) compile and manually change some corner cases (and c_chat.c).
>
4) set the colour value in the channels as described earlier.
>
>
removing infomation is much easier than adding it....
But the problem I see is that you don't add enough new channels that all the
NDI_... is now redundant.
I estimated that there'd be around 20-30 different NDI_<message type> fields.
And the problem then leads into a huge combination of NDI values * channel
values, making handling on the client a much more complicated mess.
I was thinking about this some more, and we may be addressing it from the
wrong side of things - the server side. What really counts is the interface to
the player - if the interface isn't good, all of this is basically meaningless
because no one will ever use it.
My personal thought is that I probably want a max of 5 different message tabs
in my client - anything more than that seems excessive for the number of
messages I typically see while playing on metalforge.
My vision on how to handle this is to have a selection window that lists all
the different message types/channels, and lets you select the font, color, and
tab it goes into. For purposes of this discussion, we'll let the type/channel
info be non specific - could be NDI code or channel value.
This, I might set something up that lets all attack related messages go into
one tab. As an additional ability, any kill messages show up in that tab in red.
In another tab, set it for all readable type messages.
In third tab, set it for all chat/shout/tell type messages.
In fourth tab, set it for whatever is left over (level gain messages, people
joining/leaving/etc).
Maybe set a fifth tab to cover everything else.
I certainly _don't_ want 1 tab per channel - I don't want to have 30 tabs in
my client. I also don't want something like 'if you don't have that specific
tab, everything gets dumped into a default tab'.
That is one problem I have with both having channels and colors - from a user
perspective, how do I control preferences then? For example, suppose the
preference I describe is based on channels. How do you handle messages that
come in on that channel in a different color? You can't really have a selection
for all those posibilities, so the client has to assume some behaviour. does it
just use the defaults the user selects (tab, font, color)? Does it use the
color it comes in as, but otherwise use same tab and font? etc. That is why
having only 1 attribute for all draw_info calls makes things much easier to
handle - if there is only 30 message types, easy to present all those in a
window to the user to choose their defaults.
Note that these preferences are also stored client side. So this makes
dynamic channels harder to handle - channel 25 may change its meaning run to
run, or perhaps even server to server. I don't have a good solution for that one.
What is also the expected plan for people actually chatting on these channels?
I'm presuming there will need to be some command to do so, but I don't see
that in your patch right now, so not sure how that will be handled. Keep in
mind you need to provide some way for players with older clients to both see and
chat on these new channels.
More information about the crossfire
mailing list