dvpl-converter
dvpl-converter encodes and decodes DVPL-compressed World of Tanks Blitz assets with LZ4 and LZ4-HC support. By default, it decodes, verifies CRC32 integrity, and writes output next to the input file. It ships as a Rust crate (dvpl-engine), a Python CLI installable via pip, and a single-file standalone script that only needs lz4.
Licensed under MIT.
About
Originally a 180-line script I wrote because I couldn't open Blitz's asset files for a side project. I wanted to learn maturin, so the script became a Rust engine bridged to Python through PyO3. Mildly overkill for the job, but it's fast and it was fun to build.
Install
Python CLI:
Rust crate:
Standalone script (no Rust toolchain, only needs lz4):
Usage
| Flag | Short | Description |
|---|---|---|
--encode |
-e |
Encode to DVPL (default is decode) |
--compression |
-c |
0 none, 1 LZ4, 2 LZ4-HC (default: 2) |
--output-dir |
-o |
Output directory |
Rust API
use ;
let blob = encode?;
let out = decode?;
assert_eq!;
Full API on docs.rs/dvpl-engine.
DVPL format
A .dvpl file is a payload followed by a 20-byte footer:
| Field | Size | Encoding |
|---|---|---|
original_size |
4 bytes | little-endian |
compressed_size |
4 bytes | little-endian |
crc32 |
4 bytes | little-endian |
compression |
4 bytes | little-endian |
magic |
4 bytes | DVPL |
Compression types: 0 none, 1 LZ4, 2 LZ4-HC.
Development
License
MIT. See LICENSE.