Weeks 165-166-167: Pac-Bois!

Three busy weeks!

These three weeks, I finished Pac-Bois! And then started a new project with Eliott!


The first week, I kept on working a little on my new voxel tech, but mostly made a lot of cake models!

The pastries you’ll find in the game include the strawberry cake of course, but also chocolate cake, donuts, waffles, croissants, macarons, dorayakis, and more!

Each model is a superposition of sprite layers which is programatically turned into voxel data. This is the final sheet for all the pastries:


I can’t lie, I had a very nice time making those models. There’s something extremely satisfying about pixeling the pastry layers and then seeing it take volume, with the lighting system, and also the palette system giving it different colors!

In fact, I got somewhat carried away and put off making the actual game for a while there… But I did get to it in the end!


In the last Weekly Recap I wrote about Simulsim and how I was going to use it for this project. Simulsim being an entity-based multiplayer library, I thought it would be perfect for this project which is largely entity-based as well. What I didn’t think about was that my game would also be largely based on physics.

Physics is pretty difficult to handle in multiplayer games, especially when the different players affect the same objects. This kind of thing generally calls for very specific solutions depending on the intended on-screen result. The issue is that Simulsim mostly does the entity synchronisation and local updating for you. This didn’t leave me enough control to do what I wanted.

So in the end I went back to share.lua, which is much lower-level, since it only lets you exchange data between server and clients, in a nice, organized way.

And indeed the way I did my entity synchronisation is… pretty unorthodox. They’re not even synchronized that much. On every clients, all entities except the player entity are pushed towards their server position, and the homebrewed physics code takes care of the rest. So objects can actually have pretty different positions from one client to the next, but with the game being as messy as it is anyway, it turns out to not be so big of an issue!


So let’s talk about the game! Each player controls a Pac-Boi, which bounces around, following the player’s mouse. There are no other controls to the game. (except the mouse click for browsing the settings I guess)

Pastries fall from the sky, and bounce around on the floor also. You want to direct your Pac-Boi towards those pastries so that it eats them. With every pastry you eat, your Pac-Boi becomes a little larger.

When you are larger than any other Pac-Boi in the game, you can go and try to eat them! When you do eat them, you will get a point, and then you will throw up that Pac-Boi you ate, but also all the pastries you ate! Your Pac-Boi is now small again and you better eat some pastries again if you don’t want to get eaten yourself.

And that is the whole game! It is a deliberately simple concept, with no power-ups or anything like that. The game is most fun with at least three players. And I think it works really well!


Of course, part of the intention to have such a simple concept was also to be able to work a lot on details and things that are not really essential to the game.

And so I made sure that every interaction in the game was timed correctly to be the most satisfying it could be. I also added particles, screenshake, and parallax, even though the whole game fits in the screen!

I also took some time to make some nice sound effects! I recorded myself saying the Japanese pronunciation of the game’s title and then modified the recording to clean it up and give it a higher pitch, then put that on the game load-up. The eating sound is also a modified recording of me going “CRUNCH”. And I made a very short soundtrack loop for the game!

And I made a nice settings panel, much like with Apples, this time with the game’s title art, and also a “reset” vote button, where players can decide to reset the scores. (uninamously only)

I’m super happy with how the game turned out in the end! I’m really glad I went with such a simple concept and got to work a ton on making the game shine.

There hasn’t been a public announcement yet, but the finished game is already available to play on Castle! But please try to play it with other people, it’s a lot more fun!

Finally, Eliott and I started working together on a new project for Castle!

I will tell you a lot more about it next week, but for now just know that there will be a lot of games.

It should be a fun project! (again, more next week! 👀)


And that is it for those three weeks! They have been very busy but I’m really happy with what I made! And I can’t wait to share more of the new project with you!

As usual I want to thank my super generous Patreon supporters! They’re just the best! Here are the names of all the 3$+ supporters! (your names are also in the credits of Pac-Bois!)

★Joseph White, ★Spaceling, rotatetranslate, Anne Le Clech, LadyLeia, bbsamurai, HJS, Paul Nguyen, Dan Lewis, Dan Rees-Jones, Reza Esmaili, Joel Jorgensen, Marty Kovach, Flo Devaux, Thomas Wright, HERVAN, berkfrei, Tim and Alexandra Swast, Jearl, Dan Fries, Michael Leonardi, Johnathan Roatch, Raphael Gaschignard, Eiyeron, Sam Loeschen, Andrew Reitano, amy, Cole Smith, Andrea D’Amico, Simon Stålhandske, yunowadidis-musik, slono, Max Cahill, hushcoil, Gruber, Pierre B., Sean S. LeBlanc, Andrew Reist, Paul Nicholas, vaporstack, Jakub Wasilewski


This new week I’m working with Eliott on our new project! There is a lot of groundwork to do and so we hope we can take care of all/most of it this week!

Have a very nice week!

Take care!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

%d bloggers like this: