New Game: Sushi Boats

“Irrashaimase!” is a greeting you might hear upon entering a Japanese store or restaurant. It is a phrase to welcome or entice you to come in. I heard it while going out for sushi with friends once. The staff shout it out every time a customer entered, and it stuck with me.

This game asks you to serve customers via sushi boats moving around a track. A set of tiles defines the conveyor loop. Items on the conveyor belt move autonomously around the loop at a fixed pace.

Ingredient tiles attach to the loop and let you place items on the plates as they pass by. Customer tiles are also attached to the loop and request a specific set of ingredients.

You must construct a plate of ingredients that match a customer’s order. Satisfy a customer and they will eat the food on the plate, you will score a point, and the customer will order something new.

Beware as customers won’t wait forever! They lose impatience over time and will leave if their order isn’t fulfilled quickly enough.

That’s the plan anyway! I started this project recently and quickly learned that this conveyor belt thing is kind of hard to pull off.

I finally got a test conveyor working tonight so felt it might be safe enough to announce the project. This gif shows a loop of eight tiles, with three plates moving around the path in somewhat lock-step.


That’s all there is now. I haven’t added ingredients or customers yet. The repo is below if you’d like to take a look. After programming your tiles, create a loop where every tile has exactly two neighbors. Then double click a tile and it will verify the loop before turning them into the conveyor belt.


Fun Idea. But I think the ingredients are somewhat limited to colors, that can be told appart.

Also just something I had in mind when I read the name:
Irashaimase is a very polite form of welcome. (The way japanese writing works and the turning into roman letters you would only write one r.)
I thought that “Itadakimasu” (u is silent) would fit better. It’s a phrase that japanese people say before eating. It doesn’t really have a proper translation and in anime or so it’s often translated as “thank you for the meal” while they don’t really thank anyone in particular.
(Also fun thing: Once heard there is a fun way to remember it, as it sounds a lot like “eat a duck and mouse”)
But I get if you like the name because of your memory. It’s just my thoughts.

Nice idea. I wonder if using datagrams for this would not simplify things. Basically, every Blink has a “token” that would represent what it has (say an empty plate or some food). Each plate would always pass this token “downstream” and because they would all do the same, you would potentially gte the same effect.

Using my custom Blinklib makes it not even require any type of synchronization as you can use isDatagramPendingOnFace() to know if the downstream Blink picked up what has been passed to it before trying to send something else. This would also work to synchronize all the passing among the blinks due to an emergent behavior.

But, alas, this is all in theory. I did not test any of this.

You know, Schneeleopard, you’re right. I shouldn’t be using phrases from other cultures of which I have an incomplete knowledge. I changed the title to just “Sushi Boats” and deleted the old repo.

[Edit] And the color thing is high on my list of issues to address.

1 Like

I just got the ingredient tiles mostly working. After programming, double clicking a single tile (no neighbors) will turn it into an ingredient tile. Attach this to the loop after you’ve created it and it will assign itself one of the pre-defined ingredients. Then as plates pass by you can click the ingredient tile to transfer it to the plate.


My next item will be to allow rotating the plate by clicking it. That way you can place the ingredients on the desired faces.

One concern is how fragile the game is with sleep/wake. The tiles will usually go haywire when woken up. I hope I can make it more robust.

Admittedly this is my favorite thing to see overcome. Remember that animations, color gradients, shapes, directionality offer a shocking amount of differentiation. Using time as another dimension for display objects and giving them character is a fun exercise unto itself. In fact, this exercise for the Move38 Summer Interns lead to Crownfall :slight_smile:

Diffrent Pattern an color combinations can fix displaying diffrent things, but here are is also the problem to fit multiple ingredients on one plate, wich limits the possibilitys even more, but I like the puzzling thing, when there are ingredients that have two or three faces and you have to rotate the plate to fit the things

1 Like

Rotating plates on the conveyor belt is in. I also got customers, their orders, and matching them with the plates as they go by. :+1:

Video! There are two ingredients along the conveyor on the top right - red and pink. A single customer is on the bottom right. I add the two ingredients to the plate to match the order. Once the order reaches the customer, the plate is wiped clean and the customer chooses a new random order. You’ll notice that the rotation doesn’t have to be the same to match the customer.

It still has tons of bugs and is missing animations, polish, and quality-of-life features like resetting the game or manually wiping a plate in case you make a mistake.

And to be honest, I’m not convinced this will be fun :man_shrugging: :laughing:

But the core loop is there so I might as well see if I can polish it a bit more.