News Liste Tiny Life

Community Showcase: Making the Mod Tiny Louvre (by blur)
Tiny Life
1 Tag 13:48 Community Announcements
ell:

Hi everyone! It's been a hot minute since the last Tiny Life Community Showcase post, but I've been wanting to revive the category for years now. The opportunity presented itself to me when long-time friend of mine and modder of Tiny Life blur created the Tiny Louvre mod and an accompanying video and blog post on his website.

The following post is a version of the original post modified by them to appear on the Tiny Life blog and accompanying platforms. It goes into detail about what Tiny Louvre is, how it was created, and gets technical about some implementation details here and there. In that way, it's also sort of a light version of a Tiny Technicalities post.

I hope you enjoy reading blur's post, and please keep in mind to check out the mod afterwards!

Editor's note: The formatting of this post is a bit of a mess on Steam, as there are few automated ways to convert from Markdown to BBCode (which is the formatting that Steam expects posts to be in) and this post uses a lot of special formatting in various places. I've tried to amend it as best I can, but for the best experience, I recommend reading the post on the website instead.




blur:

So, recently I made a mod for Tiny Life called Tiny Louvre.
This mod adds paintings you can create in-game that both show up on furniture in-game and can be shared with and downloaded from other players.
To this end, the mod adds a variety of bits, like an easel with a painting
interface, a museum where people can view art collated from online,
and, well, the paintings themselves!

I made a video about the mod and how it works if you're interested:

[previewyoutube=CipQ_CEHk0M;full][/previewyoutube]

Anyway, when I was making it, I bumped into some design challenges, and for the sake of my future self and anyone else looking to make a Tiny Life mod with these features, I figured I'd enumerate the challenges and the solutions I landed on.

Adding Default Maps



So, Tiny Louvre adds a new default map, the Tiny Louvre.
This is a museum lot that lets players view a variety of both classical paintings I added to the game and paintings downloaded from online.

And this was simple enough, right?
I just used the Creating Custom Maps tutorial in the Tiny Life docs to create the custom map, exported it, and copied the .json file into Content/TinyLouvre/Maps.

But wait, it wasn't appearing in the map list.
I guess that's to be expected, there's probably a method or event for telling the game what maps my mod adds.
And yep, there's Map.OnGetStaticMaps, which I can hook into without much fuss.



Hey, there it is!

I should make sure this works before I celebrate too much.
Check the map off, create the world, aaaaaand crash.

So, reading in modern day you might see something noteworthy in the OnGetStaticMaps docs:

Zitat:
If this event is subscribed to and one or more custom maps are added to the list, the OnLoadStaticMap event should also be subscribed to to handle actually loading these maps.


That's because ell added that to the docs while we were talking about this issue.
At the time, I had no idea I had to do something else to load the map, but it turns out I also had to subscribe to
OnLoadStaticMap.
Okay, so add a new bit to AddGameContent,

Code Map.OnLoadStaticMap += (MapInfo mapInfo, Newtonsoft.Json.JsonSerializer serializer, ref Map map) =>
{
if(mapInfo.Name == "TinyLouvre")
map ??= info.Content.LoadJson($"Maps/TinyLouvre", null, serializer);
};


and we're golden, everything loads and we can see the map in-game.

Well that was simple enough, let's move on to another issue I spent time on,

Enabling Online Mode



So, adding the online mode features, while a technological challenge on their own, wasn't actually that involved since I knew before I started writing code how I was going to design the paintings and codec to optimize for sharing on social media.

What I did have some issues with, however, was getting a pop-up to appear the first time the mod was loaded asking the user if they wanted Online Mode enabled.
On principal, I didn't want to have online functionality in an offline-by-default game without disclosing that it was user-generated and confirming with the player.

For determining whether it was actually enabled, Tiny Life actually has a pretty good Options system, letting you put all your controls in the mod's options section using the PopulateOptions hook, and providing methods like ModInfo.LoadOptions to load your mod options into a convenient little object.
Handy!

My first approach, and a bit of a naïve one, was just to do exactly what I usually do to open a menu, but right when the mod loads up.
Which sounds fine on paper, but, uh. The Root UI element gets replaced once the main menu loads up, so the pop up doesn't actually stay on screen.

I ended up looking around, searching for a hook into the main menu spawning or something, until eventually just asking Ellpeck what he does for the mod version popup, which pretty much has exactly the behavior I was looking for.

And he pointed me to OnSwitchGameMode. Well that's easy enough, just add
Code GameImpl.Instance.UiSystem.Add(
"TinyLouvreOnlineConfirmWindows",
new ConfirmWindow()
);

to that hook, and hey!



