/public/Tools/Python Scripts/timelapseMap/


Name Type Size Date
../ Directory — —
--== READ ME ==-- readme 10kb 17-October-2026
timelapseMap.bat bat 52b 15-October-2026
timelapseMap_script.py py 121kb 16-October-2026

--== READ ME ==--.txt

================================================================================
timelapseMap
================================================================================

render a Doom map being drawn, as an mp4 timelapse


================================================================================
USAGE
================================================================================

timelapseMap <wad> [-m MAP] [-o out.mp4] [-iwad alias|path] [-drawspeed N] [-vidlength T]
             [-rez R] [-format mp4|png] [-linewidth N]
             [-cam off|follow|trace|box [Z]] [-zoom Z] [-testframe [pos]]
             [-endzoom S] [-endhold S]
             [-things [img]] [-thingtypes LIST] [-thingrate N] [-thingscale N] [-onlythings]
             [-tracethings] [-zoomthing Z] [-thingspeed N]


================================================================================
DESCRIPTION
================================================================================

Draws every linedef in index order with a moving pen, as the IDDT
automap using dsda/nyan automap colour rules (walls, height changes,
key doors, teleports, exits, secret sectors). By default the whole map
is shown, scaled once to fit the frame; -cam follow keeps the pen tip
centred at a fixed zoom instead. Things are not drawn yet.
Supports binary Doom / Boom / MBF21 format maps.


================================================================================
OPTIONS
================================================================================

-m, --map NAME
    Map to render (default: first map in the WAD)

-o, --out PATH
    Output mp4 file, or folder for -format png
    (default, next to the WAD: <wad>_<MAP>_timelapse_<rez>.mp4
    or <wad>_<MAP>_timelapse_<rez>_frames\  e.g. ..._timelapse_4K.mp4)

-rez R
    Resolution, always 16:9 (default: 1080p)
    480p 720p 1080p 4k 8k 16k, or a width e.g. 2560

-format F
    mp4 (H.264, up to 8192 wide) or png (numbered image
    sequence, any size - use for 16k). Default: mp4

-linewidth N
    Line thickness in pixels (default: 2)

-iwad, --iwad X
    IWAD to take PLAYPAL from: an alias or a path (default: doom2)
    aliases: doom, doom2, tnt, plutonia, heretic, hexen, free1, free2, doom94, doom294
    A PLAYPAL inside the input WAD always wins.

-drawspeed, --drawspeed N
    Pen speed in map units per second (default: 3000)
    Lines are drawn from their start vertex to their end vertex at
    this constant speed; leftover travel in a frame carries straight
    into the next line.

-vidlength, --vidlength T
    Total video length. The video is planned with your settings, then
    every speed, hold, pan and zoom is scaled by the same amount to fit -
    like speeding a finished clip up or down in an editor
    20 = 20 seconds, 1.20 = 1 min 20 s, 2.5.0 = 2 h 5 min ("." or ":")

-timepreservezoom
    with -vidlength: keep every zoom out / hold / zoom in, the mid
    hold, the final zoom out and the start/end holds at their set
    lengths; only drawing, thing placement and pans are scaled to fit
    (error if the kept parts alone are longer than -vidlength)

