Troubleshooting
So you have a problem
Like what you are seeing?
Support us as a GitHub Sponsor and get instant access to all our assets, exclusive tools and assets, escalated support and issue tracking and our gratitude. These articles are made possible by our GitHub Sponsors ... become a sponsor today!
Introduction
This section will cover the most common installation issues and how to resolve them. Before we get into the common issues and causes here are a few key bits of information.
Unity Merge
You may know that Unity attempts to merge assets on import.
So what does that mean?
Every asset in your Unity project has a GUID associated with it, which is a globally unique ID so Unity can know that folder A is the same folder A no matter where you move it or even rename it.
Why is this relevant?
If you have any old or customized versions of System Core, Steamworks.NET, etc. then Unity will attempt to merge the new stuff you are installing with the old, even if you are doing it from Package Manager. This will break a lot of things and make a huge mess.
How to prevent the issue?
First fully remove any non-package manager installed versions of Steamworks.NET, System Core or any old Heathen assets ... old Heathen assets would have a copy of System Core in them so remove that.
How to fix it when it goes bad?
So let us say you tried to install, forgot to clean out an old Steamworks.NET or missed a few files or something. To clean this you first should remove the Package Manager version using Package Manager. Next clean out the old offending files and finally reinstall from Package Manager.
So if you have compilation errors or if your Script Defines are a bit of a mess you might need to install these manually from Package Manager ... you can find the process for that here.
Script Defines
Script definitions are used by Unity, Steamworks.NET and Heathen to know what is installed and ready to use and what platform it is currently set to. These definitions are used in code to enable or disable code from compiling under various conditions. This means even with the script files present some code just won't be seen by the compiler unless these definitions are set up properly.
Heathen no longer uses global script definitions but references all definitions as part of the assembly definitions.
These definitions exist only if the related assembly is present. If these defines are not present the code will not compile.