Tiny Glade modding

Tiny Glade has basic mod support with workflows centered around Steam Workshop.

Hint: modded clutter loads automatically. Other mods you need to enable per glade. Hit Escape, then MODS → GLADE MODS.

The info below is for mod authors. If you want to use a mod, check out our Workshop page instead.

This page is mostly about technical info on how the game loads your mods, basic workflows and folder structures. For more esoteric knowledge, check out the community-made Tiny Docs.

Regarding legacy mods: if you've modded Tiny Glade before, or have a zipped mod for Whiterun, you can just drop that zip into the mods folder, and the game will pick it up -- no file patching required. Note that you won't see any effect of the mod until you opt a glade into the mod from the in-game "Mods" menu.


Making a new mod

  1. Inside the game, navigate to the mods menu (Escape → MODS)
  2. Switch to the MY MODS tab, and click New mod.
  3. Enter a name for your mod and click Create.
  4. Put something in the mod (some clutter items, mesh replacements, etc -- the sections below explain how).
  5. If you simply added clutter, you'll see it in the clutter picker UI. If you replaced any assets, then on the GLADE MODS tab, tick your mod and click Apply.

A few things worth knowing:


Add your own clutter

Clutter are the items that spawn around windows, and can be moved around and swapped using a picker UI -- barrels, carts, pumpkins, flowers, etc. Mod-added clutter will show in the picker UI alongside the game's built-in assets.

Step 1 -- Author one GLB per item

You may use Blender or any 3D authoring software that can export glTF 2.0 - compliant GLB files.

The game supports a subset of Blender's Principled BSDF workflow, limited to:

IOR is always 1.5, and there's no metal / metallic / metalness support in the engine. Textures always repeat.

Other conventions/limitations:

Export your model as glTF 2.0:

(Ferris model from Tiny Beaches by Rampion)

Save it wherever you like, but make sure you use the glTF Binary (.glb) format.

Note that the names end up in save files, must be lowercase, and may only include ASCII letters, digits, - and _. If you try to add an oddly-named file to the game, it will be automatically renamed.

Step 2 -- Add the object(s) to your mod

Grab one of your .glb files, and drag-n-drop it onto the game window with the mod editor open. You should see a new entry appear on the list:

Customize any properties you want, then repeat this step for any other .glb files you want to include.

If there's a problem with your GLB, you'll see messages a the bottom of the Mod editor window.

Step 3 -- Inspect your clutter item in the game

Check that your modded items look correct in the clutter browser and inside the game. Tiny Glade does not support every feature of Blender or glTF, so it's important that you verify the look.

Step 4..N -- Iterate

You (probably) won't get it right the first time -- iteration is king. To speed up your workflow, click "Open mod folder" in the Mod editor to find where your mod's clutter files reside. You can then directly export your updated .glb files there, replacing entries in the clutter folder. The game automatically reloads your model, so you can iterate with quick feedback.



Share your mod

On the Steam Workshop

In the mod editor, under "Steam Workshop" just click Publish.

The whole mod folder is uploaded as one Workshop item, and automatically tagged with the content it provides (Clutter, Asset Replacement, or both).

When you first publish your mod, it's private on Workshop, so you can still edit its description, add extra pictures, etc. via the website -- the game does not have any UI for that. Once you're happy with your mod's appearance, you can make it public via Workshop as well.


The publishing step creates a workshop.json file in your mod's folder. It stores the mod's "file ID", as Steam calls it, and is the connection between your local mod and Workshop. Don't edit or delete this file.

The game uploads all files and folders except those starting with the "." character, so e.g. your ".git" repository / history won't be uploaded.

Thumbnail image

