drguildo / vdfr

A Rust library for reading Valve's binary KeyValue format.
2 stars 3 forks source link

New binary VDF version crashes this #2

Closed Raicuparta closed 1 month ago

Raicuparta commented 2 months ago

No idea if this project will be maintained, but I based a lot of my own VDF code on this repo, and now Valve updated their binary VDF format, which broke everything. So I thought I'd leave this here for the maintainer, or anyone else who might be using this.

New version is 0x07564429 (previous was 07564428).

Here's my version where I handle it (poorly, wip at the time of writing this issue): https://github.com/Raicuparta/rai-pal/blob/6d756c7df980a1d630677171491535707f7ce4e8/backend/src/steam/appinfo.rs

Main difference is that keyvalue keys are now u32 instead of strings. The u32 is the index for a list at the end of the file, it's just a flat list with every possible key string. At the start of the file, after "version" u32 and "universe" u32, there's a new u64 which is the address of the start of this key string list.

drguildo commented 2 months ago

Thanks for the heads up. It's not actively maintained, but I haven't abandoned it either, so I'll aim to look into the issue when I get time. It's nice to know somebody has made use of the code.

drguildo commented 1 month ago

@Raicuparta Any idea why the appinfo.vdf in my Steam directory is using the old file format, and how I'd go about upgrading it?

Raicuparta commented 1 month ago

Pretty sure you just need to opt-in to the Steam beta.