About Sausage Roll
What Is It?
This is my version of Stephen's Sausage Roll.
If you haven't heard of Stephen's Sausage Roll before, this website's UI will make no sense to you, and I would highly recommend playing the real thing or at the very least watching some gameplay to get a sense of how the movements work.
The game is like sokoban (box push), but more complicated. You walk a little person around a grid, holding a fork out in front of you, and the fork shoves sausages about as you go. Roll a sausage over a grill and the side that touched the grill cooks. The puzzle is solved when every sausage is cooked on both sides and you and your fork are back on the squares you started from (marked by an R for roller and F for fork).
There are two ways to lose. Cook a side that is already cooked and the sausage burns. Pushing a sausage into the water also loses. Also, right now, I haven't put any effort into making the board look reasonable after you lose. So weird things may happen like the roller may disappear or a sausage may disappear. Please ignore how unpolished the game is and just hit undo/reset lol.
Reading a Board
A board is a grid of squares. The color of a square is its ground, and the ground never changes for the whole puzzle:
- blue is water, which is also the frame around every board. You can't walk into it. A sausage pushed in sinks, though a sausage with one half still over the land is fine.
- green is land, the plain ground you walk on.
- red is a grill. A sausage rolled onto one cooks the side that touches it. You can't stand on a grill yourself. But you can stand on it briefly (see Weird Mechanics below)
- light blue is an ungrill. It is a grill running backwards: a sausage rolled onto one un-cooks the side that touches it. If you try to ungrill a raw sausage, you lose. This is not part of the original game; this is my own addition. The idea came from my eight-year-old daughter ^_^
- gray is a boulder. It never moves, and nothing can be pushed onto it. Use it to stick and unstick your fork from a sausage.
Everything else is drawn on top of the ground:
- ☺ is the roller, which is you.
- ☺ψ is the fork. It is always on the square in front of you, so where it sits is also which way you are facing, and its tines point that way too. The pair at the front of this line is facing right.
- ☺ψ are the exits: the roller and the fork again, washed out and without the halo the real ones have, standing on the squares the pair have to be back on at the end. They stay off the board while there is a raw side left anywhere on it, so one thing is being asked at a time, and they pop up the moment the last raw side cooks, which is the board telling you the cooking is done and the rest is walking home.
- a sausage is one capsule lying across two squares. The fill is the side facing the sky and the outline around it is the side lying on the ground. Pink is raw and brown is cooked, so is raw all over, is cooked underneath and still raw on top, and is done. Every sausage has to be that last one before the puzzle is solved.
Hovering a square says in words what is on it, which is the quickest way to check which side of a sausage is cooked.
Controls
The arrow keys move you, or use the arrows under the board. Z is for undo and R is for reset.
The Boards
The boards are organized into groups. Stephen's is the opening levels of the real game. Penguin's is mine, and each of those is named with a random word.
The reason why there aren't more of Stephen's boards is that I'm stuck at the tower level in the real game, and I haven't unlocked any more boards. also, coding up a new mechanic in my solver is going to be annoying, so I probably wouldn't do it anyway.
Every group is listed easiest first, going by how many moves the board takes to solve. That is a rough way to measure a puzzle — a short solution can be far harder to see than a long one.
Weird Mechanics
There are a couple of weird mechanics. To be clear, all of the mechanics follow the original game, it's just that it's more obvious what's going on in the original game because it has animations.
One weird mechanic is stepping onto a grill. Standing on a grill isn't allowed, so if you step on one, the roller will immediately jump back. This isn't animated on this website... only the final position is shown. So it can be a little weird to figure out what happened.
Another nonobvious mechanic is turning into a blocked square. When turning, you need two squares to clear: first the diagonal square and then the final square where the fork ends up. Sometimes, a sausage is in the diagonal square and gets pushed, but the final square is blocked. So the final position looks like the sausage was pushed even though the fork didn't move.
Boulders, and Sticking the Fork in a Sausage
Walking forward into a sausage normally pushes it along. If the sausage has nowhere to go, though — a boulder right behind it, say — the fork goes into the sausage instead of stopping, and the sausage is now stuck on the fork. You can see it happen because the ψ ends up drawn on top of a sausage half instead of on bare ground. It only happens on a step forward. Turning your fork into a jammed sausage never sticks it.
Two things are different while a sausage is on the fork. You can't turn: every arrow key walks you one square, with the roller, the fork and the whole sausage moving together as one piece. And that sausage slides rather than rolling, so the side lying on the ground stays on the ground. It still cooks if you drag it across a grill, and it still burns if that side was already cooked, but there is no way to turn it over while it is on the fork.
To pull the fork out, back up — the arrow opposite the way you are facing — with the sausage caught on something. The half on the fork always follows you into the square you have just left, so the catch has to be on the other half, and that only works for a sausage lying across the fork rather than along it. Back away, and if a boulder blocks that free half, the fork slides out and the sausage stays where it is. Another sausage with nowhere to go will catch it just as well, but a boulder is the usual thing.
A sausage speared end on, lying along the fork, never comes off. Both of its halves trail into squares you have just left, so there is nothing they can ever catch on, and you carry it around — unable to turn — for the rest of the run. Undo is the only way out of that one.
Solved Boards
A board you solve turns green on the launcher. That is remembered by your browser alone, so it does not follow you to another computer, and clearing your browsing data clears it too.
The button below forgets the lot. This can't be undone — every board goes back to white, and the next one you solve starts the list again.
The Solver
To generate and solve the boards, I used the A* search algorithm, coded in Rust.
Why?
I'm a big fan of the original Stephen's Sausage Roll. But unfortunately I'm not very good at it. I wanted to play more of this type of puzzle, but with a lot of easy levels. So I made my own. I think I was mildly successful at it so far. I'm finding it hard to make a medium difficulty puzzle. It's pretty easy to make an easy puzzle, and easy to make a ridiculously hard puzzle, but tough to make something in between. I'm working on it...
It's also hard to make a "good" puzzle. Just because a puzzle is hard, doesn't make it "good". Stephen's hand-crafted puzzles all explore a unique technique to solve a puzzle. The puzzles I make currently are created using a lot of randomness. So many interesting solving techniques will just never be found this way. For example, see Stephen's Twisty Farm puzzle. That "ladder" pattern will never happen by placing down boulders randomly. I'm trying to think of ways to expand the creativity needed to solve these puzzles.