A Valheim mod stub project using Jötunn including build tools and a basic Unity project stub. There is no actual plugin content included, just a bare minimum plugin class.
These are quick setup steps with no context provided. Please see Jötunns Github Pages for a more in depth guide and documentation.
How to setup the development enviroment for this project.
BepInExPack_Valheim
into your Valheim root folder. You should now see a new folder called <ValheimDir>\unstripped_corlib
and more additional stuff.JotunnModStub
. You can also use the template function of github to create a new, clean repo out of it and clone that.DoPrebuild.props
in the project base path and change ExecutePrebuild
to true
if you want Jötunn to automatically generate publicized versions of the game dlls for you.<JotunnModStub>\JotunnModStub.sln
. Right-click on the project or solution in the Solution Explorer and select Manage NuGet packages...
. It should prompt you a message at the top that some NuGet-Packages are missing. Click "Restore" and restart Visual Studio when finished.A new environment file Environment.props
can be created in the projects base path <JotunnModStub>
.
Make sure you are not in any subfolder.
Paste this snippet and change the paths accordingly.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Valheim install folder. This is normally found automatically, uncomment to overwrite it. Needs to be your path to the base Valheim folder. -->
<!-- <VALHEIM_INSTALL>X:\PathToYourSteamLibary\steamapps\common\Valheim</VALHEIM_INSTALL>-->
<!-- This is the folder where your build gets copied to when using the post-build automations -->
<MOD_DEPLOYPATH>$(VALHEIM_INSTALL)\BepInEx\plugins</MOD_DEPLOYPATH>
</PropertyGroup>
</Project>
Included in this repo is a PowerShell script publish.ps1
. The script is referenced in the project file as a post-build event. Depending on the chosen configuration in Visual Studio the script executes the following actions.
<ValheimDir>\BepInEx\plugins
(or whatever path you set as MOD_DEPLOYPATH).<ValheimDir>\BepInEx\plugins
(or whatever path you set as MOD_DEPLOYPATH).<JotunnModStub>\Packages
ready for upload to ThunderStore. Dont forget to include your information in the manifest.json and to change the project's readme file.New Assets can be created with Unity and imported into Valheim using the mod. A Unity project is included in this repository under <JotunnModStub>\JotunnModUnity
.
Individual Components
-> Visual Studio Tools for Unity
.Settings
-> Licence Management
.assembly_*.dll
from <ValheimDir>\valheim_Data\Managed
into <JotunnModStub>\JotunnModUnity\Assets\Assemblies
. Do this directly in the filesystem - don't open Unity first or import the dlls directly in Unity.AssetBundle Browser
package in the Unity Editor via Window
-> Package Manager
for easy bundle creation.You can enable remote debugging of your mod code at runtime via dnSpy or Visual Studio. Before being able to attach a remote debugger you will have to prepare your game install and turn it into a "Development Build" once:
<UnityInstall>\Editor\Data\PlaybackEngines\windowsstandalonesupport\Variations\win64_development_mono
UnityPlayer.dll
and WinPixEventRuntime.dll
from that folder into your game installation folder. Overwrite existing files.<Valheim>\valheim_Data\boot.config
with a text editor (Notepad++ for example) and add a new line player-connection-debug=1
to it.Development Build
text at the lower-right corner of the screen.Your own code can be debugged in source with Visual Studio itself.
Individual Components
-> Visual Studio Tools for Unity
)Debug
. The publish.ps1 PowerShell script from this repo...
Debug
-> Attach Unity debugger
Refresh
as the debugger only appears after the game has loaded into the main menu.When Valheim updates it is likely that parts of the assembly files change. If this is the case, the references to the assembly files must be renewed in Visual Studio and Unity.
assembly_*.dll
from <ValheimDir>\valheim_Data\Managed
into <JotunnModStub>\JotunnModUnity\Assets\Assemblies
. Ctrl+R
. This reloads all files from the filesystem and "re-imports" the copied dlls into the project.