Skip to main content

The Shindig: Day 8 - Get smooth

· 3 min read
beho

As part of the PiCoSteveMo game jam I'm building a deck builder game where you host a great party.

The last time (see day 7) I worked on building out the base gameplay to support guests with special abilities.

I made a lot of progress today and I'm almost getting to the point where it can be play tested. We now have the victory conditions and title screen added so it's technically possible to play through from start to end.

It's important that I finish this before Demon School comes out (probably impossible).

2025-11-16 Three more scenes

Today I added 3 more scenes to the game - so using this framework for organising scenes is really paying off. One is more like a modal, which works because if I never paint over the previous screen it is still visible.

a modal for selecting which guest to fetch

The cool thing here is because there is a different update method I don't need to worry about the scene beneath it from detecting some the inputs.

I also added a title screen and a victory screen today, they were fairly straightforward because they are not very interactive.

Maps

I found out today that in addition to the sprite sheet, there is a map function in PICO-8. This allows you to visually assign entries in your spritesheet to places in a 2D grid.

the map editor interface

This is great because I was directly drawing sprites to the game using spr and sspr; with maps there is a map function which lets you draw regions from map data directly to the game.

Animations

I got some advice about making smooth animations using an easing function called smooth step in PICO-8.

-- time, start, end
function SmoothStep(t, s, e)
s = s or 0
e = e or 1
t = mid(1,t)
return s+(e-s)*t*t*(3-2*t)
end

This function will receive a current time stamp (e.g. you can get this with t()), and then start and end values. It will return a value between the start and end values based on the amount of time that has pased. We can use this to animate for example a position

local offset = SmoothStep(t(), 0, 100)
pset(10 + offset, 10, 2)

will draw a pixel that moves from x=10 to x=110 with utmost smoothness. I used this to put together an animated title screen where as the user starts the game the hotel looms into view.

animation of a starry sky panning down to the roof of a hotel

What's next?

At the moment it's a bit hard to play the game because things get a bit too spooky and it's hard to make a lot of money. So I think I will add between two and four new guest types to address this.

Afterwards I would like to add sound effects, music and some quality of life improvements such as greying out options that the player can't afford.

As a stretch goal I'd like to either add two player support or translate it into another language.

Once again thanks for reading!