Skip to content

Valheim Unity Project Guide

CookiexMilk edited this page May 3, 2026 · 187 revisions
ℹ️ Note

This is NOT a guide for modding. It is a guide for getting started with custom asset creation for Valheim.

In this guide we RIP using the Dummy Shader Setting. Read about the differences here and what you should pick.

Carefully read the guide and follow every step in the same order as written.

Before you start, what is your goal with the RIP?

  1. To browse assets and export textures, materials, meshes.
  2. To browse assets, view MonoBehaviours, components but not export anything.
  3. To export assets to a new project in order to create mod(s).

If it's 1 or 2, you can skip steps 7 and 8 and just open the project as is.
If it's 3, you still want to follow steps 7 and 8.

Step 9 depends on whether you pick Yaml or Dummy.
Follow it if you pick Yaml and skip it if you pick Dummy.

Prerequisites

Download/install the following:

  1. Git
    • Choose the version for your machine. Here is a quick link to the Windows download: Install Git on Windows
    • Once Git is installed, reboot your machine and continue through this guide! Rebooting might not be needed in some cases, but it's advised.
  2. AssetRipper
    • Download the most recent version and extract it somewhere for later.
  3. Unity Hub
    • Click on Download Unity Hub and install it.
  4. Unity 6000.0.74f1
    • Click on the link in Install this version with Unity Hub.
    • When installing Unity, you can uncheck all optional modules.
    • Note: The reason we're not installing 6000.0.61f1 is that it's one of the many versions that has an issue with installing packages. You can choose a version higher than this and it will probably work just fine.

Step 1: Rip Assets

  1. Run AssetRipper by launching AssetRipper.GUI.Free.exe. It will open a console window as well as a page in your browser. Click File -> Settings

Settings

  1. Use these settings.

Settings

  1. Go to FileOpen Folder. Find your Valheim directory and select the top-level "Valheim" folder.

Settings

  • If this error shows up, you can ignore it. Ignore
  1. Once loaded, go to ExportExport all Files and select a new empty directory (i.e. ValheimRIP).

Settings

  1. Once loaded, click Select Folder and then Export Unity Project and let it complete.

Settings

  1. You will now have two folders inside your exported folder called AuxiliaryFiles and ExportedProject. Delete AuxiliaryFiles and rename ExportedProject to something like ValheimRIP and move it to its permanent location.

  2. Find the manifest.json in Packages located in the folder you exported to and add these values. In case your manifest.json got corrupted, you can copy-paste it from HERE

    "com.unity.inputsystem": "1.14.2",
    "com.unity.ugui": "2.0.0"
    

manifest.json

  1. Delete these files + their META files in Assets/Plugins. It is very important you do this before opening your project.

    Unity.InputSystem.dll, 
    Unity.InputSystem.ForUI.dll
    Unity.TextMeshPro.dll
    UnityEngine.UI.dll
    
  2. Restoring shaders (only do this step if you picked YAML)

    1. Download Yaml shaders.
    2. Copy the content of the zip into Assets/Shader and overwrite.

Step 2: Open in Unity

  1. Run Unity Hub.

  2. Click on Open (or Add in new versions).

Unity Hub

  1. Find the folder where you moved ValheimRIP to.

  2. Select ValheimRIP folder which will show you this warning. Select 6000.0.74f1 and then click Open with 6000.0.74f1.

Missing Editor

  1. This will show you another warning. Click Change version.

Change Editor version

  1. A third Window will open confirming that you want to continue. Click Continue.

Non-Matching Editor

  1. If the Precompiled Assemblies Update Consent Request shows up, click Yes.

