Skip to content

Releases: Diphome/UnityRift

v0.23.0

Choose a tag to compare

@Diphome Diphome released this 13 Sep 07:01

UnityRift v0.23.0

This release marks a scope change: UnityRift is now focused on reading and converting Unity content — assets, whole scenes, effects, the Unity → Godot 4 pipeline, and .NET/IL2CPP inspection as C# stubs.

Changed

  • Native reverse-engineering tooling has been split out into a separate project. The Ghidra / Il2CppDumper package, decompilation helpers, Frida hook generation, and protocol/wire-layout analysis are no longer part of UnityRift.
  • IL2CPP support that the asset pipeline needs is kept: Cpp2IL dummy-assembly generation (--il2cpp) for the .NET class explorer, custom MonoBehaviour fields, and Godot script stubs. Dummy DLLs are still exportable via -m dotnet --dotnet-export-dll.
  • The -m il2cpp mode and the --il2cpp-* analysis options / il2cpp_* MCP tools were removed.

Downloads

  • UnityRift.net472 / UnityRift.net8 / UnityRift.net9 — the GUI (Windows).
  • UnityRift.cli — the portable CLI (.NET 8).

v0.22.0

Choose a tag to compare

@Diphome Diphome released this 09 Sep 18:11

UnityRift v0.22.0

Everything since v0.21.1.

