A postmortem about a platformer where you can't jump!
So, I had a blast taking part in this Ludum Dare and haven't written a postmortem yet, so here we go!
Let me introduce you to Snail away, the platformer where you can't jump!

Day 1
A chaotic start: who needs a CI/CD pipeline :sob:
The jam started very chaotically for me. I recently learned about CI/CD pipelines, which, for those who don't know, allow you to automate the process of exporting and publishing a project. So, like, 2 hours before the jam, I thought, let's give it a go! (Spoiler: that was a mistake...)
I had no experience in making such pipelines, and it was way harder to get them to work than I thought, with many examples being either outdated or needing tweaking. So I was hard at work on that when the theme dropped. My two least favorite themes of the round were Strange Machines and Tiny Creatures, so when I saw Tiny Creatures on Twitter while working on my half-broken CI/CD pipeline... man. :sob:
On Saturday morning, I woke up obviously very uninspired by the theme and thought I'd try to fix my CI/CD pipeline. It took me a lot of trial and error, but after a few hours, I got it working! Man, the feeling of just doing a git commit and having your game actually playable online felt incredibly good. The only thing was... there was still no game to play, not even a concept, and I had already burned the entire morning of the first day.

Brainstorming time! :gun: or :boxing_glove: or :snail:
Earlier I said I didn't like the theme, but taking a step back, it wasn’t so bad after all. After some brainstorming, I had three game ideas:
:gun: A first-person shooter where you play as a mosquito trying to take down a (giant) human. I liked the idea and thought it would make for interesting gameplay, but at the same time, I felt the success of the game heavily relied on the AI and animations of the giant human, which seemed too difficult to get convincing results within the time frame. Plus, I'm more of a 2D artist than a 3D one, and I thought it would be too challenging to make the game look good.
:boxing_glove: A 2D, first-person fighting game set inside an anthill. Making a 2D first-person fighting game was something I already had in the back of my mind. In the end, I didn’t really like the idea of using an old game concept and just slapping a Tiny Creatures theme on top of it.
:snail: And lastly, a 2D platformer where you play as a snail. The idea quickly stuck with me (pun intended) because I thought there was something really cool to do with how a snail moves—sticking to surfaces or rolling inside its shell. So I eventually picked that idea. And I think I made the right choice!
Making good platformer physics!
Since the game was a platformer, my main priority on the first day was movement and physics. For anyone making a platformer out there, please, good controls and physics should be an absolute priority—this is the core of the game.
From a technical point of view, my snail is a CharacterBody2D in Godot that always tries to stick to the ground. When rolling inside its shell, the CharacterBody2D despawns, and a RigidBody2D spawns instead. Since the sprites stay in place, it’s impossible to tell that the collision object actually changed under the hood. But it works great.

Procedural animation?
Once I had that working, the snail's graphics were another priority. I knew it just HAD to be procedurally animated because that’s how a snail’s tail should look like. So, I used a Line2D in Godot and animated the points with code.
I used raycasts to anchor the tail's points to the ground. For the head, I made some basic damping physics. For anyone interested, the math is very straightforward: it's basically just, every frame: position += (target - position) * speed * delta, where delta is the time between two frames, and speed is a parameter to control how fast the object should follow. Very simple, but it looks nice and satisfying.

Once I got the physics and procedural animation somewhat working, it was Saturday night, and I started playing with it a bit. And I realized: wow, this is actually pretty cool! I didn’t know how good it was going to be, but by the end of the first day, I was surprised at how good it felt to play with the snail. At that point, I just had a simple snail controller... but still no real gameplay, or levels, or graphics, or any sort of complete game.
Day 2
Throughout day 2, a lot of things got done! I started by fixing some bugs on the player physics and animations. I made a few mechanics, like plants that bend as the player walks. I also worked on graphics—the snail’s shell, some leaves, and a few decorations.

Level design time!
Then it was time for level design. And I realized that being a snail means... you can walk anywhere! Like, literally anywhere. For example, if I put a wall to stop the player... well, the snail can just walk on top of it. There’s no stopping a snail. So I added a new mechanic: spiderwebs, which you can’t stick to, and block the player. This mechanic turned out a little buggy, but it worked well enough for most playthroughs.
I was finally ready to design some levels. The trick I used was to make the levels within the engine itself with basic polygon shapes. This way I could prototype very quickly, and the game still looked okay without needing to create more art. Very handy. I also used Godot's feature to automatically generate collision polygons from sprite—again, super handy!

Extra stuff! :heavyplussign:
I still had to cut the scope down and make the game much shorter than expected, though. I spent a bunch of time at the end polishing the game: adding a parallax background, sound effects, music, and collectible ladybugs. And that was it! Before the end of the jam, a friend tested my game... and really liked it! At the end of the jam, I played it a few more times and realized I was super happy with what I had made!

That's a wrap! :clapper:
Now it’s been about 10 days since the game was released. So many people have played it, and most really liked it! The response has been overwhelmingly positive—the best response I’ve ever had for a game I’ve made! I’ve made quite a few games in the past (this is my 12th Ludum Dare!), and it’s so cool to see I’m still making progress and creating better and better games. There are still some things that could use more work, like certain aspects of the level design, and the game is very short. It’s obviously not perfect, but that’s not what it’s all about. For me, it’s about trying to make a better game than last time, even if it’s just a little bit better. And I think I achieved that.
Anyway, thanks for reading my postmortem, and thanks to everyone who gave feedback. You can still play the game if you're interested!