Precompiled Assemblies Request

  1. If the API Update Required message box appears, click I Made a Backup. Go Ahead!.

    2022-08-04 02_09_59-API Update Required

    If the Do you want to enable the backends? appears, click Yes.

    2022-08-04 02_09_59-API Update Required
  2. Wait for the project to fully load (this can take up to 30 minutes).

    1. Go to Edit -> Project Settings -> Graphics -> Built-in Shader Settings -> Deferred and change Custom Shaders to Built-in Shader.
    2. Search for portal_wood, open the prefab, click on Particle System in the Hierarchy to the left, and check if the particles/effects look good.
    3. While in portal_wood, click the parent and check if all components are intact and there are no missing scripts.
  3. Click Window and then open AssetBundleBrowser, click the first bundle and then Ctrl+A to select all, now delete and wait for it to finish. Depending on your system, it might take a little bit and then it will do another import session like when you first opened the rip.

  4. You should now have a good RIP you can work in. There will still be a few missing materials and scripts in scenes. These are not urgent to fix, but you can if you want. For convenience, you can set all missing materials to Standard. For fonts, you can use any of the TMP ones. This step is only useful if you care about exploring scenes with working shaders and text; if you don't, you can ignore this. It's possible to fully restore scenes and correct any shaders to match vanilla. That's, however, outside the scope of this guide, and you can join any modding Discord for help with that.

  5. This step is optional and not needed if your prefabs already have components; it's only for advanced users who want to do a full repair and know which options to pick. If your prefabs have missing scripts, make a new RIP instead, as that will be much faster.

    1. Install NG Script Recovery via Package Manager from the Unity Asset Store
    2. Open NG Script Recovery from the inspector where the missing script is, or from the menu Window -> NG Tools -> NG Missing Script Recovery
    3. In the Project tab, select "Prefab", "Asset", "GameObject in Scenes", and "Scenes". Hit the Scan button.
    4. Hit "Start Recovery" to perform an automatic recovery.
    5. You may see a pop-up asking you to import TMP Essentials. Click Import TMP Essentials and close the pop-up.
    6. Finish the script recovery by manually picking the best match for any remaining broken objects until the process is finished.
  6. [Optional] Create a copy of your ValheimRIP folder in the same directory. Rename the copy to something like ValheimRIPCustom. Your ValheimRIP folder will be used as a clean version of the ripped game assets and the ValheimRIPCustom version is where you will duplicate, create new, or edit existing assets.

  7. [Optional] Create another copy of your ValheimRIP and call it ValheimTemplate, and then delete the content of the Asset folder. You can then copy-paste this project for each mod you want to make. You then use ValheimCustom to export assets into your new clean project. This is beneficial as you only export what you need and don't accidentally bring in the whole game from automatic references. Note: You can either delete the Plugins/Scripts when cleaning the Assets folder and then bring them back when exporting the asset, or keep them intact and remember to untick them during export. If you import them a second time, you will get compilation errors.

  8. [Optional] You can also download a fresh empty Unity 6 project with Valheim Project settings HERE. Download the folder "ValheimTemplate", rename it, and open it in the Unity Hub.

If you need further help, you can join any of the modding Discords linked here.

🥳 That's it. Happy modding! Keep reading for more information.

Notes About Shaders

  • Dummy shaders are editable and can be used with ShaderReplacer/Jotunn's Mocking System, but effects and particles appear broken in Unity.

  • YAML shaders are not editable, but effects and particles display correctly in Unity. Use the ZIP provided earlier in the guide. Once restored, you will not need to repeat this step.

What Should I Pick?

If you do not care about material accuracy, you can choose this option. It does not produce Binary Shader Warnings on startup, but materials will appear purple unless you replace them.

  • If you do not care about material accuracy or are only using them as a reference, you can choose this option. It does not produce any Binary Shader Warnings on startup, but will result in purple materials if you do not replace them.

  • If you care about having accurate materials in your Unity RIP to use as a reference while experimenting with other shaders, this option is required. It will produce Binary Shader Warnings on startup if you do not replace them, and will also result in purple materials.

What Next?

  • Regardless of which option you choose, you will need to replace the shaders to get working materials in your game. If you launch the game without replacing them, materials will appear purple. YAML shaders will also spam Binary Shader Warnings on each startup, which can be annoying, while Dummy shaders do not.

  • There are several ways to replace materials. You can switch them to Standard or experiment with other Unity shaders. Custom assets often come with their own materials. If you want to use Vanilla materials, you will need to use ShaderReplacer or Jotunn's Mocking System.

Notes on Setting up Graphics APIs

If you are creating assets for the game, you will want to make sure your build is compatible with Vulkan and OpenGL graphics. If you do not do this for your project, then some items in the game will show up incorrectly, typically untextured bright pink/magenta, for some players and there will be related errors in Player.log.

  1. Open your unity development project.
  2. Go to Edit -> Project Settings.
  3. In the Player tab find the "Other settings".
    1. Uncheck "Auto Graphics API for Windows".
    2. Under "Graphics APIs for Windows" make sure both "Direct3D11" and "Vulkan" are added.
    3. Uncheck "Auto Graphics API for Linux".

Error message example, showing missing OpenGL support:

Desired shader compiler platform 15 is not available in shader blob
ERROR: Shader Unlit/Color shader is not supported on this GPU (none of subshaders/fallbacks are suitable)

Notes on Current Issues

Common Errors

These common error logs can be ignored for now.

Destroy may not be called from edit mode! Use DestroyImmediate instead.
Destroying an object in edit mode destroys it permanently.

Assertion failed on expression: 'CurrentThreadIsMainThread()'

Common Issues

  • Mouse does not get locked to the playtest window.
  • Some UI elements like the stamina bar don't disappear or will flash.

Game Versions 0.214.3 - 0.217.25

Use these versions when ripping the older game version:

  • AssetRipper 0.3.0.0
    • This version is a December pre-release, not the latest version.
    • Under Assets, download AssetRipperGUI_Your Operating System.zip.
    • Extract it somewhere for later.
  • ValheimExportHelper 1.5.0
    • Under Assets, download ValheimExportHelper.zip.
    • Extract all (4) files to the AssetRipper/Plugins directory (create a Plugins folder if it is missing).
  • Unity 2020.3.45
    • Click on the link in Install this version with Unity Hub..
    • When installing Unity, you can uncheck all optional modules.

