#assets #archive #archive-format #game-assets #game #filesystem

vach

一个简单的归档格式,专为在紧凑安全容器中存储资源而设计

19个版本

0.6.2 2024年7月29日
0.6.0 2024年5月23日
0.5.5 2024年1月6日
0.5.0 2023年9月26日
0.2.3 2021年11月23日

#43 in 压缩

Download history 8/week @ 2024-04-27 15/week @ 2024-05-04 8/week @ 2024-05-11 133/week @ 2024-05-18 18/week @ 2024-05-25 12/week @ 2024-06-01 29/week @ 2024-06-08 12/week @ 2024-06-15 2/week @ 2024-06-22 1/week @ 2024-07-06 459/week @ 2024-07-27 14/week @ 2024-08-03

473 每月下载量
用于 3 个crate (2 个直接)

MIT 许可证

84KB
1.5K SLoC

GitHub last commit docs.rs Crate Version on Crates.io
GitHub GitHub Build and Test actions GitHub issues

文档 | 仓库

vach,发音类似于“puck”,但带有“v”,是一种归档和资源传输格式。它是为了安全、封装和保护而构建的。实际上,它是由 SCP 设计的,以在传输过程中保持异常资源紧凑和安全。vach 的一个主要优点是它赋予了用户精细的控制权,因为它允许每条记录独立配置。 vach 还内置了对多种压缩方案(LZ4、Snappy和Brolti)的支持、数据签名、叶 位标志加密 以及一定程度的归档定制。查看 vach 规范在 spec.txt。任何和 所有 的帮助都将非常感激,尤其是校对文档和代码审查。

⛏ 这适合谁?

  • 你刚刚发布了一些软件,不想你的资源被盗版或轻易读取。
  • 你希望有一个简单方便的方式来管理、解压缩、解密和验证分发中的资源。
  • 你希望有一个纯Rust™️归档格式,没有任何C绑定(将来可能会提供C绑定)。
  • 你希望你的软件整洁,并且所有资源都在一个整洁的安全容器中。
  • 你喜欢轨道炮。

🧷 简单用法

use std::fs::File;
use vach::prelude::{Archive, Resource, Flags};

let source = File::open("sounds.vach")?;

let mut archive = Archive::new(source)?;
let resource: Resource = archive.fetch_mut("footstep.wav")?;

// By default all resources are flagged as NOT secure
assert!(!resource.authenticated);

// Use the data
use my_crate::Sound;
println!("{}", Sound::new(resource.data.as_slice())?);

// Read data directly into an `io::Write` stream
let mut buffer = Vec::new();
let (flags, content_version, is_secure) = archive.fetch_mut("ftstep", &mut buffer)?;

有关如何使用crate的更多信息,请参阅 文档 或访问 仓库。也许还可以查看 CLI,以便更友好地使用 vach

依赖关系

~0.3–3MB
~101K SLoC