Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add deserialization support for new binary VDF w/ key table #61

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Matoking
Copy link

The new Steam beta introduced a new appinfo.vdf version. This appinfo.vdf V29 introduces a new binary VDF format which does not include field keys in binary VDF segments as-is. Instead, each key is represented by a 32-bit integer which needs to be mapped to an actual string using a table stored at the end of the appinfo.vdf file.

This also means the binary VDF segments in this case are no longer self-contained. The developer can parse and provide the table themselves or instead use the ValvePython/steam library which contains a function to parse appinfo.vdf files.

Also see SteamDatabase/SteamAppInfo@56b1fec

Refs ValvePython/steam#462

The new Steam beta introduced a new `appinfo.vdf` version. This
appinfo.vdf V29 introduces a new binary VDF format which does not
include field keys in binary VDF segments as-is. Instead, each key is
represented by a 32-bit integer which needs to be mapped to an actual
string using a table stored at the end of the `appinfo.vdf` file.

This also means the binary VDF segments in this case are no longer
self-contained. The developer can parse and provide the table
themselves or instead use the `ValvePython/steam` library which
contains a function to parse `appinfo.vdf` files.

Also see SteamDatabase/SteamAppInfo@56b1fec

Refs ValvePython/steam#462
@cbartondock
Copy link

This fix is also needed over at https://github.com/cbartondock/node-binary-vdf in case you feel like submitting a PR :) if not I will work on borrowing your code! Good job figuring this out.

@Matoking
Copy link
Author

This fix is also needed over at https://github.com/cbartondock/node-binary-vdf in case you feel like submitting a PR :) if not I will work on borrowing your code! Good job figuring this out.

Thank you, you can use this PR as a reference.

I can't take full credit, though; SteamDatabase/SteamAppInfo was the first to figure out the new format to my knowledge and this implementation is based on their findings.

@cbartondock
Copy link

Okay just got it finished. The node module is binary-vdf-2. In case anyone needs the code for reference:

https://github.com/cbartondock/node-binary-vdf/blob/master/src/index.ts

@chewi
Copy link

chewi commented Sep 15, 2024

Maintainers, please pick this up and release it so that the library doesn't need to published to PyPI under a new name. It is now more urgent as the stable version of Steam is now using this new format.

gentoo-bot pushed a commit to gentoo/gentoo that referenced this pull request Sep 15, 2024
Steam is now using a new format, but the necessary changes haven't been merged
by the maintainers of this library yet.

Bug: ValvePython/vdf#61
Signed-off-by: James Le Cuirot <[email protected]>
@WinterPhoenix
Copy link

Just going to point out that, if the maintainer doesn't return, we have a fork that has this and many of the other pending PRs merged:
https://github.com/solsticegamestudios/vdf

The python-vdf package on AUR also points to this fork now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants