update copyrights and other minor stuff to deliantra
the cfplus crashes were a result of overzealous face-nr caching inside the server
be mroe careful what to send in image_sums
replace MAXSOCKBUF by MAXSOCKBUF-1, the real socket buffer size, and adjust it to 10239, the actual maximum gcfclient supports
welcome to fxix protocol version 3, with uniform handling over all resources
welcome to fxix protocol version 3, with uniform handling over all resources
map custom key support, do not send resource faces as images
map custom key support, do not send resource faces as images
first workable server-side music implementation
fix the fxix protocol mess and use some experimental sorting by size
- fix rate limiting _again_ (and this time it was an infamous unsigned comparison bug...) - send images strictly in order. this is a bit ugly but temporarily works around older cfplus clients not supporting interleaved transfers.
- upgrade crossfire trt to the GPL version 3 (hopefully correctly). - add a single file covered by the GNU Affero General Public License (which is not yet released, so I used the current draft, which is legally a bit wavy, but its likely better than nothing as it expresses direct intent by the authors, and we can upgrade as soon as it has been released). * this should ensure availability of source code for the server at least and hopefully also archetypes and maps even when modified versions are not being distributed, in accordance of section 13 of the agplv3.
- support priority as second argument of askface - send images of same priority in fifo order, but higher priorities first.
update copyrights in socket/*.C
move animation info into facedata and make it reloadable at runtime
- implement smoothing in the fxix (or better: fxixsx) protocol. - this *enforces* that smoothing is *per face* and not *per archetype*. - no extra bandwidth is needed for map information (unlike in the crossfire 1.x protocol, where smoothlevels are per-mapspace and take up a lot of bandwidth). - no extra storage is required on the client-side (although smoothing for cached map data is then only available for tiles that have been seen). - temporarily supply empty_S.x11 smoothfaces again, as this hack is required because there is no way to specify a smoothlevel but no smoothface otherwise. this should be optimised away at a future point, but this will break gcfclient (but disabling smoothing for that might be a good compromise).
- 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.
moved setup to perlspace to facilitate easier extensions and some cleanups. feels more secure, too
*** empty log message ***
implement another bug workaround for clients
try a different approach. fucking gcfclient defaults.
*** empty log message ***
enable face caching again for those too stupid to read :(
- 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 more face handling code - automatically send smooth faces, as the client will need them anyways and it makes little sense to wait for the client to axk for it. of course, gcfclient suffers from weird ordering problems again. - UP_OBJ_FACE was often abused in situations where other things changed, updated lots of spaces, probably more to be done. - update_smooth became so small that inlining it actually clarified the code. similar for update_space, which is not inlined for other reasons. - faces were not initialised properly - add versioncheck for face data - rewrite invisibility handling a bit: god finger etc. now makes you blink, blinking routine has changed to be less annoying and more useful while still indicating invisibleness.
- send smooth faces automatically with their base face, anything else just complictaes everything and clients who want smoothing would requets the face anyways. - this reduces the size of struct client considerably, from 300k to about 300k (whoops).
no debugging code, thank you
- 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.
remove debugging code
- gcfclient compares against the server-provided image checksum but stores its own checksum in the database. needless to say, they differed. needless to say, we now have to provide a dummy superfluous gcfclient checksum for gcfclient only. - add various bug workaround flags to enbale gcfclient to cache imges again.
i do not fuckign know what i did wrong, but I did...
- MAJOR CHANGE - you now need to use cfutil to install arches. - former bigfaces are broken in the server - bigfaces are no longer supported. at all. - use face numbers instead of pointers * saves lotsa space * saves lotsa indirections * saves lots(?) cpu cycles - completely rewrote face handling - faces can now be added at runtime - reload will add new faces - this does not apply to animations - use a hastable instead of binary search (faster) for faces - face caching is broken - facesets are gone - server always reports MAX_FACES to any client who asks
- improve image_sums - DOWNGRADE server protocol version to 1026. * this disables requestinfo image_sums and image_info in gcfclient, allowing us to use up to 10000 faces dynamically (right now, we already sue up to 7500 faces, but the 10000 face limit is, of coruse, hardcoded into gcfclient)) -- A student, in hopes of understanding the Lambda-nature, came to Greenblatt. As they spoke a Multics system hacker walked by. "Is it true", asked the student, "that PL-1 has many of the same data types as Lisp". Almost before the student had finshed his question, Greenblatt shouted, "FOO!", and hit the student with a stick.
nano-cleanups
*** empty log message ***
- use crc for images too. unfortunately, this invalidates all client-side face caches. but we aren't compatible with crossfrie anyways due to the face rename.
- the damn rotate shift checksum just failed on me - add crc32 and use it for bmaps_checksum (probably also for images).
- useless ยต-opts - use maximum norm in get_rangevector (a bit, should use more)
- rename Animations => animation - rename New_Face => facetile - add but do not implement some generic loader framework classes
added some copyrights
just reformats
- 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
- implement event watcher autoncancellation on reload - used it everywhere - removed lots of compatibility cruft - configure does no longer check for mandatory unix functionality/headers - confgiure now runs much faster
- implement c++ interface to Event->io watchers - cut number of write()'s the server does in half
moar\! rewrite\!
rewrite phase one finished
moar rewrite
(intermediate check-in for recoverability)
continued simplifying network code, partially removed support for sc protocol 1026
considerably reduce size of crossfire.0 (~400k pngx, ~150k file format)
indent
indent
expand initial tabs to spaces
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.