New

  • Clear error for custom-encrypted bundles. Bundles protected by a custom (non-UnityCN) encryption scheme now fail with a concise warning explaining the bundle can't be opened without the game's key/method, instead of an opaque decompression stack trace. Full technical detail remains at --log-level debug.
  • CLI dump/info accept any asset type. These read-only inspection modes no longer require --load-all for non-exportable types (e.g. -m dump -t animationClip now works directly). The actual exporters stay restricted to exportable types.
  • Unity-correct Sprite / SpriteAtlas RenderData GUIDs (port of upstream AssetStudio PR #1034). Dumped m_RenderDataKey / m_RenderDataMap GUIDs now match Unity's value. Atlas↔sprite association is unaffected.

Fixes

  • 0×0 sprites no longer abort a batch export. Zero-size sprite regions (removed/invisible sprites, e.g. PvZ3 CN) previously threw and broke the whole parallel export; they are now skipped with a warning and the export continues.
  • AnimatorOverrideController clips exported/previewed as empty (0.00s). The override map (original → override) is now followed instead of exporting the base controller's empty template_* placeholder clips, so animator FBX export and the GUI animator preview get the real, playable clips.
  • MonoBehaviour preview: blank assembly dialog + "Failed to read type" spam. Mono games now auto-load the Managed folder found next to the loaded files, so MonoBehaviour script fields resolve on click without a folder dialog or per-field read errors. IL2CPP behaviour is unchanged.
  • GUI type filter missing lazy-loaded asset types. Lazy placeholders (Mesh, AnimationClip, Font, TextAsset, MovieTexture, Shader) are now marked exportable from their real ClassID, so those types appear in the Filter Type menu again.
  • Split files in zip/APK logged a misleading CWD-relative path. Merged *.split0/1/… chunks now log their correct virtual path under the archive. (Loading was always correct; only the label was wrong.)
  • CLI: a missing value for a known option no longer suggests the option you just typed (e.g. --fbx-animation no longer prints "Did you mean [--fbx-animation]?"). It now prints the option's own description. Unknown/misspelled options still use the fuzzy suggester.

Quality / perf

  • Reduced log noise: "Failed to read type" messages moved from Info to Debug and reworded (expected for MonoBehaviour with no assembly loaded); redirected/MCP output no longer accumulates [000%][001%]… / "Converted [k/N]" progress spam.
  • GUI: right-clicking a large multi-selection of Mesh/AnimationClip no longer hydrates every selected asset just to build the context menu.

Packages

  • UnityRift-v0.22.0-GUI-net9-win-x64.zip — GUI, .NET 9 (recommended)
  • UnityRift-v0.22.0-GUI-net8-win-x64.zip — GUI, .NET 8
  • UnityRift-v0.22.0-GUI-net472-win-x64.zip — GUI, .NET Framework 4.7.2
  • UnityRift-v0.22.0-CLI-net8-win-x64.zip — command-line tool, .NET 8

Framework-dependent builds (SelfContained=false) — the matching .NET runtime must be installed.

v0.21.0

Choose a tag to compare

@Diphome Diphome released this 07 Sep 21:24

Highlights

VideoClip preview

  • Play VideoClip assets right in the preview with native transport controls (embedded WebView2; plays mp4/H.264 and webm/VP8/VP9), falling back to an OS poster-frame thumbnail when the runtime isn't available.

Spine (esotericsoftware) export — new

  • Detect and export Spine 2D skeletal models: skeleton (.json/.skel) + atlas (.atlas) + texture pages (.png) reassembled into a per-model folder, ready to re-import into the Spine editor.
  • Hybrid detection: authoritative SkeletonDataAsset/AtlasAsset MonoBehaviour grouping when readable, else robust format heuristics (works on IL2CPP builds and when textures live in a separate bundle).
  • Available in the GUI (Export → To Spine), the CLI (-m spine), and the MCP server (spine_export).

Audio

  • AAC audio clips now play in the preview — FMOD can't stream AAC/M4A, so it's now decoded fully with createSound (the path the exporter already used).

Ported upstream fixes (aelurum/AssetStudioMod)

  • FBX: guard a null bone frame during mesh export (no more NullReferenceException). (#129)
  • CLI: --fbx-ascii-format, load AnimationClips in animator mode so --fbx-animation all binds clips, allow --fbx-uvs-as-diffuse in animator mode. (#124)
  • CLI: --filter-exclude-mode (invert the filter) and --strip-path-prefix (trim a container-path prefix when grouping). (#113)
  • Sprite: optional full canvas-size export (opt-in --sprite-canvas / GUI checkbox). (#115)
  • Bump native Kyaru.Texture2DDecoder to 0.2.0. (#130)

GUI fixes

  • "Go to scene hierarchy" only shows for assets that have a scene node, and reliably jumps + scrolls to it.
  • Asset List / Asset Classes rows no longer vanish after switching tabs and back (double-buffer repaint).
  • Preview overlay text (asset info + FMOD audio labels) is readable in light theme.
  • A GUI screenshot in the README.

Full changelog: v0.20.0...v0.21.0

v0.20.0

Choose a tag to compare

@Diphome Diphome released this 07 Sep 16:32

Highlights

GUI modernization

  • Modern dark/light theme with live in-place switching (no restart): layered dark palette, owner-painted tabs (DarkTabControl), dark list headers + zebra rows + flat selection, full-row tree selection, dark title bar/scrollbars, an icon toolbar, and a ProgressDialog popup. Theme is locked once a project is loaded.
  • Content search: new "Include (+ content)" mode matches inside TextAsset text and the MonoBehaviour typetree dump (extracted lazily, cached per asset).
  • Continuous loading popup with named phases so a load never reads as a freeze, plus a "Discover assemblies" button (assemblies no longer auto-load).
  • Segoe UI / Consolas fonts, Per-Monitor V2 DPI, native search placeholders, empty-state overlays. The About page was removed.

Performance & memory

  • Lazy object parsing: heavy objects (Mesh, AnimationClip, Shader, Font, TextAsset, Avatar, AnimatorController, MovieTexture) load as placeholders and hydrate on first use.
  • Auto disk decompression when a load would exceed a quarter of physical RAM; bundle temp files moved to %TEMP%\UnityRift.
  • Double-buffered virtual asset list with lazy cells; cached GDI objects.
  • Measured on a 6.4 GB / ~20k-file project: resident memory after load dropped from 23.6 GB to 3.3 GB.

Export

  • Standalone Mesh export honors the model-format option: glTF/GLB now apply to single meshes (geometry only); FBX keeps the classic OBJ output.

Live2D

  • Emit a terminating segment for single-keyframe (constant) motion curves, fixing an out-of-bounds crash in Cubism Editor's viewer and the Cubism SDK motion parser.

Full changelog: v0.19.0...v0.20.0

v0.19.0

Choose a tag to compare

@Diphome Diphome released this 06 Sep 10:33

First public release of UnityRift — a toolkit for reverse-engineering and porting Unity games, with a full Unity → Godot 4 pipeline at its center.

UnityRift began as a fork of AssetStudioMod (itself a fork of AssetStudio) and has grown into a distinct project. Huge thanks to Perfare, aelurum and nesrak1 — the original asset-extraction features are still here and credited in the README and LICENSE.

Highlights

  • Unity → Godot 4 scene export — meshes, materials, particles, lights, cameras and MonoBehaviour script stubs exported straight into a ready-to-open Godot 4 project.
  • Unity → Godot 4 materials & FX — shaders to .gdshader, ParticleSystems to GPUParticles3D.
  • IL2CPP support (via Cpp2IL) — dummy assemblies, a .NET class explorer, and a Ghidra / Il2CppDumper package.
  • glTF 2.0 export as an FBX-free alternative, plus classic FBX export.
  • Type-tree database (TPK) for type-tree-stripped builds.
  • Runs from the GUI, the CLI, or an MCP server for AI agents.

See the README for the full feature list.

Downloads

GUI (Windows x64) — unzip anywhere and run UnityRiftGUI.exe:

File Requirements
UnityRift-v0.19.0-GUI-net472.zip No install needed — uses the .NET Framework 4.7.2 built into Windows 10/11. Most compatible; start here if unsure.
UnityRift-v0.19.0-GUI-net8-windows.zip Needs the .NET 8 Desktop Runtime.
UnityRift-v0.19.0-GUI-net9-windows.zip Needs the .NET 9 Desktop Runtime. Includes the newest UI work (dark mode).

CLI + MCP server (cross-platform):

File Requirements
UnityRift-v0.19.0-CLI+MCP-portable.zip Needs the .NET 8+ Runtime. Native libs for Windows / Linux / macOS bundled. Run UnityRiftCLI.exe --help (Windows) or dotnet UnityRiftCLI.dll --help (any OS). The mcp/ folder holds the MCP server — see mcp/USAGE.txt.

This is an early release of a young project. Bug reports and feature requests are very welcome via the issue tracker; questions and ideas go to Discussions. Please don't attach copyrighted game files.

Not affiliated with, sponsored, or authorized by Unity Technologies. Use it for interoperability, research and preservation, and respect the rights and terms of any content you process.