*** empty log message ***
smell, remove gcfclient support, material fixes, cfpod parse fixes, refactoring
*** empty log message ***
gcfclient removal
extdnedMapInfos removal, mapextended removal
*** empty log message ***
wizlook
fix observe and other los issues
new los code
*** empty log message ***
*** empty log message ***
*** empty log message ***
remove FLAG_CLIENT_SENT for good
*** empty log message ***
what wouldn't we give for smooth scrolling while observing observe
introduce and use object::has_dialogue ()
always send player count
removed elevation and inserted proper caching of spell/grace/eat values
*** empty log message ***
newmap optimisation
exactly
update copyright
reintroduce last_weight optimisation, clear TODO
see Changes
fail
*** empty log message ***
update copyrights and other minor stuff to deliantra
fix mapinfo w.r.t. observe
optimise
headers actually suffice for mapinfo
major changes: - on_same_map and related functions now do not block on map loads, instead they pretend the map is not there. this ensures lag-free operation, but changes semantics considerably: running quickly over the worldmap often lets you bump into map borders until the map has been loaded. also, rabies takes longer to nuke a full continent now. - mapinfo (a major sync blocker) is now fully asynchronous, and works by quieing all mapinfo requests and retrying them on every tick until satisfed.
replace MAXSOCKBUF by MAXSOCKBUF-1, the real socket buffer size, and adjust it to 10239, the actual maximum gcfclient supports
actually fx spell faces before sending them via addspell
welcome to fxix protocol version 3, with uniform handling over all resources
rudimentary resource support, create new region_change event and new ext/player-env.ext
riddifed the world of safe_strcat
*** empty log message ***
- 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.
prepare for better fxixsx+rx protocol
*** empty log message ***
greatly speed up map drawing by optimising out all calls to get_map_from_coord. most calls are simply optimised away by linearly scanning through maps, the remaining oens are replaced by the faster xy_normalise. nonexistant spaces still force a call to xy_normalise every time, but on tiled maps (worldmap!) we get one call to xy_normalise per row per map border crossing. further optimisation might be possible, if desired.
latent bug from crosfire days, make sure the mapspace is up to date
display more stats/skills in observe
*** empty log message ***
- improve observe - remove more cruft code - archetype loading almost works again, reloading probbaly still borked.
- archetype is now a subclass of object. - store archetypes in an object_vector. - use a different startegy for archetype loading (reloading is MOST CERTAINLY broken).
its never working on first try
- remove slow and unneeded cruft code from map1. - decouple map display/stats update from ob (use pl->obsere instead)
update copyrights in socket/*.C
- fix players frozen on movers - allow overriding of existing spells implement town portal: - new fields portasl_maap|x|y for regions - new ext town_portsla completelyx implementing it - some debugging code, some check code
- change weapon speed inside server to be the real speed value. - send speed and weapon_sp as actions/second to the client. this breaks cfclient which divides speed/weapon_speed, but makes more sense.
remove superfluous/broken settings and related code - COZY_SERVER: enabled most msall adjustments, changed digestion formula to the original one, party member treament w.r.t. pets enforced. - PROHIBIT_PLAYERKILL: default - real_wiz: removed and enforced - create_home_portals: removed and enforced - casting_time: removed and forced to be off (was crashing anyways) - was_wiz flag removed and treated as off usually unless it was used in place of flag_wiz. - do not save or restore wiz, wizcast and wizpass flags.
mark current weapon with star
only allow one range weapon to be applied at any one time, some dynbuf fixes
only allow one range weapon to be applied at any one time, some dynbuf fixes
big simplification, still doesn't work, but feels cleaner
better dynbuf, some bugfixes, just goofign around, still broken
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.
utf-8 handling wa sbroken because i recently "fixed" cfperl.xs to properly upgrade when required while ext/* upgraded on its own. also try to fix the irc interface to be even more utf-8 compliant (untested).
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 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.
fix a number of annoying bugs, doh.
store and transfer the player objetc count not uuid in the extmap protocol, we cannot reasonably hope to get rid of the count anyway
better and smaller force_newmap implementation
- 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
- 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.
avoid sending newmap commands continously :()
avoid sending newmap commands continously :()
implement another bug workaround for clients
try a different approach. fucking gcfclient defaults.
- 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.
workaround for crash on socket-close on overrun
- 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).
- 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.
some more optimisations and cleanups
- remove faces form each mapspace, as they were stored and calculated *solely* for magicmap. sic. - as update_ is a major bottleneck, this will certainly help load, too. - semantics have changed: objects with blank faces are now transfered, but i assume this is rare (and might give a nice hint about invisible stuff :)
- quick hack to rmeove any bigface/multipart handling. - seems to work reasonably nice.
- 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
remove default_smoothed images - unused. remove references to mythical sdefault.001 / default_smoothed.111 image from server code.
nano-cleanups
- tell player about each region as she enters. - region longnames no longer are prefixed with in, change accordingly.
mark watchers as reentrant, some FABS => fabs
comments
- rename Animations => animation - rename New_Face => facetile - add but do not implement some generic loader framework classes
aggressively prefetch tiled maps around the player - prefetch maps on every tick - prefetch maps and block the player when entering maps
- move most last_* values into socket, where they belong - this actually saved a lot of space in the text segment, which might mean less complicated pointer accesses, because the data is no where it belongs, mostly.
""
added some copyrights
- word of recall activated the player indirectly - implement maptile->xy_find and xy_load - separate find and load, even on C level - generate map_leave/enter and map_change events even for tiled map changes (experimental) - implement mainloop freezeing by start/stop, not skipping ticks - no map updates when player !active
- save before testing the map on swap_out, as save cedes and players might hop on the map while the map saves, changing its status.
set original flag so decay object doesn't go wild
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
the big rename
- small, but subtle, rewrite of object management - perl will now keep attachable objects alive - objects are now refcounted - refcouts need to be tested explicitly (refcnt_chk) - explicit destroy is required current - explicit destroy asks "nicely" for the object to self destruct, if possible - refcounts will be used during mortal killing - minor bugfixes, optimisations etc. - some former hacks removed.
- reorder stuff so that the endlessly sucky gcfclient doesn't get confused
- preliminary check in, stuff is rudimentarily working - moved most of the player creation process into a perl coroutine - changed internal design of player management to not reuse and morph the object in funny ways. should be safer and much nicer to handle. - got rid of some annoying hacks, such as clear() (TODO: get rid of player_pod and other stuff now unnecessary?)
- 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
- mapspace caches are now reevaluated only on-demand only - "heavily" optimised get_map_flags - it might be MUCH faster now - some cleanups - some deoptimisaton in update_object - enabling it makes some bigfaces disappear when they are not fully visible. why?
some source simplification
- hide floorbox implementation details - use meaning (hopefully) names
- separate all comamnds into immediate/socket-level and queued/player-level - clean up player command handling, handle up to 8 commands/tick
- clean up some code - fix some possible (minor) bugs - use a bitset for anims_sent - fix a memory leak - removed dead code
WHAT FUCKING SHIT WAS THAT CODE DOING???
- 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
while goofing around, trying to understand the command code - did some reindentation - which lead me to find some dead code - which lead me to some optimisations and more dead code fun.
streamlined packet processing a bit, experimentally enabled more immediate paclets
- 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
- 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)
moar rewrite
- 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
indent, properly clear map
add mapcell flags support and define #0 to be has_dialogue
argh
indent
mapstruct => maptile removed many ytypedefs in favor of structure tags
replace was_destroyed by much simpler and less expensive ->destroyed, which is valid, as objetc pointers are now reliable.
indent
remove rename command and implement lots of extra perl support
- improve assign to prepend "..." - make more use of assign - implement op->debug_desc() and make some more use of it
indent
Entirely removed cfpython.
removed && 0 for healthbars
THIS CODE WILL NOT COMPILE use the STABLE tag instead. - major changes in object lifetime and memory management - replaced manual refcounting by shstr class - removed quest system - many optimisations - major changes
expand initial tabs to spaces
nuke transports
converted more events, broken per-object events (needs map support), lots of fixes
- fix extmap protocol - lay foundation for new event interface (not used, not tested) - "slow down" in-game time specials
send player tag as extmap attribute
workaorund for client mapscroll overflow
send width of monster when sending health
*** empty log message ***
support health stats in an extensible way in map1
support health stats in an extensible way in map1
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.
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.