X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=demoseeking.cfg;h=5dbaf86b3a783e886327afe150edbc6b148b0c90;hb=9aa2833a6f6e8fbaf5aecba122ad0eec9b867024;hp=a70dd5d603147cb1525d1a27251b8e789ed88d9a;hpb=f385da8a6b65adffea10561538a9d5cd22a84123;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/demoseeking.cfg b/demoseeking.cfg index a70dd5d60..5dbaf86b3 100644 --- a/demoseeking.cfg +++ b/demoseeking.cfg @@ -21,7 +21,9 @@ // * use m/ (m and slash) keys to seek -30/+30 seconds // * - (minus) also works instead of slash // -// Options (persisted): +// Options: +// +// These options can be customized after "exec demoseeking.cfg". // // _demoseeking_min_speed // Minimum seek speed. Default 1.5. @@ -30,6 +32,15 @@ // much while seeking. If the framerate is still high while seeking, you // may increase this, but increasing this with low framerate is unlikely to // improve seek performance. +// _demoseeking_speed_factor +// Factor of remaining time to seek speed. Default 10. +// The seek speed is defined by the formula +// +// 1.0 + [remaining seek seconds] * _demoseeking_speed_factor +// +// bound by _demoseeking_min_speed and _demoseeking_max_speed. +// _demoseeking_fast_speed +// Seek speed above which rendering is disabled. Default 80. // // Variables: // @@ -52,16 +63,18 @@ // - The alias seekdemo_getseektime can be used by scripts to get the current // playback time or seek target time. See its usage below. +// option initialization +set _demoseeking_options_loaded 1 +set _demoseeking_min_speed 1.5 +set _demoseeking_max_speed 200 +set _demoseeking_fast_speed 80 +set _demoseeking_speed_factor 10 + // state initialization alias _demoseeking_init_vars "set _demoseeking_vars_loaded 1; set _demo_is_playing 0; set _current_demo_name \"\"; set _demoseeking_is_seeking 0; set _seekdemo_state idle; set _seekdemo_target 0; alias playdemo_hook \"\"; alias seekdemo_hook_seek_end" alias _demoseeking_init_vars1 "" _demoseeking_init_vars${_demoseeking_vars_loaded ?} -// option initialization (persistent) -alias _demoseeking_init_options "seta _demoseeking_options_loaded 1; seta _demoseeking_min_speed 1.5; seta _demoseeking_max_speed 200" -alias _demoseeking_init_options1 "" -_demoseeking_init_options${_demoseeking_options_loaded ?} - // Hook into game start to reset seekdemo state. This prevents reloading the // last demo when seekdemo is accidentally called during an actual game. alias demoseeking_game_started "set _demo_is_playing 0; set _current_demo_name \"\"" @@ -152,7 +165,7 @@ alias _seekdemo_check_continue_0 "_seekdemo_leave_seek; seekdemo_hook_seek_end" // - Adjust the playback speed by setting the slowmo cvar. The further the seek, the faster the playback speed. // - Compare the speed to different speed levels to maximize performance for long seeks while reducing screen flashes for short ones. // Then continue the loop with "defer 0", so the check is run on every rendered frame. -alias _seekdemo_check_continue_1 "set _seekdemo_speed_level failed; cl_cmd rpn _seekdemo_target time sub 10 mul _demoseeking_min_speed max _demoseeking_max_speed min dup /slowmo exch def dup 80 gt exch 2 gt add /_seekdemo_speed_level exch def; _seekdemo_set_options; defer 0 _seekdemo_check_time" +alias _seekdemo_check_continue_1 "set _seekdemo_speed_level failed; cl_cmd rpn _seekdemo_target time sub _demoseeking_speed_factor 0.01 max mul 1 add _demoseeking_min_speed max _demoseeking_max_speed min dup /slowmo exch def dup _demoseeking_fast_speed gt exch 2 gt add /_seekdemo_speed_level exch def; _seekdemo_set_options; defer 0 _seekdemo_check_time" alias _seekdemo_check_continue_failed "_seekdemo_failed \"(demo ended?)\"" alias _seekdemo_failed "_seekdemo_leave_seek; echo SEEK FAILED ${1 ?}"