itch.io is community of indie game creators and players

Devlogs

Cozy Fall Jam 2025 - DevLog #6: The Final Stretch

Finders, Sweepers!
A browser game made in HTML5

26 October 2025

06:38

Got a lot done yesterday, but I still don't have a sprite for the player character. Let me revise my list of features. This is my final scope, and everything I need to implement before the submission period ends:

MVP

  • player sprite & animation
  • pile of leaves sprite & animation
  • item pictures
  • item descriptions
  • create the final item pop-up UI
  • main menu
  • SFX
  • song for menu & lake

Extras

  • piles emit leaf VFX during sweeping
  • I'll start with the player sprite and animation. I need:
  • an idle animation
  • a walking animation
  • a sweeping animation

---

10:11

I found out that I really have no clue about how to make a good looking sprite, let alone animate it. I started trying to draw a person with a broom, and it was more or less an impossible task. So the PC is a broom, and that's it. Simpler to draw.

Also, earlier this year I spent about a month learning about hand drawn animation. The knowledge I gained just came in handy!

Right now I have an idle, moving and sweeping animation. I also made a sprite & animation for the pile of leaves. And I finished fixing the UI popping up for 40 times at once when uncovering an item. Next items on the list:

  • disable movement & sweeping when the pop-up is on screen
  • item pictures
  • item descriptions
  • fix the look of the pop-up
  • SFX
  • song
  • main menu

After this, I will have all plenty of time left for some testing & polishing! I feel pretty optimistic at this point.

---

I just ran into a very strange bug: the first pile that the player sweeps always needs to be swiped twice. And this doesn't happen for any subsequent pile... I fixed it by deleting all instances that I placed manually and that was it. Somehow. 

---

IT'S 11:32

I wrote some new code to dynamically spawn piles of leaves & populate them with items, based on existing tiles. Before this, I had to place the piles of leaves manually in the main scene. 

To do this, I used custom properties in the tileset & painted some specific areas where the piles are allowed to spawn. Cool stuff. 

But I ran into another problem. Of course! The player has to connect to the area entered & exited signals of all the piles that get spawned, but the player is spawned first, and then the piles. So it doesn't connect to anything. Not so cool. 

I have an idea, and if it works - you won't hear from me for a while: create an empty node on the same level as the player, and parent all the piles to this node. Since they will be one level deeper in the hierarchy, they should be ready before the player is.

---

It didn't work. Then I need to convert the player & camera to a packed scene & instantiate that after the piles.

---

Ok, that did the trick. But now there's another problem (!!!) Everything is instanced super fast at the same coordinates (0, 0), before being moved to their correct positions. Maybe I should look up how to instance scenes using specific coordinates - to do after the game jam.

Anyway, this behavior means that the player's node & some leaf piles have time to collide, emit signals, and mess up my logic. Damn. 

---

Fixed that too. First I instance all piles of leaves, then I move them to their own positions, and only after that I instance the player node & move it to its position. But I encountered the old bug again: the first pile that the player sweeps, needing to be swept multiple times. Turns out it was caused by some piles of leaves being so close together that they would enter each other's areas, emitting a signal to the player script, which in turn was trying to respect the logic I wrote (a.k.a. only the player enters the leaves). I implemented this logic assuming that only the PC can enter the piles Area2Ds, so I did not check for the entering object ID. I fixed it by making the piles' Area2Ds slightly smaller.

That was so... Weird, and difficult to figure out. I need a coffee.

---

14:35

Sounds. I need sounds for:

  • walking
  • sweeping
  • item found

Found all of the sounds. Potentially found some music for the menu.

---

SFX all done. Next up: 

  • Main menu
  • Game end
  • Menu when pressing ESC
  • Anything extra I want

Don't forget, I also need to deal with creating the itch page, testing then submitting the game to the jam...

---

EDITOR'S NOTE: I was really quite busy from 14:35 to 20:02, so I didn't write anything during this time. But good thing I still remember what I did! Here it is.

I spent the remaining time polishing the game, adding a water shader, lighting & occluders. I also tried to implement a bit of feedback that my friends gave me. I wish I could have added better lighting to the game, but for that I needed normal maps. I played a bit with some free software for generating normal maps, but I had no idea how to make them work with tiles in a tileset. It was simply too late to deal with that. This whole topic is something I can research after the game jam.

I also spent quite some time debugging another weird bug: for debug purposes, I modulated the color of the piles containing items, so they stand out & I can test faster. Once I was done testing, I "removed" the modulation by setting the modulate color's alpha to 0. Remember this point!

While playing, I noticed something strange: I kept sweeping the piles, but no items showed up. I sweep all the piles, several times, and nothing. How come? I check their positions - they seem to spawn correctly, but there's 100 piles, I can't check them all  manually. I add some logging, and I discover something weird: some empty spots on the ground report that the player has entered a pile & they contain an item. It took me quite a bit of time to figure out the cause: remember the modulate color's alpha is 0? It means that all the piles where the color is modulated, are turned invisible. Ridiculous. 

I commented out that code, and everything is fine. Except, it isn't! The bug where the piles need to be swept multiple times returns. This is crazy! After some time debugging, I found the cause: some piles' Area2Ds overlap with the collision areas of some of the tiles (ex. trees, houses, fences, etc.)

The simple, fast & dirty fix: don't allow any piles of leaves to spawn close to these colliders. Because I painted the areas where they're allowed to spawn using a tileset, it was equally ridiculously fast to fix!

I added an end area, where if the player steps on it they get an outro & sent back to the main menu. It wasn't very difficult to implement. Remember the "40 pop-ups spawning at once" bug I fixed earlier? Well, that bug resulted in a pretty cool behavior - the game world seemed to fade out in steps (ex. it fades out 20%, then 20% more, and so on until the entire background is greyed out; and only the broom was visible).

So for the outro I implemented the same bug, but in a controlled manner. Fight fire with fire, and all that. I also made a quick animation for displaying the text on the screen, and that was it for the outro.

I also fixed another nasty bug: because I didn't use CanvasLayer for the item pop-up, but simply control nodes, it meant that shadows & the top of tall trees (because of the Z index) were being displayed on top of the item pop-up. 

Dirty fix: tweak the Z index of everything, and also disable all shadows while the pop-up is up. The radius of the light cast from the PC is small anyway, so nobody will notice.

Some more playtesting, and that is it. The game is done.

---

20:02

My first game jam submission is done. Pfew. I am getting a headache. At one point I should do a recap of what lessons & engine features I've learned. A sort of post-mortem. But right now I need some rest.

It took me... Let's say 5h on Friday, 14h yesterday, and another 14 today? Round it to 35h or so. And I have a game made! And not a crappy one either!

Leave a comment