#ddnet #teeworlds #map #maps #binary #save #parse

twmap

解析、编辑和保存Teeworlds和DDNet地图

20个版本 (11个破坏性版本)

0.12.4 2024年8月7日
0.12.3 2024年7月18日
0.12.2 2024年4月30日
0.12.0 2023年12月13日
0.2.1 2021年3月12日

#92 in 压缩

Download history 25/week @ 2024-05-04 6/week @ 2024-05-18 11/week @ 2024-05-25 12/week @ 2024-06-01 5/week @ 2024-06-08 2/week @ 2024-06-15 110/week @ 2024-07-13 18/week @ 2024-07-20 223/week @ 2024-07-27 135/week @ 2024-08-03 36/week @ 2024-08-10 27/week @ 2024-08-17

每月422次下载
用于 9 个crate(8个直接使用)

AGPL-3.0-only

435KB
10K SLoC

TwMap

安全解析、编辑和保存TeeworldsDDNet地图。

还可以看看: TwGpu (渲染器)Python绑定Blender插件

此库的目标

二进制地图格式在libtw2仓库中记录这里

请注意,库支持编译为WebAssembly。从版本 0.10.0 开始,在WebAssembly中保存地图应产生相同的二进制输出。

用法

  • 在您的Cargo.toml中添加twmap = 0.12.4
  • 查看文档

支持的地图格式

  • DDNet (0.6)
  • Vanilla (0.7)
  • MapDir
    • 基于文件夹/目录的格式
    • 嵌入的图像作为.png文件
    • 嵌入的声音作为.opus文件
    • 结构的其他部分作为.json文件

压缩

二进制地图数据的一部分使用zlib压缩,这是加载地图时的主要减速因素。为了补偿这一点,库在解析时不会加载层、图像和声音数据,而是可以手动完成。

如果您想再次保存地图,库会自动解压缩所有内容(这是在 save 方法中实现的)。但是,如果不是这种情况,您只想读取其中的一部分,则可以暂缓在地图结构体上执行 load 方法。相反,只需对您想读取的地图压缩部分执行 load

请注意,库提供的某些方法需要正确加载其部分内容。在处理部分未加载的地图时请记住这一点。

检查

此库在保存地图时对其地图结构体施加了许多约束。例如,每个地图必须有一个游戏组、游戏层,层名最多11个字节等。所有约束都是为了确保正确的保存和解析,这意味着库保证您得到良好行为的地图。

请注意,库提供的许多方法需要满足某些约束。当使用 parse_unchecked 而不是 parse 时请记住这一点,后者将省略大部分检查。

依赖项

~11–24MB
~307K SLoC