You can drag a JPEG or PNG image onto the mod editor to set the image as the thumbnail for Workshop. Note that while you can add extra images to illustrate your mod via the Workshop website, a thumbnail can only be changed through in-game publishing -- so if you need to change the thumbnail, re-publish the mod (don't delete it -- you can update an existing one from the mod editor).

Note that a thumbnail image is optional for clutter mods -- the game will generate a preview of your clutter items into a grid image (with up to 16 clutter items) similar to what's in the picker UI. But if you do provide a thumbnail image, that replaces the auto-generated clutter thumbnail.

Local iteration

While workshop.json is there, your local mod files take precedence over what's in Workshop, so even if you subscribe to your own mod, you'll see your local version.

Updating

Just hit "Publish update" in the in-game mod editor.

As a zip

If you want to share your mod with another modder or a player, you can just zip it and send it. Whoever receives it can drop it straight into their mods folder. You can also share a git repository pointed to by TINY_GLADE_MODS_DIR if you're feeling fancy.


Replace a texture

If adding clutter isn't quite your vibe, and you'd like to replace a built-in texture, you probably want to know what you can replace, and how it looks by default.

We got you -- the game can dump all of its textures into a folder as PNGs. You can then cherry-pick any files, copy them into your mod, and modify as you please.

Step 1 -- Turn on the developer menu

The export button lives in a hidden developer window. To unleash it:

  1. With the game running, type the Konami code: ↑ ↑ ↓ ↓ ← → ← → B A Enter
  2. Open Escape → SETTINGS. You should see a new DEV tab. If you don't, check your Konami skillz.
  3. In DEV, switch on Enable internal hotkeys.
  4. Restart the game.

The setting is saved, so you only need to do this once. If you'd rather not engage with arcade-era rituals, you can also edit a config file instead :P Open settings.ron in your profile folder (next to saves and the default mods location) and set internal_hotkeys to true in the dev section. Then restart the game.

Step 2 -- Export the game's textures

Load any glade and press Tab. A HAAAAX window appears on the left. Open the Gfx section and click Export game textures.

This will take a few seconds. Almost* every texture the game ships is written out as a PNG into an exported-textures folder (next to saves), using the same names and folder hierarchy that your mod can use.

* A few things aren't exported, and can't be replaced using regular mods: grass/flower assets (which have a complicated LoD pipeline), menu artwork, clutter picker icons (those are auto-generated from meshes), a few internal LUTs.

Step 3 -- Draw the rest of the owl

Make a textures folder inside your mod, and copy any texture you want out of exported-textures, preserving the path and name, e.g.

exported-textures/wall/bricks.png   →   mods/Cheese bucket collection/textures/wall/bricks.png

Then edit the texture with a program of your choice (Krita, mspaint, vim) and resave the file.

Remember to opt a glade into the mod (Escape → MODS → tick → Apply) to preview it.

You can keep the game running while editing your mod, and whenever you save a texture, the game will reload it.

Try not to go too crazy with texture sizes -- many Tiny Glade players don't have the most recent and powerful computers. Larger textures will also take more time while iterating because the game's built-in asset pipeline auto-generates mipmaps and compresses textures on the fly (and on the first install for new mod users).

Rules


Replace a mesh or another asset

Almost anything under assets/ in the game's installation can be replaced by placing a file at the same relative path under assets/ in your mod:

Cheese bucket collection/
└─ assets/
    ├─ meshes/clutter/barrel_w_plantpot.json    a different barrel; probably with more cheese
    ├─ luts/my_cheesy_grade.png                 a new photomode look
    └─ glade/summer/trees.json                  summer's tree setup, if it needs more cheese

The shipping JSON meshes are rather special, and have deep lore that depends on the shader that they're drawn with. You may want to consult the community notes if you want to mess with them:

Note that directories are merged rather than replaced -- so e.g. dropping a uniquely-named .png or .cube into assets/luts/ adds a photomode LUT rather than hiding the game's own.

Just like textures, and clutter, JSON meshes hot-reload while the game is running. Other asset types are only parsed at startup or glade load.

Grading LUTs

Those are just ye olde .cube files. They use Rec.709 input & output, and can be authored e.g. with DaVinci Resolve.


Where your mods live

Mods go in a mods folder next to saves, configs, etc:

You may create the mods folder if it isn't there yet. Each folder (or zip file) directly inside is a separate mod.

If you'd rather keep your work somewhere else, set the TINY_GLADE_MODS_DIR environment variable to that path, and the game will use it instead of the default mods folder.


The structure of a mod

A mod lives in a folder. Everything in it is optional, but it must contain something that the game recognizes as moddable content:

mods/
└─ Cheese bucket collection/
    ├─ mod-id.json              the game creates this; no touchy.
    ├─ thumbnail.jpg|png        used as the Workshop thumbnail
    ├─ textures/                replacement textures, as JPEG/PNG images
    │   └─ clutter/
    │       └─ wood.png
    ├─ assets/                  replacement meshes, grading LUTs, glade configs, …
    │   └─ meshes/
    │       └─ fish.json
    └─ clutter/                 your own placeable props
        ├─ clutter.json
        └─ beehive.glb

The game figures out what your mod does by checking which of those are present:

A mod can be both types at the same time.

Note that the folder and file names are case-sensitive and must be lowercase. Otherwise e.g. Textures/ would work on Windows, but fail on Linux or macOS.

Here's an example mod that adds a candle as a new clutter asset.

mod-id.json

When the game first detects your mod, it writes a mod-id.json file into the folder. That file is your mod's identity: glades record it to reference modded content.

Key points:


Zip files

A .zip in the mods folder works too, so if you share a mod with someone outside of Workshop, they can just drop it into the mods folder without unpacking it. Note that a mod can't be published while it's a zip.

If the zip doesn't contain a mod-id.json inside it, the game writes one next to the zip instead, named {zip name}.mod-id.json. If you later extract the zip, move that file into the unzipped folder, renaming it to just mod-id.json. The game deletes orphaned {zip name}.mod-id.json files, so you'll want to do that before you re-launch it.