Lavish Living + Other Updates
New playscene release! Lavish Living is now available for Petz 4 and Petz 5. I'm so excited to share that these playscenes feature a brand new, fully animated fireplace with an ambient glow that flickers. Read on for other updates as well as a behind-the-scenes look at the creation process.
First, there are some other small updates on my site: I've added a FAQ page in the About section. I've also fixed a few pieces of Petz 4 content that may not have been displaying correctly for some folks. These were mostly petz-palette related tweaks. Old versions are still available if preferred.
Petz 4 Celestial carrying case
Petz 4 Frost carrying case + door
Magenta pixels fixed for 4 Seasons Backyard (Petz 4 version)
Creation process
This is one of my longer walkthroughs, since it covers how I created the fireplace animation, which isn’t easy to explain in a few words lol. I also write these notes for myself so I can remember the process later. I wish I could have made a video tutorial, but my laptop would probably burst into flames if I tried.
Though I used Photoshop and AI tools in this project, the techniques shown here can be adapted to a variety of workflows and toolsets. Back in 2024 I did a Petz 5 Family Room remake (Luxe Living):
It was mostly just a recolor and used the original fireplace animation.
When creating these new Family Rooms for Petz 4, I wanted to try something more ambitious. As iconic as the default petz fireplace is, the animation sprites sort of lock you into one fireplace style. So I put together a new fireplace, complete with a fully redone fireplace animation!
I'll cover the animation later, but first I'll go over the construction of the scene.
The final PSD for this had 315 layers (45 of them were fire sprite layers that were handled within the PSD). Wallpaper
I think I must have tried a dozen different patterns and styles before finally settling on the more neutral grey floral print. I took a stock image pattern from FreePik (now Magnific) and did some editing to add shimmer. CREDIT: [ link ]
Sliding patio door
AI was used to generate a set of family rooms with a sliding patio door. The door was then separated into its individual components using the selection tool, with a bug screen added beneath it. The backdrop was replaced with the spring version of my 4 Seasons Backyard. In-game, the sliding door is interactive and can be clicked to open.
Fireplace
Fireplace concepts were generated in Gemini using the original Petz 4/5 Family Room scene as a base. From those, I selected one that was closest to what I had in mind.
While this was a strong starting point, it needed significant editing. I wasn’t happy with the masonry extending beyond the mantel frame or with the firebox design, so I reworked it using the polygonal lasso tool to break it apart and rebuild a modified version. AI was used to refine the mantel, generate missing stonework, and replace the old firebox with a new one.
An ornate fire screen was generated with AI, then cut out, positioned over the fireplace, and given a pixel mesh layer. I liked how it turned out, but it later complicated the animation process, since I had to constantly toggle the fire screen layer on and off while working with the sprite frames to see what I was doing.
Fireplace switch The fireplace switch can be moved by changing the X, Y coordinates in Tinker.
I decided to add a pawprint between the ornamental scrolls. I took a simple paw print and applied layer effects (Bevel & Emboss and Color Overlay) to make it blend into the mantel, then created a gold version that appears when the fireplace is turned on. This functions as the switch for the Petz 4 versions. Unfortunately, I discovered something the hard way when porting this to Petz 5. Petz 4 and Petz 5 layers the fireplace switch sprite differently. In Petz 4, the switch can overlap animation sprites and still remain clickable. In Petz 5, the switch sits underneath the animation sprites, so if the animation covers it, the switch becomes inaccessible and unclickable.
(The white lines represent the shape of the animation sprites. The switch is positioned to OVERLAP the animation zone.) So I made a last-minute change to the Petz 5 version and added a wall switch. So unfortunately, there is no gold paw in the Petz 5 ones, as this would require editing about 90 frames of animation (day + night) to add it. At this point in the project I was very done and over it lmao.
I took a look at an IDA editor (though I have no clue what I'm looking at) to see if there was a way to change this. Sadly, this is beyond my technical skillset. If anyone knows how to fix this, I'd be so grateful.
Notes about the Petz 5 version
Because the switch was moved, it clips into the hangable space. So maybe...don't put a picture there lol. The outlet was also moved due the chair and wainscoting. It still works, but placing the nightlight may be tricky. (Aim toward the top right corner)
Although Petz 5 has a day/night cycle, these have been made as two separate playscenes, since the day + night versions each require a different set of animations.
No weather effects. I may add them later, but given the extra time this takes, I've skipped them for now.
Creating the new fireplace animation This is one of the more complex playscenes I’ve worked on so far, requiring 45 individually edited frames and separate day and night animations due to lighting differences. The fire animation was a lengthy process, but I hope these notes show it is possible.
Understanding how the fire animation works The fireplace animation looks daunting at first, but is more approachable when you analyze it.
45 frames seems like a lot, but there are some frames you can reuse, cutting down on the number of unique frames you need to make. (There's technically more than 45 but I don't count the 3 that are the same)
BurnA-000, DoneA-005, and FireA-000 are the same (OFF state).
BurnA and DoneA can mostly reuse the same fire frames, just uploaded in reverse in Tinker. BurnA is the ignition sequence where the flame ramps up (4 frames). DoneA, where the fire turns off, is slightly longer, but you can reuse a couple of standard burn frames at the start and then run the BurnA sequence in reverse.
BurnB and BurnC are the active burn cycles, with 18 frames each. The numbering can be misleading since it starts at frame 0. Once the fireplace is turned on, the game randomly alternates between BurnB and BurnC so the fire doesn’t loop in a single repeating pattern, adding a bit of variation to the animation.
(So honestly, if the repetition doesn't bother you, you could technically make just 18 frames for BurnB and reuse them for BurnC in Tinker instead of creating two full sets. That said, I went ahead and made all 36 for added variation.
Creating the fire Once my fireplace was made, I isolated just the firebox itself and asked Gemini to generate an animation sheet for me.
This was the image I gave it along with a prompt that looked something close to this (just cleaned up for grammar/clarity):
See this fireplace box? I need you to generate an animation sheet consisting of sequential frames. The animation should include 4 frames showing the fire turning on, 18 frames of a seamless looping fire animation, and 6 frames showing the fire turning off. Do not alter the scale or proportions of the provided fireplace, as any change will make the result unusable. The fire must look realistic, burning around the logs rather than just on top of them, and it should include a natural flickering glow throughout the animation. Frames must not be numbered.
It took a few tries but it finally gave me something that was of workable quality:
It wasn’t bad, but it needed a lot of cleanup work since it didn’t fully follow my instructions. The frames were slightly squished, so I had to resize them. It also didn’t produce a full set of 18 usable frames, but that was fine since I could reuse a few. Finally, after much cleanup, I was able to put together a collection of frames in the correct size and sequence for all the burn phases. You may notice in the prompt that I only asked for 18 burn frames (even though we need 36). It was because I knew Gemini wouldn't be able to generate a sheet that big. This brings us to the next section - I made some tweaks to the animation to extend it.
Tweaking the animation When I tested the animation, the fire looked choppy, so I added a tween frame between each frame for a slightly smoother animation.
As you can see, the first frame blends with the next. Adding one tween frame between the 18 burn frames doubled the frame count to 36. I now have enough frames to spread my animation across both BurnB and BurnC.
There you have it. Not perfect by any means good enough lol.
Putting the fire into the scene
Now that I had my fire frames it was time to bring them into my playscene PSD and put it all together.
I lined up the 45 frames in the scene as separate layers, labeled each with its frame name, and grouped them into a folder called Fire Sprites. Once set up, this folder can be reused in other projects.
Adding an ambient glow to the scene
I wanted to do something truly special with this animation by having the fire cast an ambient glow to the room that would flicker over the course of the animation.
I used AI tools to add realistic fire glow lighting for the scene. After editing it, I placed the glow layer over the composition and set the blend mode to Lighten. I also added layer effects to the fire screen so it appears backlit when the fireplace is on.
Just be aware that if you create an ambient glow covering a large part of the playscene, it increases the sprite size and may increase the .env file size. My Petz 5 night version is about 88 MB.
It also means you’ll need make the animation twice for a day/night playscene. Below you can see why the day animation can’t be reused for the night version.
You do not 'have' to do a glow effect, as it can complicate the animation project.
Establish the 'Sprite Area'
Next, I needed to establish the “sprite area,” the boundary within which the animation takes place. The original fireplace animation is confined to the fireplace box, but my version includes ambient glow spilling into the room, so I needed a larger area to accommodate it.
Below shows how I traced the silhouette of the animation region using a non-anti-aliased selection tool to capture all areas affected by the warm orange glow. (It is super important that your selection tool has anti-aliasing turned off, or your sprite images may end up with ugly seam lines. You want crisp pixel edges.) I then masked the glow layers to ensure the effect did not extend beyond the sprite area.
Because the glow is more pronounced in the night version, the sprite area needed to be larger.
In Petz 5, precise silhouette cutouts aren’t as necessary because it supports full-color images. Petz 4 required tighter silhouettes, since the Petz palette may produce visible seam lines with pixel speckling during animation. My animation has a bit of this in places, but it’s difficult to fully avoid with the Petz palette. When defining the sprite area, avoid including areas where other interactable features are (chair ledge, hangable wall space, window, mouse holes, P5 outlet, etc.), as the frames may interfere with their appearance or functionality
At this point, I measured the position of the sprite area (red bars), since the X and Y coordinates would be needed later when importing the sprites into Tinker. You can use the selection tool to measure pixel distance from the edges of the canvas Once I established my sprite area, I created a new layer named “Sprite Stencil” and painted the area outside the sprite area black. This will act as a stencil later during the frame capture process.
NOTE: My day version has a "window" where the switch is - it ended up not being necessary. I was just too lazy to edit it out later.
Making the animation
Now that all fireplace components are set up (fireplace, fire sprites layer folder, fire screen, ambient glow layers, and sprite stencil), it’s time to begin capturing the fully composited animation frames.
The following sections are tricky to explain without a video, so apologies if anything is unclear. You’re always welcome to DM me with questions!
Understanding how the ambient glow flicker works.
Before moving into the frame capture section, I need to explain how the flickering glow effect works, otherwise the next part won’t make sense.
The flicker was achieved by adjusting the opacity of the glow layers over the course of the animation. As opacity decreases (100%, 95%, 90%, 85%, 80%, 75%), the glow gradually dims; as it increases again (75%, 80%, 85%, 90%, 95%, 100%), it brightens. Repeating this creates a pulsing fire flicker effect.
This took some experimentation. My first attempt used 10% increments, but the result looked like a strobe light. Switching to 5% increments produced a gentler effect. I also avoided going below 75%. If you dip too low in brightness, it can cause that strobe light look.
Below is a chart showing the opacity values for each frame. The glow starts at 0% when the fireplace turns on, ramps up in brightness, pulses through the burn cycle, and fades back to 0% at the end. During the burn phase, I introduced variation in the up-and-down cycles so the flicker feels more natural rather than a perfectly repetitive breathing pattern. In some sections, it stays within a narrower range like 100–85% instead of dropping all the way to 75%.
(You are welcome to save this and follow the opacity settings I used here)
Capturing each frame There are two main things that change from frame to frame: the active burn sprite and the opacity of the glow layers. For each frame, you turn the previous fire sprite off and the next one on, adjust the glow opacity ±5% according to the chart, select the sprite area using your stencil, use Copy Merged to 'screen grab' the result, paste it into a new document, and save the frame. It is very easy to lose track of which frame you are working on, so having a spreadsheet was handy for marking which frames I had already done. Although you'd be starting with BurnA-000, I'm demonstrating the BurnB set because it's easier to see what I'm doing. However, the same steps apply for all 45 frames. Note: I had multiple glow layers. Make sure ALL glow layers are selected together when adjusting opacity frame by frame. To simplify this, you can group them into a folder so the opacity can be changed for all glow layers at once. In my case, some layers needed different blend modes or effects, so they couldn’t all be grouped.
I’m only showing the process for two frames just to demonstrate the general concept, but the same steps are repeated for all frames. First frame - BurnB-000: Step 1: Toggle on the fire frame you need to work on (BurnB-000).
Step 2: Set your ambient glow layer(s) to 100% opacity (see glow chart). If you have multiple glow layers/folders, hold SHIFT to select them together and adjust their opacity simultaneously.
Step 3: Use the black cutout sprite area stencil made earlier to select the entire sprite zone area. Use Select > Inverse to select the area OPPOSITE of the black zone.
Step 4: Go to Edit > Copy Merged or (Ctrl + Shift + C). This copies the appearance of your document as if all layers were merged. It is as if we're screenshotting this frame exactly as it currently looks.
Step 5: Paste your sprite into a new document. If you used your stencil, your image should be in the cutout shape of your sprite area. Make sure you remove the default white background layer. Then save this as BurnB-000.png.
This is what a single frame looks like when copied from the PSD. For Petz 4, Tinker will apply the Petz palette for you when imported, but you may get better results by indexing the frames yourself. I didn’t index the images as I went because this involves extra cumbersome steps, and there was a chance I would need to redo the animation anyway. (In any case, I needed a non-indexed master copy for Petz 5.) I let Tinker do the indexing, but I ended up having to make a few tweaks later to fix some miscolored pixels.
Next frame - BurnB-001: Step 1: Go back to your playscene PSD. Toggle OFF BurnB-000 and turn ON the BurnB-001 layer.
Step 2: Set your ambient glow layer(s) to 95% opacity. (See glow chart)
Step 3: Use the black cutout sprite area stencil to select the entire sprite zone area.
Step 4: Go to Edit > Copy Merged or (Ctrl + Shift + C).
Step 5: Paste your sprite into a new document and save as BurnB-001.png. Repeat this....for all frames
There's no other way to put this lmao. This part is very tedious. It takes me about 30-45 minutes to capture all 45 frames at a rate of about 1-2 frames per minute. There are probably ways to optimize this workflow, but this was the method that worked for how my PSD was structured. Of course, feel free to adapt this workflow as needed for your project. And load up your favorite podcast because you'll be here a hot minute lmao. (As mentioned earlier, depending on your project, some frames may be reused, which can reduce the total number of frames you need to process.)
I wish this could be automated with Photoshop actions or batch processing, but there isn’t really a viable way to set something like this up because each project is set up differently. Import sprites into Tinker
If everything during the frame capture process went according to plan, you should have a folder of sprites you can now upload into Tinker! Don't forget to change the X + Y coordinates for every frame.
I'm now at my 30 image per Tumblr post limit lol. Perfect timing because...we're done LOL! That's it. Once your frames are uploaded into Tinker and you've changed the coordinates, the animation is complete. Bear in mind that this process took me multiple attempts to get right. I hope these notes and findings help you avoid some of the mistakes I made along the way. The glow chart should also prove useful for future projects now that I’ve got the flicker pacing dialed in.
Future plans:
Now that I have a reusable fire animation, I'm excited to explore doing magical colored fire for other playscenes. It is easy to take a gradient mapping layer + clipping mask and set it above the entire folder of fire sprites and recolor them all at once.
Before / After + Final thoughts
Bless you if you've read this whole thing and have suffered through my terrible grammar and verbosity. I promise I tried to keep this succinct but writing isn't my specialty lol. Moving forward, I probably won’t do day/night versions for every family room playscene I make, since the fire animation might burn me out lol (ba dum tss~~). Without further ado, my playscenes are available over at my main page on Neocities for both Petz 4 and Petz 5.







