#codec #deserialize #xml #packed #net #distributed #wargaming

app wg-toolkit-cli

用于与 Wargaming.net 分发的编解码器交互的命令行工具

3 个不稳定版本

0.4.1 2024 年 4 月 1 日
0.4.0 2024 年 3 月 30 日
0.1.0 2022 年 10 月 25 日

#99 in 游戏

Download history

每月 127 次下载

MIT 许可证

325KB
6K SLoC

WG Toolkit

提供 Wargaming.net 分发的各种编解码器实现的工具箱crate。这些编解码器是核心引擎(以前称为BigWorld)的一部分,特别用于《战车世界》。此crate还提供网络协议的实现。

  • crate 页面
  • crate 文档
  • 打包 XML 编解码器
    • 反序列化
    • 序列化
  • 坦克模型编解码器
    • 视觉树反序列化
    • 顶点/索引反序列化
  • 编译空间编解码器 (WIP)
    • 某些部分的反序列化
      • BWTB (头部表)
      • BWST (字符串表)
      • BWT2 (terrain2)
      • BWSG (静态几何形状)
      • BWCS (编译空间设置)
      • BWAL (资产列表)
  • 资源虚拟文件系统(只读)
    • 包索引
    • 从本地文件系统或包中读取文件
    • 从本地文件系统或包中读取目录条目
  • 网络协议 (WIP)
    • 数据包编码和解码 (部分标志支持)
    • 向捆绑包中添加元素
    • 将接收到的数据包组装成捆绑包
    • 遍历捆绑包中的元素

CLI

  • crate 页面
  • 打包 XML
    • 反序列化和显示
    • 值编辑(字符串、整数、布尔、浮点数)
  • 资源虚拟文件系统
    • 读取文件内容并将其复制到 stdout
    • 读取目录内容,可能配置了递归

WoT CLI

尚未发布,尚未工作,但存在于代码库中,可能在某个时刻集成到 CLI 中。

贡献指南

在向代码库贡献时,应遵循一些规则

  1. 每个主要功能都应该有自己的目录模块;
  2. 每个辅助功能,由核心功能内部使用,应位于其自己的 util 模块中,在其自己的文件模块中。
  3. 当在自定义读取器和/或写入器上工作时,但只实现其中之一,请考虑如何使用两个都实现的情况构建您的模块;
  4. 捕获所有错误并将它们转发到公共接口;
  5. 应使用 thiserror::Error 派生定义所有自定义错误类型;
  6. 当在自定义读取器和/或写入器上工作时,这些读取器和/或写入器不提供懒加载读取/写入操作,请创建简单的公共函数,直接输出,例如 from_reader(reader: impl Read)to_writer(writer: impl Write)

致谢

感谢 SkepticalFox 提供的 wot-space.bin-utils Python 库,它直接启发了这个 crate。

感谢 SkaceKamen 提供的 wot-model-converter Python 库,为其对处理过的模型文件格式的开源工作。

依赖项

约 10–21MB
约 304K SLoC