Frequently Asked Questions & Troubleshooting

Common Issues

When I dig, a hole appears but the cave mesh is invisible

I changed terrain textures, but caves show old textures

Digger meshes don’t blend perfectly with the terrain

Exporting Digger Data

Performance is slow when editing

Gameplay Questions

Does Digger support NavMesh?

Yes. Digger supports the built-in NavMesh. For runtime updates (Digger PRO), see the Integrations page.

Can players dig at runtime?

Yes, but only with Digger PRO. The standard version is for editor-time creation only.

Does this affect collisions?

Yes, Digger automatically updates mesh colliders.

Can I make certain areas indestructible?

Yes, use the Advanced Voxel Generator with depth layers or noise layers to create indestructible regions. See Settings for details.

At runtime, you can also use IsIndestructible = true in ModificationParameters when adding terrain.

Multiplayer / Networking

Digger does not include built-in networking, but you can synchronize terrain modifications across clients.

Basic Approach

  1. Send modification parameters over the network instead of voxel data.
  2. Apply modifications on all clients using the same parameters.
  3. Use persistence to save/load terrain state.

Example Architecture

using Digger.Modules.Core.Sources;
using Digger.Modules.Runtime.Sources;
using UnityEngine;
// Using your networking solution (Mirror, Netcode, Photon, etc.)

public class NetworkedDigger : MonoBehaviour
{
    private DiggerMasterRuntime digger;

    void Start()
    {
        digger = FindObjectOfType<DiggerMasterRuntime>();
    }

    // Called by the local player when they dig
    public void LocalDig(Vector3 position, float size)
    {
        // Apply locally
        ApplyDig(position, size);

        // Send to server/other clients
        SendDigCommand(position, size);
    }

    // Called when receiving dig command from network
    public void OnNetworkDigReceived(Vector3 position, float size)
    {
        ApplyDig(position, size);
    }

    private void ApplyDig(Vector3 position, float size)
    {
        var parameters = new ModificationParameters
        {
            Position = position,
            Brush = BrushType.Sphere,
            Action = ActionType.Dig,
            Size = size,
            Opacity = 0.5f,
            TextureIndex = 0
        };
        digger.ModifyAsyncBuffured(parameters);
    }

    // Implement with your networking solution
    private void SendDigCommand(Vector3 position, float size)
    {
        // Your network code here
    }
}

Synchronization Tips

Lighting

Light Probes

Digger meshes work with Light Probes for dynamic lighting in caves.

Setup:

  1. Place Light Probe Groups in your caves.
  2. Ensure Digger meshes are not marked as static (or use Light Probe Proxy Volumes).
  3. Bake lighting.

Tips:

Baked Lighting (Lightmapping)

  1. Enable Contribute GI in Digger Settings.
  2. In Digger Master, go to the Lighting tab.
  3. Click Prepare for lightmapping.
  4. Open the Lighting window and bake.

Note: Lightmapping is for editor-created caves only. Runtime modifications won’t be lightmapped. Note: Lightmapping doesn’t work with the MicroSplat integration.

Realtime Lighting

For runtime digging, use realtime lights:

Build & Platform

Stripping Settings

If you encounter errors in builds related to missing types:

  1. Go to Edit > Project Settings > Player.
  2. Under Other Settings, find Managed Stripping Level.
  3. Set to Minimal or Low if you experience issues.

Digger uses reflection for some features which aggressive stripping can break.

Platform Support

Platform Support
Windows Full
macOS Full
Linux Full
iOS Full (PRO)
Android Full (PRO)
WebGL Limited (no persistence)
Consoles Contact support

Mobile Optimization

For mobile platforms:

Build Size

Digger data is stored in Assets/DiggerData. This folder is included in builds.

To reduce build size:

Debugging

How can I see the meshes generated by Digger?

  1. Go to Digger Master > Settings.
  2. Enable Show underlying objects.
  3. You will see Chunk objects appear as children of your Terrain in the Hierarchy.

Digger creates too many chunks

Memory usage is high

Burst compilation errors