Old Guides 2022

Installing Asset Bundle Browser

The purpose of the Unity Asset Bundle Browser tool is to export your modded prefabs into a standalone asset bundle.

  1. Go to WindowPackage Manager.
    2022-07-28 00_04_28-
  2. Click on the ➕▼ button and choose Add package from git URL.
    2022-07-28 00_04_56-Package Manager
  3. Paste https://github.com/Unity-Technologies/AssetBundles-Browser.git and click Add.
    2022-07-28 00_05_15-Package Manager

Unity Project for Valheim Asset Development

ℹ️ Note

This is a minimalistic tutorial for achieving asset creation in Valheim. It will not allow scene browsing or play testing.

If you want more, follow the advanced tutorial.

Step 1: Rip Assets

  1. Run AssetRipper.

  2. Set Script Export Format to Dll Export Without Renaming.
    2022-07-26 08_01_33-Asset Ripper GUI

  3. Go to FileOpen Folder and find your Valheim directory.
    2022-07-21 19_15_02-Asset Ripper GUI

  4. Once loaded, go to ExportExport all Files and select a new empty directory (i.e. valheim_unity).
    2022-07-21 19_16_21-Asset Ripper GUI

  5. Wait for it to finish.

Step 2: Open in Unity

  1. Run Unity Hub.

  2. Click on Open.
    2022-07-26 00_44_02-Unity Hub 3 2 0

  3. Find and select valheim_unity/valheim/ExportedProject and click Open.

  4. If the API Update Required message box appears, click I Made a Backup. Go Ahead!.

  5. If the Enter Safe Mode? message box appears... (click for more) 2022-07-26 01_45_50-Enter Safe Mode_
    1. Click Enter Safe Mode.

    2. If you see two error messages involving Library\PackageCache\com.unity.collab-proxy...
      2022-07-26 01_53_20-ExportedProject - SAFE MODE - 2020 3 33f1 _DX11_

      1. Go to WindowPackage Manager.
        2022-07-26 15_43_48-ExportedProject - SAFE MODE - 2020 3 30f1 _DX11_

      2. Click on the Packages dropdown and choose In Project.
        2022-07-26 01_57_39-Package Manager

      3. Select Version Control from the list and click Remove.
        2022-07-26 08_10_04-Package Manager

    3. If you have other problems, consult the Discord.

  6. Wait until the project is fully loaded.

Step 3: Compatibility Fixes

These changes are to fix compatibility issues with exported assets in Valheim.

  1. Click EditProject Settings...
    2022-07-26 01_54_39-

    1. Under PlayerOther SettingsRendering...
      1. Uncheck Auto Graphics API for Windows
      2. Uncheck Auto Graphics API for Linux
      3. Click the under Graphics APIs for Windows and choose Vulkan to add it to the list.
        2022-07-26 21_58_48-AssetBundle - SampleScene - PC, Mac   Linux Standalone - Unity 2020 3 33f1 Perso
        2022-07-26 21_47_01-Project Settings
    2. Under GraphicsBuilt-in Shader Settings, change the Deferred option from Custom shader to Built-in shader.
      2022-07-26 08_17_30-Project Settings

(Advanced) Ripping Assets for Valheim Data Mining and Scene Viewing

⚠️ Warning

This tutorial is for advanced users. It may also quickly become outdated.

Step 1: Rip Assets with Source Code

Follow Step 1: Rip Assets from the base tutorial with the following changes:

  • Do NOT change Script Export Format or any other options. Leave it as Decompiled (the default).

Step 2: Resolving Source Code Issues

Make the following changes to the source files in your valheim/ExportedProject/Assets/MonoScript directory created by the previous step. These can be done easily by opening the directory in a powerful editor (i.e. Visual Studio Code or similar).

  1. Replace all of the following occurrences in all project files (Replace in Files):
    1. StructLayout(0StructLayout(LayoutKind.Sequential
    2. StructLayout(2StructLayout(LayoutKind.Explicit
  2. In assembly_steamworks/Steamworks/Callback.cs, delete the entire block in private event DispatchDelegate m_Func { ... }, replace it with private event DispatchDelegate m_Func;.
  3. In assembly_steamworks/Steamworks/CallResult.cs, delete the entire block in private event APIDispatchDelegate m_Func { ... }, replace it with private event APIDispatchDelegate m_Func;.
  4. In assembly_utils/Utils.cs, replace CompressionLevel.Fastest with System.IO.Compression.CompressionLevel.Fastest.
  5. In assembly_valheim/Heightmap.cs delete [ExecuteInEditMode].

Step 3: Continue the Base Tutorial

Continue the base tutorial as normal from Step 2: Open in Unity.

Other Tutorials

Youtube

Valheim Modding - Ripping the game (Unity Project)

Clone this wiki locally