-cam MODE
    off = whole map (default: off)

    steady = zoomed, lines in index (creation) order. The camera stays
             still while the pen is mid-frame, glides after it near the
             edges, and when the next line starts off-screen the pen
             pauses while the camera pans there (-boxpan time)

    follow = like steady, but at an off-screen jump the pen keeps
             drawing while the camera quickly catches up

    lock   = zoomed, index order, pen tip locked dead centre (cuts)

    trace  = like follow, but the pen walks connected lines (taking the
             straightest way at junctions) and glides without drawing
             across gaps - one continuous moving point

    box Z  = the map is cut into a grid of 16:9 boxes, Z wide (same forms
             as -zoom: 6004mu, 15.5%, 4x; default: the -zoom value),
             anchored on the
             player 1 start. The camera frames one box (filling the frame),
             trace-draws only what is inside it, then zooms out to the full
             map, holds, and zooms into the next box (see -boxorder;
             player 1's box first). Things go box by box too

-boxzoom S
    box: between boxes the camera zooms out to the full map, holds,
    then zooms into the next box; seconds for each zoom (default: 1)

-boxhold S
    box: seconds on the full map between boxes (default: 1)
    -boxzoom 0 = no zoom or hold: the camera pans straight to the next
    box and drawing carries on (with -thingboxzoom 0 too, it also pans
    straight from the lines to the things). Each box move is only as far
    as needed to bring what is left in that box into view

-boxpan S
    seconds for that pan (default: 0.75)

-boxorder O
    box visiting order, for lines and things (default: sweep)

    sweep   step to a touching box each time, taking the one with the
            fewest unfinished neighbours, so corners and edges are
            cleared on the way and nothing is left behind

    spiral  ring by ring outwards from player 1's box

    dense   the densest box beside the last one, else the densest anywhere

-thingboxzoom S
    the same as -boxzoom / -boxhold, for the thing boxes

-thingboxhold S
    (default: the -boxzoom / -boxhold values; 0 zoom = pan)

-thingbox Z
    place the things box by box with this box size (same forms as
    -zoom), in any camera mode (default in box mode: the line box size)

-midhold S
    with -things: seconds on the full map between the lines and
    the things (default: 2); the camera zooms out for it, and
    back in afterwards if the things are placed zoomed

-jumptransition N
    trace/boxed: gap-glide speed as a multiple of the pen speed
    (default: 1; 4 = glide 4x faster than drawing)

-zoom Z
    follow/trace view size (alone, implies -cam follow). Default: 4096mu
    4096mu  4096 map units across the frame width
    15.5    15.5% of the full-map view (also 15.5%)
    4x      4 times closer than the full-map view (= 25%)

-endzoom S
    follow/trace: seconds to zoom out to the full map when drawing
    ends (default: 2; 0 = cut straight to it)

-endhold S
    seconds to hold on the finished full map (default: 4)

-things [img]
    Add a things pass after the map is drawn (in index order)
    no value = green triangles; img = the real front-facing sprites
    (stock Doom 2 definitions; DEHACKED is not read yet)

-thingtypes LIST
    Which things, comma separated (default: default)
    monsters weapons keys armor powerups health bonuses ammo decor
    deathmatch (deathmatch starts)
    default = monsters,weapons,keys,armor,powerups   all = every category
    Player 1-4 starts are always shown and placed first - only the start
    that spawns the real player (extra copies = voodoo dolls are skipped)
    e.g. default,health  or  monsters,keys

-skill N
    only things that appear on skill N, 1-5 (default: 4 = UV);
    multiplayer-only (co-op / deathmatch) things are never shown

-thingrate N
    things placed per second (default: 60)

-thingscale N
    thing size multiplier, 1 = true size (default: 1);
    never smaller than 12px on screen

-tracethings
    follow/trace: stay zoomed in for the things - the pen travels from
    thing to thing (follow: index order, trace: nearest next) and each one
    appears as it is reached; then the zoom-out and hold. Without it,
    things are placed on the full map after the zoom-out

-zoomthing Z
    zoom for the things only (same forms as -zoom); turns on
    -tracethings, and works with -cam off and -onlythings too

-thingspeed N
    -tracethings pen speed, map units/s (default: same as -drawspeed)

-onlythings
    Skip the line drawing: start on the finished full map and just add
    the things, then hold (implies -things). -vidlength sets the thing rate.
    With -tracethings and -cam follow/trace: zoom in from the full map,
    trace the things at -zoom, then zoom out and hold

-testframe [POS]
    Render ONE frame to a PNG and exit - fast, for checking settings
    no value = middle of the drawing, 30% = 30% through the drawing,
    0.45 = that time into the video (s, m.s or h.m.s)

-h, --help
    Show this help


================================================================================
SETTINGS
================================================================================

Resolution, fps, pacing, line width, colours and the IWAD alias table are edited
at the very top of timelapseMap_script.py.


================================================================================
LOG
================================================================================

Every output gets a .log beside it with the same name (e.g. ..._1080p.mp4 -> ..._1080p.log)
holding the date, folder, exact command line and the console summary.


================================================================================
WHILE RENDERING
================================================================================

Press S to stop and save what has been rendered so far (playable mp4 / PNGs kept).
Ctrl+C aborts and deletes the unfinished mp4.


================================================================================
REQUIRES
================================================================================

ffmpeg on PATH


================================================================================
EXAMPLES
================================================================================

timelapseMap mymap.wad
timelapseMap mymap.wad -m MAP03
timelapseMap megawad.wad -m MAP12 -o map12.mp4
timelapseMap mymap.wad -iwad tnt
timelapseMap mymap.wad -drawspeed 6000
timelapseMap mymap.wad -vidlength 1.20
timelapseMap mymap.wad -rez 4k
timelapseMap bigmap.wad -rez 16k -format png -linewidth 5
timelapseMap mymap.wad -iwad "D:\stuff\other.wad"
timelapseMap mymap.wad -zoom 4x
timelapseMap mymap.wad -cam follow -zoom 2048mu -drawspeed 800
timelapseMap mymap.wad -rez 8k -zoom 4x -testframe
timelapseMap mymap.wad -zoom 15.5 -testframe 30%
timelapseMap mymap.wad -cam trace -zoom 4x -drawspeed 800 -jumptransition 3
timelapseMap mymap.wad -cam box 6004mu -things img -thingscale 3.2
timelapseMap mymap.wad -things
timelapseMap mymap.wad -things img -thingtypes default,health -thingscale 2
timelapseMap mymap.wad -things img -onlythings -vidlength 20
timelapseMap mymap.wad -cam trace -zoom 3x -things img -tracethings -thingspeed 1500