Skip to content

UnityPy 1.25.0 fails on some Unity 2022.3 bundles with "Invalid version string: 2022.3.62f2", while 1.23.0 works #369

@com55

Description

@com55

Hi, I found a regression when loading some bundles built with Unity 2022.3.62f2.

Environment

  • OS: Windows 11 x64
  • Python: 3.12.x
  • UnityPy: 1.25.0 (fails), 1.23.0 (works)
  • Sample game data source: Stella Sora (Yostar), bundle extension .unity3d

Minimal repro

import UnityPy

env = UnityPy.load("char_11203.unity3d")
for obj in env.objects:
    print(obj.peek_name())

Run Command

PS I:\_CodingWorkspace\test> uv run "i:\_CodingWorkspace\test\test.py"
Error parsing file 'CAB-fc17455868f74b0aa8a95d5b4a3a4a13' as 0: Invalid version string: 2022.3.62f2
2
Error parsing file 'char_11203.unity3d' as 1: Invalid version string: 2022.3.62f2
2
Traceback (most recent call last):
  File "i:\_CodingWorkspace\test\test.py", line 2, in <module>
    env = UnityPy.load("char_11203.unity3d")
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\environment.py", line 63, in __init__
    self.load_file(arg)
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\environment.py", line 152, in load_file
    f = parse_file(reader, self, name=stream_name, typ=typ, is_dependency=is_dependency)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\ImportHelper.py", line 155, in parse_file
    raise e
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\ImportHelper.py", line 149, in parse_file
    f = files.BundleFile(reader, parent, name=name, is_dependency=is_dependency)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\files\BundleFile.py", line 53, in __init__
    self.read_files(blocksReader, m_DirectoryInfo)
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\files\File.py", line 82, in read_files
    f = ImportHelper.parse_file(node_reader, self, name, is_dependency=self.is_dependency)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\ImportHelper.py", line 155, in parse_file
    raise e
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\ImportHelper.py", line 147, in parse_file
    f = files.SerializedFile(reader, parent, name=name, is_dependency=is_dependency)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\files\SerializedFile.py", line 273, in __init__
    self.set_version(unity_version)
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\files\SerializedFile.py", line 360, in set_version
    self.version = UnityVersion.from_str(string_version)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\UnityVersion.py", line 61, in from_str
    raise ValueError(f"Invalid version string: {version}")
ValueError: Invalid version string: 2022.3.62f2
2

Actual result on 1.25.0

  • It fails with:
    • Error parsing file 'CAB-...' as 0: Invalid version string: 2022.3.62f2
    • Error parsing file '...char_11203.unity3d' as 1: Invalid version string: 2022.3.62f2
    • ValueError: Invalid version string: 2022.3.62f2 (sometimes appears as 2022.3.62f2 followed by an extra trailing line/character in output)

Expected result

  • Bundle should load successfully (same file works on 1.23.0).

Additional info

  • Downgrading UnityPy to 1.23.0 makes the same script and same file run normally.
  • This looks like a parsing regression in newer versions for certain serialized data/version string handling.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions