- 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.