#renderer #points #world-of-warships #replay #game #game-data #minimap #timelapse

bin+lib wows_minimap_renderer

Library/CLI application for rendering World of Warships replay files as a minimap render "

19 breaking releases

Uses new Rust 2024

new 0.25.0 Apr 8, 2026
0.23.0 Mar 15, 2026
0.18.0 Mar 5, 2026

#123 in Images

MIT license

2MB
34K SLoC

Minimap Renderer

Generates minimap timelapse videos from World of Warships replay files (.wowsreplay).

Quick Start

There are two ways to provide game data to the renderer:

  1. Direct game install (--game) -- point at a WoWs installation directory
  2. Pre-extracted data (--extracted-dir) -- point at a lightweight dump of only the files the renderer needs

Option 2 is useful when you don't have the full game installed (e.g. CI, a server, or a friend's machine).

Usage

Rendering from a game installation

minimap_renderer \
  --game "C:\Games\World_of_Warships" \
  -o output.mp4 \
  replay.wowsreplay

Rendering from pre-extracted data

minimap_renderer \
  --extracted-dir /path/to/extracted_data \
  -o output.mp4 \
  replay.wowsreplay

The --extracted-dir can point to either:

  • The version directory itself (e.g. extracted/15.1.0_11965230/)
  • A parent directory containing version subdirectories -- the renderer will auto-detect and match the replay's build number

Creating Extracted Data with wows-data-mgr

The wows-data-mgr CLI manages game data downloads and can dump the subset of files the renderer needs.

Step 1: Register your game installation

If you have WoWs installed locally, register it so wows-data-mgr knows where to find game files:

# Register as "latest" -- always uses whatever build is currently installed
wows-data-mgr register --latest --path "C:\Games\World_of_Warships"

You can also register a specific version:

wows-data-mgr register --version 15.1 --path "C:\Games\World_of_Warships"

Verify it was registered:

wows-data-mgr list

Step 2: Dump renderer data

Extract only the files the renderer needs into a portable directory:

# Dump the latest available build
wows-data-mgr dump-renderer-data --latest -o ./extracted

# Or dump a specific version
wows-data-mgr dump-renderer-data --version 15.1 -o ./extracted

# Or dump by build number
wows-data-mgr dump-renderer-data --build 11965230 -o ./extracted

This creates a directory like ./extracted/15.1.0_11965230/ containing:

15.1.0_11965230/
  metadata.toml              # version + build info
  game_params.rkyv           # serialized game parameters
  translations/en/LC_MESSAGES/
    global.mo                # ship name translations
  vfs/                       # extracted game files
    spaces/*/minimap.png     # map images (land layer)
    spaces/*/minimap_water.png
    spaces/*/space.settings  # map metadata
    content/gameplay/*/space.settings
    content/GameParams.data
    gui/fla/minimap/         # ship icons
    gui/battle_hud/          # plane, death, capture icons
    gui/consumables/         # consumable icons
    gui/powerups/drops/      # powerup icons
    gui/fonts/               # rendering fonts
    gui/data/constants/      # game constants
    scripts/entities.xml     # entity definitions
    scripts/entity_defs/     # entity def files

Only the files the renderer actually reads are extracted -- no map geometry, models, textures, or other large assets.

Step 3: Render

minimap_renderer \
  --extracted-dir ./extracted \
  -o output.mp4 \
  replay.wowsreplay

Renderer Options

Flag Description
--no-player-names Hide player names
--no-ship-names Hide ship names
--no-capture-points Hide capture zones
--no-buildings Hide building markers
--no-turret-direction Hide turret direction indicators
--no-armament Hide selected armament/ammo type
--show-trails Show position trail heatmap
--no-dead-trails Hide trails for dead ships
--show-speed-trails Show speed-based trails (blue=slow, red=fast)
--show-ship-config Show detection/battery range circles
--config <path> Load render settings from a TOML config file
--dump-frame <n|mid|last> Dump a single frame as PNG instead of video
--cpu Use CPU encoder (openh264) instead of GPU
--check-encoder Check encoder availability and exit
--generate-config Print default TOML config to stdout

Dependencies

~8–26MB
~389K SLoC