new speed management: - weapon speed and object speed is now completekly decoupled for players. - both can be used at the same time, or indeepndent, when running or firing. - still only one command per object speed can be issued.
- implement a rudimentary framework for a "msg" command that replaces drawinfo and drawextinfo and allows for simpler usage in simple cases and extensibility for the less complex uses. - moved the character race choosing logic into perl, making use of the new msg command if the client supports it.
implement ex command support to quickly retrieve item descriptions
- fix ber encoding - reduce image checksum length to 6 bytes (from 16) - implement fx packet, which reduces face overhead to amortised 10/12 bytes per face instead of 21/32 bytes and allows an unlimited number of faces instead of 2**16.
add untested ber integer encoding function
- make face caching mandatory, and pester users to enable it - implement rate-limiting, for images only right now - implement and document output-rate command to set rate limit. - default 1mbit.
- rewrote smooth face handling, as a side-effect, smoothing seems to work again and smooth faces can be reloaded. - the server now sends the full animation for an object the first time it is seen, this uses slightly more bandwidth initially, but avoids the flickering for objects change their face later.
nano-cleanups
make a horrendous hack to enable say and chat to be executed almost anytime
comments
- fix crash bug - better fork & abort (untested)
added some copyrights
- made state a per-client variable (that does not magically make state a per-client thing!) - rename player->socket to player->ns. its not a good name for "client", but it is an historical artifact, and better than "socket".
- made client a first-class crossfire-perl object (its attachable), but perl support is missing. - added some client events - fixed reply not working after logout
some source simplification
- separate all comamnds into immediate/socket-level and queued/player-level - clean up player command handling, handle up to 8 commands/tick
re-enable async command execution
- remove no_shout - serialise command execution somewhat again :( - avoid exceptions
- socket i/o is completely asynchronous now - some command sare handled immediately - others (most palying related commands) are queued for later (as of now synchronous) processing - specifying a max queue length (in seconds) is possible, but disabled - also add some syntax sugar for network code
the rename for sanity campaign hits you died - renamed stuff - partially updated copyrights - some cleanups
- make client_socket accessible to perl - on linux, record rtt and rttvar - who shows rtt/rttvar
- write() is now independent of server ticks and will be done immediately - get rid of CORK hack, it is no longer necessary
- implement c++ interface to Event->io watchers - cut number of write()'s the server does in half
- remove some old socket mode cruft - preliminarily added attachable client_socket interface to perl (untested but also unreachable from perl code atm)
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
moar\! rewrite\!
rewrite phase one finished
moar rewrite
(intermediate check-in for recoverability)
- further cleanup and rewrite - fix a potential crash in "lock" and "mark" packets
continued simplifying network code, partially removed support for sc protocol 1026
started simplifying network code
started simplifying network code
removed #ifn?def WIN32 from all files
double once more - stopid memory management does not scale
indent
indent
remove compression support, intiialise perl earlier etc. etc.
expand initial tabs to spaces
support health stats in an extensible way in map1
Made server compile with C++. Removed cfanim plugin and crossedit. C++ here we come.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.