Re: [crossfire] Buffer flooding

2006-10-10 Thread Alex Schultz
Mark Wedel wrote:
 OTOH, I'm not sure if new players, before they 
 realize about the run feature, may hold down direction keys.
I recall that I did at very first ;)

Alex Schultz

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


[crossfire] Buffer flooding (was: Improved/redone client.)

2006-10-09 Thread Alex Schultz
Kevin R. Bulgrien wrote:
 Additionally, without knowing the underlying infrastructure, it is hard to 
 know if the
 following is practical or not.  I think all clients suffer from buffer 
 flooding.  I think it
 would be exceptionally profitable to have an ability to flush the command 
 buffer
 or to escalate the priority of certain emergency bindings.  I don't know 
 how many
 times I have helplessly watched as my character died because the buffer was
 flooded and there was nothing to be done except stop and hope you don't die
 before it emptied.
To my understanding, buffer flooding occurs on the server side, not the
client side.
One simple fix could be done client side however; One could make the
client ignore key-repeats, getting rid of the command buffer issues
caused by holding the key down. When using crossfire, I can't think of a
time I actually make use of key repeating (using running for example
doesn't rely on key repeating, just on holding the run key down)

Also, IMHO the command buffer needs some redoing anyways: Paralysis is
currently implemented simply as not processing the command buffer, with
which I believe there are a few issues. For one, I believe it would make
sense for some types of commands such as communication commands,
possibly other than say, to ignore paralysis. Also, it might be a good
idea to instead of buffer actions while paralyzed, to just ignore them.

Alex Schultz

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Buffer flooding

2006-10-09 Thread Mark Wedel
Alex Schultz wrote:

 To my understanding, buffer flooding occurs on the server side, not the
 client side.
 One simple fix could be done client side however; One could make the
 client ignore key-repeats, getting rid of the command buffer issues
 caused by holding the key down. When using crossfire, I can't think of a
 time I actually make use of key repeating (using running for example
 doesn't rely on key repeating, just on holding the run key down)

  That could be reasonable.  OTOH, I'm not sure if new players, before they 
realize about the run feature, may hold down direction keys.

 
 Also, IMHO the command buffer needs some redoing anyways: Paralysis is
 currently implemented simply as not processing the command buffer, with
 which I believe there are a few issues. For one, I believe it would make
 sense for some types of commands such as communication commands,
 possibly other than say, to ignore paralysis. Also, it might be a good
 idea to instead of buffer actions while paralyzed, to just ignore them.

  Yes, the command handling on the server could be redone.

  In the ideal case, it works something like this:
1) Read all pending commands from the client.  Commands that are considered 
free 
can be executed (free commands could be administrative stuff, like maps, player 
communication commands, so forth).  One such free command could be 'cancel all 
commands before this' type of thing.

2) The commands read are stored into a pending command buffer (maybe a linked 
list).  If the player does not have time to execute non free commands, nothing 
more is done.

3) If the player does have time to execute commands, run the first command on 
the list, remove it, and repeat

4) Possible enhancement: Add some form of priority tagging to commands (number? 
  Just a single flag?)  In this way, that 'drink healing potion' command could 
be a priority command, which is run before the other pending commands, no 
matter 
where it shows up.



___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire