Void.Packer
1.0.1
dotnet add package Void.Packer --version 1.0.1
NuGet\Install-Package Void.Packer -Version 1.0.1
<PackageReference Include="Void.Packer" Version="1.0.1" />
<PackageVersion Include="Void.Packer" Version="1.0.1" />
<PackageReference Include="Void.Packer" />
paket add Void.Packer --version 1.0.1
#r "nuget: Void.Packer, 1.0.1"
#:package Void.Packer@1.0.1
#addin nuget:?package=Void.Packer&version=1.0.1
#tool nuget:?package=Void.Packer&version=1.0.1
Void.Packer
Asset packing library for VOID Engine with authenticated encryption, compression, integrity verification, streaming reads, and incremental updates.
Install
dotnet add package Void.Packer
What It Does
Void.Packer packages game assets into SolidPack archives designed for practical runtime use.
It supports authenticated encryption, compression, integrity checks, streaming reads, and updating existing packs without requiring the rest of VOID Engine.
The pack system is intended to make casual extraction and unauthorized reuse more difficult while maintaining practical runtime access.
No client-side asset format can make shipped assets impossible for a determined attacker to recover.
Features
- AES-GCM authenticated encryption
- separate handling for pack metadata and file data
- per-file integrity verification
- adaptive compression
- configurable chunked encryption
- stream-based reads from disk
- incremental pack updates
- multiple-pack output when file limits require splitting
- non-throwing
TryLoadPackhelpers - concurrent read support
High-Level API
Packer provides helpers for common archive operations:
Pack(...)Unpack(...)Verify(...)ListFiles(...)Update(...)TryLoadPack(...)
Create a pack
using Void.Packer;
var files = new[]
{
new PackFile
{
VirtualPath = "Data/example.txt",
Data = File.ReadAllBytes("example.txt")
}
};
var result = Packer.Pack(files);
File.WriteAllBytes("GameAssets.pack", result.Packs[0].Data);
if (result.Packs[0].Key is not null)
File.WriteAllBytes("GameAssets.key", result.Packs[0].Key);
Load a pack without exceptions
using Void.Packer;
if (!Packer.TryLoadPack("GameAssets.pack", out var reader, out var error))
{
Console.WriteLine($"Unable to load pack: {error}");
return;
}
using (reader)
{
foreach (var path in reader.ListFiles())
Console.WriteLine(path);
}
When no key is supplied, the reader can detect a matching .key file next to the pack.
Verify pack integrity
byte[] data = File.ReadAllBytes("GameAssets.pack");
bool valid = Packer.Verify(data);
Update an existing pack
var update = Packer.Update(
File.ReadAllBytes("GameAssets.pack"),
new[]
{
new PackFile
{
VirtualPath = "Data/newfile.txt",
Data = File.ReadAllBytes("newfile.txt")
}
},
filesToRemove: new[] { "Data/oldfile.txt" }
);
CLI
For command-line workflows, install Void.Packer.CLI:
dotnet tool install --global Void.Packer.CLI
Then use:
void-packer build -c Content/ -o Packs/
void-packer verify --pack Packs/GameAssets.pack
void-packer list --pack Packs/GameAssets.pack --detailed
void-packer extract --pack Packs/GameAssets.pack -o Extracted/
See the VOID Wiki and the Void.Packer.CLI package for command-line usage.
Requirements
- .NET 10
License
MIT. No royalties. No engine fees.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Void.Packer:
| Package | Downloads |
|---|---|
|
Void.Engine
Modular 2D game framework for .NET with pluggable rendering, SDL3 platform support, OpenAL audio, asset management, pathfinding, coroutines, LDtk support, encrypted saving, and post-processing. |
GitHub repositories
This package is not used by any popular GitHub repositories.
1.0.1 refreshes the package documentation and NuGet metadata to accurately describe authenticated encryption, compression, integrity checking, streaming reads, and update behavior. No pack-format breaking changes are introduced by this metadata/documentation release.