Then I just added a bit to the options that just checked whether it had been shown yet, and skip showing it if it had been.
Simple enough, what else is there to talk about?

Furniture Textures



Sure, why not?

So, for Tiny Louvre, my original plan was to add a renderer to just draw the paintings askew and realign to the top pixels, either by drawing in blocks or using a shader.

But wait, Tiny Life is built with MLEM, which is based on MonoGame.
I can just construct textures in memory to save on render time!

Code _furnitureTextures[0] ??= new Texture2D(device, SIZE_X, (SIZE_Y + ho));
_furnitureTextures[1] ??= new Texture2D(device, SIZE_X, (SIZE_Y + ho));


Tiny Louvre keeps its furniture textures small, only constructing two for the downward-facing variants of Paintings.

When generating these, I just take the canvas (which I also convert to a Texture2D for rendering), then march from left to right placing pixels slightly askew, by either starting at the top and shifting down every other column or
vice versa.

Then, when it comes time to render in the world, it's as easy as drawing into the level, right?

Well, when I used the base Draw method, for some reason stuff just... wasn't working?
The layering was off, it was drawing paintings on every floor.



Wait, wait, wait.
I think I see what's going on here.

And ell agreed, noting that I was offsetting the depthOffset by too much to compensate for the fact that I wasn't using the right one for the floor the painting was on.
Oops.

Well, thankfully, there's a method on MapObjects that does all this for me, DrawColumns.
Just switch over to using that to draw my paintings et voilá!





Now you can't see paintings through the floor!

Conclusion?



So, what's the takeaway here?

Well, first off, ell is very cool and helpful, thank you a ton.
Through his effort, during the dev process here and elsewhere, Tiny Life's modding and API documentation are quite good, which makes it very comfortable to learn how to mod this game and fun to continue to do so.

Also, don't be afraid to reach out for help in the #tiny-life-modding channel on the Ellpeck Games Discord.
Plenty of folks (myself included on occasion) are willing to help you get your mod working by pointing you to the right spots in documentation, helping you figure out tough problems, or rubber ducking for you as you walk through your process.

Honestly, I just like modding in Tiny Life.
I've mostly been working on games like Minecraft recently, which is fun, but having first-class modding support and a line to the game's primary developer is such a breath of fresh air.

I'd say if you are even a little interested in modding Tiny Life, give it a go!
It's cross-platform (I mod on Linux but it's trivially easy to do on Windows or Mac), it's fun, and there's a community waiting to help you get your mod made.

And remember:



Tiny Louvre is a cool mod




ell:

Lastly, you can download Tiny Louvre both on Steam workshop and the mod's GitHub repository. Be sure to have any paintings you create published through the mod's in-game editor so that they're available for other players to view!

Also, please keep in mind that, due to Tiny Louvre being a mod created by a community member and the game's modding API still being early, not all future versions of Tiny Life may be compatible with Tiny Louvre. If that's the case, you can always contact blur through the Steam workshop post or the GitHub issue tracker, as linked above!

❤️ ell and blur
Logo for Tiny Life
Release:03.05.2023 Genre: Gelegenheits-Spiel Entwickler: Ellpeck Games Vertrieb: Top Hat Studios Engine:keine Infos Kopierschutz:keine Infos Franchise:keine Infos
Einzelspieler Mehrspieler Koop

Aktuelle Steam News
Neue Steam News in der ePrison Datenbank

