# Installation Guide

### Render Pipeline

**All render pipelines are supported.** The demo scenes are created using URP, which means that all materials and lighting are made using URP, but both Built-In and HDRP will work.

### Packages & dependencies

You do **not require** to use or import **any** of the packages, but **some** systems may require Unity Packages (e.g. UI components requires the TextMeshPro package unless small changes are made)

&#x20;:red\_square: = **should** - some systems are dependent on it\
&#x20;:yellow\_square: = **could** - a smart package to add (not only for this package but generally good)\
&#x20;:green\_square: = **additional** - most demos will work without it — unless it's explicitly stated that it is needed

1. :red\_square: `TextMeshPro` - all UI is made with this package
2. :yellow\_square: `Post Processing` - only `Interface` system uses this package and can easily be removed by removing a couple of lines of code.
3. :green\_square: `Visual Effect Graph` - only needed if you want to use VFX graph instead of regular Shuriken Particle System.
4. :green\_square: `New Input System` - only needed if you want to use this input system instead of the built-in Unity one.

### Using Standard vs. New Input System

{% hint style="danger" %}
If you want to use the `Standard` Unity Input system you **must** remove a couple of systems.
{% endhint %}

1. Remove `Systems/Standalone/Interface/New Input System`.
2. Remove `Systems/Standalone/Inputs/New Input System`.
3. If a demo doesn't run correctly and you get this warning: <mark style="color:yellow;">`The referenced script (Unknown) on this Behaviour is missing!`</mark>. This is because you need to **remove** the `Unknown (Script)` from the `EventSystem` and **replace** it with `Standalone Input Module`.

### Disabling/Removing Systems: What You Should Know

Yes, you can remove systems, but there's a catch. Core systems such as `Inputs` or `Pooling` are often dependencies for other systems, Alternatives are usually available that can be used instead (except for `Interface` which is directly dependent on `Inputs`. This can be changed but need some coding knowledge).&#x20;

### Fix <mark style="color:red;">`The type or namespace name 'Volume' could not be found`</mark>

This is beacuse of `Post Processing` package is not installed. If you do **not** want to install it you should do the following:

1. Go to `Interface/New Input System/Scripts/PauseUIManager.cs` and remove:
   1. ```csharp
      [Tooltip("Optional Volume component for controlling post processing during pause.")]
      [SerializeField] private Optional<Volume> volume;
      ```
   2. ```csharp
      if (volume.Enabled)
          volume.Value.enabled = paused;
      ```
2. Do the **exact same** thing in the `Interface/Standard/Scripts/PauseUIManager.cs`.
3. Go to `Interface/New Input System/Interface New` scene and open it. Now you can remove the entire `Post Processing` game object.
4. Do the **exact same** thing in the `Interface/Standard/Interface Standard`.

### Problem/Issues:

{% hint style="warning" %}
I’m getting errors like “**multiple instances detected**” for `Pool`, `Shake Config`, or `Objects`.
{% endhint %}

{% hint style="success" %}
This usually happens if you’ve created a new instance of the singleton. To fix it, either delete the one you added and use the demo version or remove the demo version if you prefer your own. Keep in mind, the singletons **must** be placed under a `Resources` folder.
{% endhint %}

{% hint style="warning" %}
I’m getting errors like “**no singleton detected**” for `Pool`, `Shake Config`, or `Objects`.
{% endhint %}

{% hint style="success" %}
This usually happens if you’ve removed a demo singleton or haven't properly placed your own singleton under a `Resources` folder.&#x20;
{% endhint %}
