跳转到主要内容

压缩osu重放lzma字节串

项目描述

PyPI version

WTC

WTC是lzma压缩格式的扩展,专门设计用于在存储之前使osu!std重放文件更小。它减少了原始.osr格式中某些数据类型的大小,实现了约40%的损失性压缩比率。

部分 原始lzma数据类型 WTC数据类型
w(自上一帧以来的毫秒数) 长(8字节) 24位整数(3字节)
x(x坐标) 浮点数(4字节) 短(2字节)
y(y坐标) 浮点数(4字节) 短(2字节)
z(按键组合的位组合) 整数(4字节) 字符(1字节)

这压缩了原始20字节的帧到8字节的帧,但不是没有损失。w、x和y的精度丢失,但z没有,因为osu!标准中按键位组合永远不会超过4位。虽然对于其他游戏模式(如7k狂热)可能更大,但这种压缩器专门用于osu!标准。

WTC压缩实现了平均40% ±5的压缩(不是一个正式计算出的数字 - 只是基于经验)。

安装

$ pip install git+git://github.com/osu-anticheat/wtc-lzma-compressor

用法

import wtc

# to compress an lzma bytestring
wtc_bytestring = wtc.compress(lzma_bytestring)

# to decompress a wtc bytestring into an lzma bytestring
lzma_bytestring = wtc.decompress(wtc_bytestring)

# compress and decompress are (almost) inverse operations, so lzma_bytestring ≈ wtc.decompress(wtc.compress(lzma_bytestring)).
# some precision is lost, so the strings are not identical.

由以下支持