*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
switch from Event to EV
- rewrite follow to use a coroutine and make it generally safer. - the map scheduler, under duress, tried to swap out maps fast, but when a sync job was entered it also entered and andless loop causing a freeze. hack around this temporairly by always sleeping 50ms.
further adjust map scheduler coroutine to be as high as the main ticker
name your coroutines
name your coroutines
keep maps in memory for at least 1.5 ticks. background: rabies can cause the high watermark for load to be quickly exceeded, putting the server in emergency swap mode. if we don't keep maps in memory for at least 1.5 ticks we will then swap out (player-) visible maps, causing "blinking". by keeping them in memory for at least a tick we avoid this problem entirely as all visible maps are never idle longer than a tick.
problem solved
*** empty log message ***
much better, still label duplication
port micropather to c++...
some tweaking, preload random maps now, too
go through all per-player maps on startup and load those that have a resettable base map. this is similar to going tghrough all temp amps and loading them so the server can reset them. this is quite a high overhead compared to e.g. putting reswettable per-player maps into the tmp directory, too, but we might want to iterate over all players and their maps anyways at some point, to upgrade them to new formats etc. or to gather global statistics.
- introduce a notion of cpu load average within the server - use it to more gracefully increase swap intervals in the map-scheduler - add clip and lerp utility functions.
meet our new pod fucntionality, certainly not finished :) let me also introduce the beginnings of a new help command
VERY EXPERIMENTAL - change the way archetypes and treasurelists are being loaded: - referring to a nonexisting treasurelist will create an empty one - referring to a nonexisting archetype will create an empty one - archetypes/treasurelists will overwrite any existing object of the same name. - net effect should be to allow reloading of archetypes and treasurelists at runtime at a later stage.
*** empty log message ***
*** empty log message ***
tuna
support maps with and without .map extension, rename to .map on save
- tame the map/map-world.ext a bit to avoid potential memleaks for now - object refcounting was borked, fixed, again :) - add cf::attacahble::mortals_size - disable reset-after-load, this is unsafe due to locking issues, so don't do it - make map-scheduler configurable - improve emergency swap mode - prepare_random_map must be a sync job for now :( - do not keep object reference in enter_exit, the object might have been gone already. - nuke cf::object::mortals.
slightly optimise max actives limit swapout algorithm
- avoid negative event priorities like the plague. they are actually worse because they introduce random memory corruption and endless loops and worse, if worse exists. - aggressively swap out maps when #actives exceeds threshold - sweep and cede after server tick - increase player command handling priorities, just in case. - fix a bug in mortal checking, this was the reason for the enourmous memory leaks in map-world.ext - mark c++-side watchers as non-reentrant
there is a weird bug in Event or perl or... add some wrokarounds
fixes, starting to look good again
WARNING: this release is BROKEN - rewrote map handling. map types are now completely pluggable, maybe *too* pluggable, as everything is a plug-in now. - mark mandatory extensions as such. - handle overloaded attachable objects correctly. - many minor changes.
aggressively prefetch tiled maps around the player - prefetch maps on every tick - prefetch maps and block the player when entering maps
- added $cf::WAIT_FOR_TICK* - tuned map-scheduler and player-scheduler - added $op->inv_recursive - added objects_size/objects($index) and actives_size/actives($index) for access to the object and actives vector. - more robust player loader - removed _perl_data attribute support - SIGINT/TERM/HUP are now safe as they are handled synchronously. - replaced LOOK_OBJ by client_visible - cleanups
quick and dirty emergency fix
improve the hack
fix the bug: on_destroy is obviously not being called on pooled coroutines, aslo use more sensible names than 'coro'
emergency
use coros coropool
rename goto_map to goto
add some cede's strategically, tune
preload /tmp maps on reload
- 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
tuning, and hopefully apply last access time more correctly
*** empty log message ***
make the map scheduelr more robust w.r.t. map resets while it is iterating over maps (perl bug workaround)
activate_recursive etc. was using op->above, not op->below, so was not recursive at all
move nimbus to /, simplifies upgrading
implemented reste command, maps command etc.
in my stupidity i broke the loader
this is close to working
set original flag so decay object doesn't go wild
- integrated most of the map/exit handling into cf.pm (it grows too large, should be split 'somehow', but thats not easy) - moved the swap/reste scheduler into an extension - imrpoved exit/sync logic
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.