Browse the 3D models, maps, textures, sprites, sounds, animations and text inside Unity, Source, Source 2, Unreal and Fallout 1/2 games, including games that have shut down and can't be played anymore. Any other game's loose files open too, and new engines can be added with plugins.
Unzip it and run UniView.exe. You don't need Python.
Download · Screenshots · Engines · Features · How to use · Plugins · Compatibility · Build · FAQ
| What it opens | Unity, Source, Source 2, Unreal and Fallout 1/2 game folders; loose files and zip archives of any game; any engine that has a plugin |
| What it shows | Models and maps (3D), textures, sprites, sounds (built-in player), animations (played on their models), text files; everything else can be exported as-is |
| What it exports | Models as .obj + .mtl + .png or a single .glb (both open textured in Blender), textures as .png, sounds as .wav/.mp3/.ogg, animations as JSON keyframes or a rigged, animated .glb, text as-is |
| Game files | Read only. UniView never changes anything |
| Tested with | Robocraft, Muck, Valheim (Unity) · Team Fortress 2, Portal (Source) · CS2, Deadlock (Source 2) · Satisfactory, Headliners, Dead as Disco (Unreal) · Fallout 1 & 2 · Project Zomboid, Serious Sam 2 (loose files) |
| Built with | UnityPy · PySide6 · PyVista |
- Go to the latest release.
- Download
UniView-vX.Y.Z-win64.zip. - Unzip it anywhere and run
UniView.exe.
Windows SmartScreen may warn you the first time because the exe isn't code-signed. Click More info → Run anyway.
Projects page: one box per game. Green means loaded, red means not loaded, and each box shows its file count. The console at the bottom shows what the app is doing.
Game view: the asset list with thumbnails on the left, the 3D model in the middle, and model info plus materials/textures on the right.
Each game is read by an engine plugin. UniView picks the plugin automatically. To choose one yourself, right-click a game and use Read with engine.
| Engine | Games (examples) | Models | Textures | Sound | Other |
|---|---|---|---|---|---|
| Unity | Valheim, Muck, Among Us, Robocraft, Megabonk | ✔ with materials and their colors; ✔ scenes & prefabs (every object placed); ✔ terrains | ✔ + sprites, sprite sheets, 2D animations | ✔ AudioClips | ✔ text; fonts (.ttf/.otf); videos; scripts & data (item stats, configs...); animations (generic and humanoid) play on their skinned models and export as animated GLB |
| Source | TF2, HL2, Portal, CS:S, L4D2, GMod | ✔ .mdl with .vmt materials; ✔ maps (.bsp) with terrain and static props |
✔ .vtf |
✔ wav/mp3 | ✔ text |
| Source 2 | CS2, Dota 2, Deadlock, HL: Alyx | ✔ .vmdl_c with materials |
✔ .vtex_c |
✔ .vsnd_c |
✔ text |
| Unreal 4/5 | Satisfactory, Dead as Disco, Headliners | ✔ static + skeletal meshes, textures found through their materials | ✔ incl. virtual textures | ✔ Ogg/WAV SoundWaves, Wwise .wem, FMOD .bank* (not Bink Audio yet) |
✔ ini/json/csv...; raw export of the rest |
| Fallout 1/2 | Fallout, Fallout 2 | – | ✔ FRM sprites (whole animation strip), RIX images | ✔ ACM* | ✔ MSG text |
| Loose files & archives | any other game (Project Zomboid, Serious Sam 2...) | ✔ .obj, DirectX .x |
✔ png/jpg/tga/dds/bmp... | ✔ wav/mp3/ogg, plus anything vgmstream* plays | ✔ text; files inside .zip/.gro/.pk3 archives |
* Needs the free vgmstream decoder: Help → Optional tools... downloads it once (from its official GitHub releases) into tools/ next to UniView. UniView offers this at startup when it's missing.
- Textures per part: models with several materials show each part with its own texture. Materials without a texture show their color (and export it in GLB/OBJ); the info panel shows each material's color swatch, and hovering a material lists its shader values.
- Fonts, videos, scripts & data (Unity): fonts preview as a sample sheet and save as
.ttf/.otf; VideoClips play in a built-in video player; named MonoBehaviours / ScriptableObjects (item stats, loot tables, dialogue, configs) show every field as readable text and save as JSON. Script fields are read from the game's own code (Mono, or IL2CPP'sGameAssembly.dll+global-metadata.dat), each asset is labeled with its class, and references to other objects say what they point to (e.g.icon → Texture2D 'ItemBattery'). Games that use Addressables (StreamingAssets/aa) load too, and models find textures stored in other bundles. - Scenes & prefabs (Unity): open a level or a prefab to see every object in place, with static batching, hidden objects and lower-detail LODs handled.
- Terrains (Unity): terrain heightmaps show as 3D ground (listed as
Terrain: name, and inside their scenes), painted with the terrain layers blended by their splat maps. Holes are cut out. - Sprite sheets & 2D animations (Unity): a texture outlines every sprite cut from it (toggle Sprite outlines) and lists them; a sprite animation clip plays frame by frame with Play sprite animation.
- Maps: Source
.bspmaps show the whole level with textures, terrain (displacements) and all static props; the 3D skybox is left out. - Sounds play in a built-in player (play/pause, seek, volume, autoplay) and save as
.wav/.mp3/.ogg. - Animations (Unity): each clip lists the bones it moves; pick a model with a matching skeleton and press Play on model to watch it (play/pause and a time slider), press Save animated GLB... for a rigged, animated model that opens in Blender, or save the keyframes as JSON. Humanoid (muscle) clips play on any humanoid character: each character's Avatar turns the muscle values into its own bone rotations, the way Unity does.
Unreal notes:
- Both
.pakfiles and IoStore containers (.utoc/.ucas) are read. Packages are sorted into models, textures and other files by the class stored in their headers. The first time a game opens, this takes a few seconds; the result is cached incache/. - Encrypted games need the game's AES key: right-click the game → Engine settings (Unreal)... and paste it (one per line if there are several). Without it, UniView tells you which containers were skipped.
- Oodle-compressed files work if an
oo2core_*_win64.dllis found. Many games ship one, and UniView looks in the game's folder, next toUniView.exeand in your Steam libraries. - Models and textures are found by their data layout instead of the game's property schema, so no
.usmapmappings file is needed. Nanite-only meshes and UE3 games (.upk) aren't supported.
Finding things
- Search with filters: type a name, or add filters like
tris>1000,size>1mb,w>=512ortype:mesh. Combine them, e.g.gun tris>2000 size<5mb. - Sortable columns: click Name, Info (triangles or pixel size) or Size to sort. Every asset is measured in the background.
- Favorites: press Ctrl+D (or right-click) to star the good stuff, then pick ★ Favorites in the type box to see only those. Favorites are saved per game.
- Grid view: big thumbnails you can flip through with the arrow keys (View → Grid, or Ctrl+2).
- Jump between related assets: double-click a model's texture to jump to it. A texture lists every model that uses it (click one to jump back), and a sprite links to its sprite sheet.
Model viewer
- Rotate, and zoom with the mouse wheel or +/−. Wireframe, edges, vertex colors and texture alpha can each be toggled on and off. The model's texture is found automatically.
- UV sets: switch between UV0/UV1/... (UV1 is often the baked-lighting layout), and use UV layout to see the UVs drawn over the texture.
- Model panel: vertex/triangle counts, the source file, the prefab path, what uses the model, and its materials and textures.
- Fly camera (F): walk through scenes and maps like a game camera: WASD to move, Q/E down/up, drag to look around, Shift for speed, the mouse wheel sets the speed, double-click a spot to jump there. Scenes, maps and terrains open in it; walls stay drawn right up to the camera, so you can go inside buildings.
- Animation playback: play Unity animation clips (generic and humanoid) on their skinned models.
- Texture viewer: zoom under the mouse, drag to pan, with a checkerboard background for transparency.
Export
- OBJ + MTL + PNG or GLB (one file with the textures inside). Skinned models (Unity) save to GLB with their skeleton and skin weights, and Save animated GLB... on an animation adds the clip, so a rigged, animated character opens in Blender.
- Open in Blender (Ctrl+B): exports the model and opens it in Blender in one click. Blender is found automatically, or you can point to it.
- Bulk export of all models, all textures, everything shown in the list, or a selection. It can keep the game's folder structure (e.g.
assets/prefabs/weapons/...) so big dumps stay easy to browse. - Export as Unity project (Unity games: right-click the game on the Projects page): a folder you open with Unity Hub, with the game's textures, models (GLB via Unity's glTFast package), materials, sounds, fonts and text, and its prefabs and scenes rebuilt by a small editor script the first time Unity opens it (menu UniView → Rebuild prefabs and scenes). The game's scripts and custom shaders aren't included: materials go on Unity's built-in shaders.
Projects page
- A box for each game. Green means its assets are already loaded; red means they aren't loaded yet. Each box shows file/asset counts and how well the game works with UniView.
- Drag and drop a game folder onto the page to add it, or use Find games in Steam, which lists every game an engine plugin recognizes.
- Engine and version: each box shows the engine and what UniView can tell about it without loading the game, e.g.
Unity 2019.4.40f1 · IL2CPP,Source · tf, hl2,UE 4.26-5.2 · pak v11 · Oodle. - Catalog your library: tag games (right-click → Tags..., e.g.
lowpoly,fps,dead game), then search, filter by tag, group by tag / engine / engine version / compatibility / loaded, and sort by name, engine version or asset count. The search box takes filters liketag:lowpoly engine:unity version:2019 il2cpp. - Pin favorite games to the top. The most recently opened games come next.
- Notes for each game (right-click → Notes, or the Notes button in the viewer) for quirks and where the good stuff is.
- Progress bar while a game loads, plus a console,
viewer.logandcrash.log.
- Start UniView. The Projects page opens.
- Click Find games in Steam, or + Add game and pick a game's install folder (e.g.
...\steamapps\common\Robocraft). - Click a game's box to load it.
- Pick an asset in the list on the left:
- Model: rotate it in 3D and check its textures in the right-hand panel. Save model + textures exports it.
- Texture: zoom and pan it. Save PNG exports it.
- Sound: press Play (or turn on Autoplay). Save sound... exports it.
- Animation: pick a model and press Play on model.
- Search, sort and star assets (Ctrl+D). Switch to the grid (Ctrl+2) to flip through thumbnails. Right-click assets for more options. Use File → Export … for bulk export.
- ← Projects takes you back. Right-click a game's box to rename it, unload it from memory, or remove it.
Is there a game UniView can't read? You can teach it a new engine without touching UniView's code:
- Copy
plugins/_template.py(next toUniView.exe) toplugins/my_engine.py. - Fill in how to recognize the game's folder and how to read its models and textures.
- Restart UniView. Help → Engine plugins shows what loaded.
The template is already a working "loose files" plugin (images, text and .obj models), so you can start from something that runs. PLUGINS.md explains the API: assets, mesh conventions, materials and the helpers for Valve VPK and Unreal pak archives. A plugin with the same id as a built-in one replaces it, so you can also fix or extend the built-in engines. Pull requests for new engines are welcome.
Needs Python 3.10+ on Windows.
py -m pip install -r requirements.txt
run.bat
Or open a game folder directly: py unity_viewer.py "D:\SteamLibrary\steamapps\common\Robocraft"
build.bat
This creates:
Builds\GitHub: a clean copy of the source (this repo)Builds\Release\UniView-vX.Y.Z\: a standalone app (no Python needed), plus a.zipof it for a GitHub release
The packaged exe is automatically self-tested after building. To also test it against a real game:
build.bat release --test-game "D:\SteamLibrary\steamapps\common\Robocraft"
The version number is __version__ in uniview/__init__.py.
A model shows no texture. Not every model can be traced back to a material. Right-click any texture in the list and choose Apply as texture to current model.
A model looks see-through or odd. Leave Texture alpha off. Many games store other data in the alpha channel. If the texture is upside down, try Flip texture V.
Something crashed or didn't load.
Check the Console, or open crash.log / viewer.log next to UniView.exe. Please attach them when you open an issue.
Why GLB and not FBX? Blender can't import text-format FBX, and there's no simple Python writer for binary FBX. GLB (glTF) opens directly in Blender, Godot, Unity and most other tools, and keeps the textures, bones and animation inside one file.
Does it use a lot of memory? Loaded games stay in memory so they reopen instantly. Right-click a game → Unload from memory to free it.
compat.json is a community list of how well UniView works with each game (works, partial or broken, plus notes and the Unity version it was built with). UniView downloads the latest version at startup and shows it on each game's box. You can turn this off under Help.
To add or update a game, right-click it in UniView → Report compatibility.... That opens a GitHub issue already filled in with the game's details. You can also send a pull request that edits compat.json. The key is the game's install folder name (e.g. steamapps/common/Robocraft → "Robocraft").
- Extracted assets are still owned by the game's creators. Viewing them for personal use is fine, but check before sharing them.
