This is the first rough cut of the skill use system (use the STABLE tag). Details will likely change, and combat skills do not work very well, but it works quite well. Players no longer have a shoottype or range slots, instead, each player has these members: combat_skill/combat_ob the currently selected skill (and weapon) for direct attacks. ranged_skill/ranged_ob the currently selected ranged skill (and bow/spell/item) golem the currently-controlled golem, if any.
rewrote output buffer handling. the new system: - outputs messages immediately. - suppresses following duplicates. - enforces a minimum setting. - is, as usual, faster and leaner. the only problem is that the code worked out of the box, which is not reassuring.
implement ex command support to quickly retrieve item descriptions
- reduce default output-sync to less than a second - output-sync command now uses seconds as unit, not something users cannot even know. - lots of useless const adjustments.
- 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.
- 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
- separate all comamnds into immediate/socket-level and queued/player-level - clean up player command handling, handle up to 8 commands/tick
- 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
streamlined packet processing a bit, experimentally enabled more immediate paclets
- 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
- 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
started simplifying network code
nuke metaserver code
mapstruct => maptile removed many ytypedefs in favor of structure tags
get rid of esrv_map_scroll and MapNewmapCmd, map update will handle it automatically
Made server compile with C++. Removed cfanim plugin and crossedit. C++ here we come.
implement 'ext' packet for extensions to hook directly into the protocol
Problem: server sends out 2 tcp packets per command (e.g. a 2-byte packet + a 10 byte packet for a small map1a command). Solution: rewrite that thing Workaround: on linux, uncork and cork again just before sleeping for the next tick, that solves the problem without hackery or rewriting it. This cuts the # of packets send by at least one half.
first round of mapinfo command and response, rationalised the coordinate system
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.