Community Showcase: Making the Mod Tiny Louvre (by blur)
Tiny Life
1 Tag 13:48 Community Announcements
0.48.9
Tiny Life
30.11.25 17:03 Community Announcements
0.48.8
Tiny Life
25.11.25 19:19 Community Announcements
0.48.7
Tiny Life
08.11.25 11:44 Community Announcements
0.48.6
Tiny Life
02.11.25 10:56 Community Announcements
0.48.5
Tiny Life
28.10.25 18:04 Community Announcements
0.48.3
Tiny Life
18.10.25 09:01 Community Announcements
0.48.2
Tiny Life
10.10.25 13:14 Community Announcements
0.48.1
Tiny Life
03.10.25 11:56 Community Announcements
0.48.0: The Biggest Set Yet (By Far)
Tiny Life
23.09.25 18:04 Community Announcements
0.47.11
Tiny Life
06.08.25 17:09 Community Announcements
0.47.10
Tiny Life
14.07.25 09:52 Community Announcements
0.47.9
Tiny Life
04.07.25 11:46 Community Announcements
0.47.8
Tiny Life
12.06.25 10:39 Community Announcements
0.47.7
Tiny Life
26.05.25 15:19 Community Announcements
0.47.6
Tiny Life
25.05.25 09:38 Community Announcements
0.47.5
Tiny Life
24.05.25 10:35 Community Announcements
0.47.4
Tiny Life
29.04.25 19:32 Community Announcements
0.47.3
Tiny Life
04.04.25 11:34 Community Announcements
0.47.2
Tiny Life
20.03.25 12:56 Community Announcements
0.47.1
Tiny Life
16.03.25 13:19 Community Announcements
0.47.0: Elders and Their Demise
Tiny Life
09.03.25 14:34 Community Announcements
0.46.2
Tiny Life
25.02.25 14:26 Community Announcements
0.46.1
Tiny Life
27.01.25 18:24 Community Announcements
0.46.0: Bathtubs, Tears and Improvements Galore
Tiny Life
10.01.25 13:20 Community Announcements
0.45.2
Tiny Life
14.12.24 11:51 Community Announcements
0.45.1
Tiny Life
04.12.24 12:31 Community Announcements
0.45.0: Small Plants and Big Emotions
Tiny Life
29.11.24 14:09 Community Announcements
0.44.1
Tiny Life
26.10.24 11:14 Community Announcements
0.44.0: Set the Vibe in Lavender Park
Tiny Life
17.10.24 15:27 Community Announcements
0.43.11
Tiny Life
20.09.24 11:00 Community Announcements
0.43.10
Tiny Life
31.08.24 11:04 Community Announcements
0.43.9
Tiny Life
31.08.24 09:13 Community Announcements
0.43.8
Tiny Life
15.08.24 09:38 Community Announcements
0.43.7
Tiny Life
08.08.24 13:29 Community Announcements
0.43.6
Tiny Life
26.07.24 10:46 Community Announcements
0.43.5
Tiny Life
15.07.24 10:03 Community Announcements
0.43.4
Tiny Life
14.07.24 16:38 Community Announcements
0.43.3
Tiny Life
14.07.24 10:57 Community Announcements
0.43.2
Tiny Life
13.07.24 12:47 Community Announcements
New Plant Stuff, New Language and New Gross Stuff
Tiny Life
09.07.24 16:49 Community Announcements
0.42.4
Tiny Life
19.06.24 10:53 Community Announcements
0.42.3
Tiny Life
17.06.24 20:34 Community Announcements
0.42.2
Tiny Life
15.06.24 10:43 Community Announcements
Plenty of Personalities and Different Difficulties
Tiny Life
09.06.24 15:03 Community Announcements
0.41.2
Tiny Life
01.05.24 15:56 Community Announcements
0.41.1
Tiny Life
21.04.24 08:21 Community Announcements
0.41.0: Huge New Set, Babysitters, Museums, More Stings, and More
Tiny Life
14.04.24 15:54 Community Announcements
0.40.1
Tiny Life
10.03.24 15:37 Community Announcements
0.40.0: Lunar Grove and Populated Homes
Tiny Life
09.03.24 18:51 Community Announcements
0.39.1
Tiny Life
04.02.24 11:35 Community Announcements
0.39.0: An Upgrade to Your Tiny Life
Tiny Life
02.02.24 17:13 Community Announcements
0.38.4
Tiny Life
07.01.24 15:51 Community Announcements
0.38.3
Tiny Life
19.12.23 15:53 Community Announcements
0.38.2
Tiny Life
14.12.23 10:01 Community Announcements
0.38.1
Tiny Life
13.12.23 13:42 Community Announcements
0.38.0: Get Cozy Indoors and Lock Out Your Friends
Tiny Life
06.12.23 12:25 Community Announcements
Tiny Life at the Steam Awards (and some Sneak Peeks, too!)
Tiny Life
21.11.23 18:02 Community Announcements
0.37.5
Tiny Life
18.11.23 11:54 Community Announcements
0.37.4
Tiny Life
06.11.23 13:07 Community Announcements
0.37.3
Tiny Life
05.11.23 19:51 Community Announcements
0.37.2
Tiny Life
04.11.23 18:25 Community Announcements
0.37.1
Tiny Life
30.10.23 09:59 Community Announcements
0.37.0: Multiple Floors and Fences Galore
Tiny Life
25.10.23 12:36 Community Announcements
0.36.2
Tiny Life
17.09.23 12:52 Community Announcements
0.36.1
Tiny Life
25.08.23 09:58 Community Announcements
0.36.0: Retro Rarities and Stopped Starvation
Tiny Life
15.08.23 11:15 Community Announcements
0.35.4
Tiny Life
02.08.23 07:23 Community Announcements
0.35.3
Tiny Life
01.08.23 12:06 Community Announcements
0.35.2
Tiny Life
28.07.23 10:24 Community Announcements
0.35.1
Tiny Life
22.07.23 10:00 Community Announcements