Tiny Glade has basic mod support with workflows centered around Steam Workshop.
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.
Mods go in a mods folder next to saves, configs, etc:
%USERPROFILE%\Saved Games\Tiny Glade\Steam\YOUR_STEAM_ID\mods
C:\Users\YOUR_USER_NAME\Saved Games\Tiny Glade\Steam\YOUR_STEAM_ID\mods)~/.local/share/Tiny Glade/Steam/YOUR_STEAM_ID/modsCreate 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.
mods. Name it whatever you like, e.g. "Cheese bucket collection". That name is what shows up in the in-game mod list, and is the initial name upon publishing to Workshop (while the mod is still private to you).A few things worth knowing:
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:
textures/, assets/ or compiled-assets/ -- it's an asset-replacement mod.clutter/clutter.json plus GLB files -- a clutter mod.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.
mod-id.jsonWhen 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:
mod-id.json within that matters.thumbnail.jpg|pngA thumbnail.jpg or thumbnail.png at root is the thumbnail that Steam Workshop will show in the browser. Note that you can add extra images to present your mod via the Workshop website, but 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 within the game's UI).
This 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.
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.
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.
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:
The item's collider, picker icon and snow cover are all automatically derived from the mesh.
File names must be lowercase, and may only include ASCII letters, digits, - and _. The
names end up in save files.
Make a clutter folder inside your mod, and export your .glb file there. Note that the .glb file is self-contained (including the textures you use).
Using a text editor, craft clutter.json, and put it inside your mod's clutter folder beside the GLBs:
{
"format": 1,
"items": [
{ "mesh": "cheese-wheel.glb", "category": "Nature", "sound": "Pumpkin" },
{ "mesh": "cheese-peeler.glb", "category": "Tool", "sound": "Shovel" }
]
}
The fields:
mesh -- the GLB's filename.category -- which picker tab the item lives in: Food, Tool, Nature, or Furniture.sound -- the sound the item makes upon placement. One of: Anvil, Barrel, Basket, Bench, Birdhouse, BirdsNest, Boxes, BoxFish, BoxSack, BoxWaterCan, BreadStall, Bucket, Cart, Chair, ClayPot, ClothlineAppear, ClothlineConnectionAppear, DoorBell, FabricRoll, Firewood, FlowerPot, Haystack, Ladder, None, OldenLog, OldenRock, OldenStump, Pitchfork, PotatoSack, Pumpkin, PumpkinWithFace, RackBrooms, RoadSign, Shovel, Shutters, VeggieStall, WaterPlant, Wheel, WindowFlowerbed.If there's a problem with the manifest or your GLB, check the game's log (in the tmp folder next to saves).
You may keep the game running while working on clutter meshes, and the game will hot-reload meshes as you resave them in your authoring app.
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.
The export button lives in a hidden developer window. To unleash it:
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.
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.
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).
0.png, 1.png, 2.png … To replace an arrayed texture, just provide your own numbered images; you can use a different count, but note that the sequence starts from 0 and cannot have gaps.assets/glade/**/textures.jsonAlmost 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.
Those are just ye olde .cube files. They use Rec.709 input & output, and can be authored e.g. with DaVinci Resolve.
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.
Open Escape → MODS → WORKSHOP. Your local mods have a Publish button.
The whole folder is uploaded as one Workshop item, 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.
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 game.