Gamedev JS 2025: Hold Your Noodles...And Your Meatballs & Brutalist Mandelbox

April-May 2025




Links


- Play Hold Your Noodles... And Your Meatballs on Itch.

- Watch Brutalist Mandelbox shader on my repo.

- See the entry's ranking on Itch.

- Read the source code on Github.





Making-of

Hey, this won't be a detailed making-of as usual, because I actually competed in this jam with very, very little free time.

The theme of the jam was BALANCE, and there were extra challenges involving Open source, Phaser, Vibe coding, Noodles and WebGL shaders.

I decided to take all the challenges at once, and do a mini-game about balancing a plate of noodles, vibe-coded with Phaser.

For the shader contest (which is separate from the game entry), I released an old dream of mine: a Mandelbox flythrough.



The Game

So, I have about 10 hours to create a game, about one hour per day for 10 days. I need to be efficient, and do something simple, but memorable and a bit fun.

The theme balance and the challenge noodles gave me the idea to balance a plate of noodles on one hand, for as long as possible.

Since vibe-coding and Phaser were also part of the challenges, I decided to embrace them all and not code a single line of my game by hand.

I installed Github Copilot, made it create a Phaser project with Matter.js (for the 2D physics), then proceeded to send detailed prompts explaining exactly what I wanted to happen in my game: from the title screen, to clicks, keyboard controls, UI, display, physics, shapes (bowl, noodles and meatballs), gravity, timing, score, death, retry, textures, fonts, music, responsive canvas and other little details here and there...

Overall, about 40 prompts were necessary to produce the final game, and one hour of manual work on Paint was necessary to create all the images.

Fine-tuning the shape of the plate (bowl) and how noodles and meatballs shall behave when falling in it is what took me the most time, and shall I say, more time than necessary, because Copilot proved to be quite uncooperative when it came to make the bowl controllable with the arrow keys while new objects fell from the sky and had to collide with it in a natural way.

Anyway, after many attempts and adjustments, I could release my entry on time!

In the videos below, you can see what my prototype looked (and feeled) like when it was only comprised of a flat plate and falling cubes, before I enhanced the shapes and visuals in the last days of the development.

Falling cubes, broken physics:

Unbroken Physics:

Properly shaped bowl and noodles, early graphics:

Final game:

My feedback on this experiment is that Phaser is nice, Matter.js is too weird (especially with textured shapes), and vibe-coding is only suitable for small games like this. It's far from perfect, and wouldn't really help me on a complete js13kgames entry for example.

Though, in the current context, vibe-coding prevented me from learning how Phaser works, and from writing code myself, which I must admit, is already an accomplishment.

We'll see next year(s) if it gets even better.



The Shader

The shader competition was hosted by v-systems, separately from GamedevJS, and had to be minted as NFTs.

Their website was broken for the first two weeks, but I joined their Telegram channel and had them fix it.

I spent the last days of the jam working on my Mandelbox flythrough shader, and submitted it along with the following explanations:

I love WebGL shaders and minimalism.
A few years ago, I developed a small Shadertoy clone and a raymarching algorithm able to display 3D shapes in real time using signed distance functions, in very few bytes of code.
A video of these experiments is available here.
Once that was done, I had one big challenge left: to create my own Mandelbox renderer, a 3D shape inspired by the Mandelbrot set and whose formula is defined on this Wikipedia page.
This shader hackathon was the perfect occasion to try it.
I created a blank HTML file containing a WebGL canvas, a little CSS setup to make the page responsive, and a "script" block, where I inserted my mini WebGL setup (1.6kb), then started writing the fragment shader, starting with "map", the Mandelbox distance function (0.4 kb).
map is fed to my small raymarcher algorithm, implemented in MainImage (1.1kb).
This code displays a fixed, white, unshaded mandelbox on screen.
It's a nice start, but not good enough.
To enhance it, I set the background color to orange, then computed the color of each pixel of the box in regard to its normal direction (in which direction it reflects light, using the "n" function, 0.2kb).
This gives the box a greyscale coloring which goes well with the tracks I wanted to compete in (orange, black and white for the track "V-systems brand colors" and a concrete building appearance for the track "real world assets").
Finally, in order to animate the shader, I found the coordinates of a straight line that goes through the box without touching any walls (X = -0.4400540540540543, Y = 0.11305105105105107), and made the virtual camera travel on this line, backwards.
I added two points on the line (z = 15.8 and z = 10) where the camera speeds up a little (to avoid making the animation seem too long), and a final point (Z = 0.5) where the camera stops, showing the entire box in all its glory.
The end :)
PS: A fullscreen version of my shader is available here and its source code is HERE.

My NFTs are available HERE, I guess?

Working on this shader was fun, using the v-systems early platform wasn't easy, but we managed to do something!



Feedbacks

Parker: Banger song choice! The noodles and meatballs were also just slippery enough to make this difficult. I think a leaderboard could have added a lot to this. Some more shapes and a variety of noodles could also make the balancing harder. Nice work!

DerBenniBanni: Interesting choice of music, Mozarts "Rondo alla Turca"mixed with italian food to balance in a chinese ramen pot. The gameplay is simple, but somehow pretty rewarding. I played it almost a dozen times, straight in a row :-) Really nice for a 10 hour vibe-coded game!

MishManners: Love the music - very fitting. Great job, and I love the fact (although it's also super annoying) that the noodles can fall out of the bowl once you have them in there (good implementation of physics). Would be good to be able to restart with spacebar or similar, since using the keyboard for controls so it'd be good for the player not to have to switch back to mouse. Well done on your game.

Nihdao: Funny concept and game, congratz!

aksommerville: I like this a lot, it’s as elegant as it is silly. Nice and simple, and it makes you want to try again and again. One thing I’d change: Make it restartable via keyboard so one doesn’t have to reach for the mouse between rounds. Oh and also: Mozart? No, no, no! A spaghetti-themed game needs an Italian composer! :D Run To The Bus Stop: Very straightforward and funny game! xD

videojams: Nice concept and impressive you went for so many challenges. GJ :)

PGad: Pretty simple and intuitive game! I loved how the meatballs are physics objects :D It would help if the player had 'lives' and the game did not get over just for one miss.

KorHosik: A simple but fun game! I love the "drawing on Paint" effect :D

JADU: The game is good! It would look even better if the objects behaved more like they do in real life. Great job overall!

Demomaker: It's a great jam game! Simple and easy to get into and follows the theme of the jam and related very well

FishoJr: I would have loved it a lot more if the noodles were soft and cooked instead of hard wiggly sticks

slimclic: Simples but fun! Very nice!



Let's plays

You can see my game played in:

- MishManners' video

- Jacklehamster's video



Results

Coming soon



See you next time!

Xem