Skip to content

[ArchiveV2] Oodle compression support #140

Open

Description

@christianstamati

Hi,

I tested this in UE 5.7.1 using Easy Multi Save to create the .sav files. Do you know what might be causing the issue?

Level.sav.txt

use gvas::{GvasFile, game_version::GameVersion};
use std::fs::File;

fn main() -> Result<(), Box> {
let mut file = File::open("assets/Level.sav")?;
let gvas_file = GvasFile::read(&mut file, GameVersion::Default)?;

println!("{:#?}", gvas_file);

Ok(())

}

Image

Thanks!

Activity

  1. scottanderson commented on Dec 8, 2025

    @scottanderson
    Collaborator

    I started to implement ArchiveV2 a few weeks ago, but I didn't finish writing the tests. You can take a look at what I have so far here.

  2. christianstamati commented on Dec 8, 2025

    @christianstamati
    Author

    Thanks!!

  3. christianstamati commented on Dec 8, 2025

    @christianstamati
    Author

    Sorry, I am not really into rust:

    I added the dependency like this:

    [package]
    name = "gvas_test"
    version = "0.1.0"
    edition = "2024"
    
    [dependencies]
    gvas = { git = "https://github.com/scottanderson/gvas", branch = "archive-v2", features = ["serde"] }
    

    And then I try to parse ti file like this:

    use gvas::{GvasFile, game_version::GameVersion};
    use std::fs::File;
    
    fn main() -> Result<(), Box<dyn std::error::Error>> {
        let mut file = File::open("assets/Level.sav")?;
        let gvas_file = GvasFile::read(&mut file, GameVersion::Default)?;
        
        println!("{:#?}", gvas_file);
        
        Ok(())
    }
    

    I tried one of the example files in /resources/tests/Slot1.sav and it works:

    Image

    But when trying Level.sav I am still getting the same issue even using archive-2:

    Image
  4. scottanderson commented on Dec 8, 2025

    @scottanderson
    Collaborator

    Okay, I looked at the attached file a little closer, and I'm seeing a couple of issues:

    1. You will need to change GameVersion::Default to GameVersion::ArchiveV2 to activate the code path for the new file format.
    2. The file appears to be compressed with Oodle compression, which we don't have a decompressor for, so you'll still get Deserialize(InvalidHeader("Unsupported compression type Oodle")).

    If you're able to generate files with zlib compression, you should be able to read those with my branch.

  5. changed the title [-]Error: Deserialize(InvalidHeader("File type 2653586369 not recognized"))[/-] [+][ArchiveV2] Oodle compression support[/+] on Dec 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions